[01:19:34] *** Quits: Shuhei (caf6fc61@gateway/web/freenode/ip.202.246.252.97) (Ping timeout: 260 seconds) [03:34:22] *** Quits: drv (daniel@oak.drv.nu) (Ping timeout: 245 seconds) [03:36:18] *** Joins: drv (daniel@oak.drv.nu) [03:36:19] *** ChanServ sets mode: +o drv [03:38:24] *** Quits: dlw (~Thunderbi@114.255.44.143) (Quit: dlw) [04:57:26] *** Quits: drv (daniel@oak.drv.nu) (Ping timeout: 255 seconds) [04:59:03] *** Joins: drv (daniel@oak.drv.nu) [04:59:04] *** ChanServ sets mode: +o drv [05:05:32] *** Quits: drv (daniel@oak.drv.nu) (Ping timeout: 255 seconds) [05:11:47] *** Joins: drv (daniel@oak.drv.nu) [05:11:47] *** ChanServ sets mode: +o drv [05:55:04] *** Quits: drv (daniel@oak.drv.nu) (Ping timeout: 265 seconds) [06:31:14] *** Quits: tomzawadzki (tomzawadzk@nat/intel/x-bdnblepmxzignktw) (Remote host closed the connection) [07:12:43] *** Joins: tomzawadzki (~tomzawadz@134.134.139.75) [07:41:57] *** Quits: tomzawadzki (~tomzawadz@134.134.139.75) (Ping timeout: 240 seconds) [09:16:42] *** Joins: drv (daniel@oak.drv.nu) [09:16:43] *** ChanServ sets mode: +o drv [09:34:59] *** Joins: travis-ci (~travis-ci@ec2-54-234-20-18.compute-1.amazonaws.com) [09:35:00] (spdk/master) nvme: make timeout function per process (Ziye Yang) [09:35:00] Diff URL: https://github.com/spdk/spdk/compare/ebf079362b28...31bf5d795e54 [09:35:00] *** Parts: travis-ci (~travis-ci@ec2-54-234-20-18.compute-1.amazonaws.com) () [09:39:50] *** Joins: mshirley (~mshirley@c-24-22-29-66.hsd1.or.comcast.net) [09:45:56] *** Joins: travis-ci (~travis-ci@ec2-54-91-135-84.compute-1.amazonaws.com) [09:45:57] (spdk/master) examples/fio_plugin: add SGL support for R/W commands (Changpeng Liu) [09:45:57] Diff URL: https://github.com/spdk/spdk/compare/31bf5d795e54...df159388ffa6 [09:45:57] *** Parts: travis-ci (~travis-ci@ec2-54-91-135-84.compute-1.amazonaws.com) () [09:51:27] *** Quits: mshirley (~mshirley@c-24-22-29-66.hsd1.or.comcast.net) (Ping timeout: 240 seconds) [10:01:22] *** Joins: mshirley (~mshirley@inet-hqmc06-o.oracle.com) [12:45:44] *** Quits: mshirley (~mshirley@inet-hqmc06-o.oracle.com) (Ping timeout: 260 seconds) [12:48:37] *** Joins: travis-ci (~travis-ci@ec2-54-234-20-18.compute-1.amazonaws.com) [12:48:38] (spdk/master) scripts/rpc.py: calculate num_blocks with floor division (Karol Latecki) [12:48:38] Diff URL: https://github.com/spdk/spdk/compare/df159388ffa6...c43dc1f1e3d9 [12:48:38] *** Parts: travis-ci (~travis-ci@ec2-54-234-20-18.compute-1.amazonaws.com) () [13:02:45] *** Joins: travis-ci (~travis-ci@ec2-54-166-41-144.compute-1.amazonaws.com) [13:02:46] (spdk/master) nvme: continue initialization even if NN=0 (Daniel Verkamp) [13:02:46] Diff URL: https://github.com/spdk/spdk/compare/c43dc1f1e3d9...453c804d1b71 [13:02:46] *** Parts: travis-ci (~travis-ci@ec2-54-166-41-144.compute-1.amazonaws.com) () [13:05:36] *** Joins: mshirley (~mshirley@inet-hqmc05-o.oracle.com) [13:07:23] jimharris: do you have any thoughts on the blobstore clone/snapshot patch? https://review.gerrithub.io/#/c/405025/ [13:07:32] this causes us to always open all blobs on startup, rather than only if there is an iter callback [13:08:02] but I think that's probably OK for now - if the public API looks good, I'm happy to merge this as-is now, and we can improve the performance later if it is a problem [13:08:08] we had talked about putting a flag in the superblock that gets written if any clone/snapshot has been created [13:08:29] so that we only iterate all blobs if the blobstore's ever done any snapshotting [13:08:51] i haven't looked at the patch yet - does it have such a flag/chec? [13:08:53] check? [13:09:24] don't think so [13:09:42] no - it always iterates every blob on start up [13:09:47] we probably need one for compatibility checks anyway, right? [13:10:19] we have those on the blob [13:10:28] oh, right, there's no blobstore-level feature bits yet [13:10:34] but we need something at the blobstore level to know whether we need to iterate all the blobs [13:18:54] *** Joins: travis-ci (~travis-ci@ec2-54-234-20-18.compute-1.amazonaws.com) [13:18:55] (spdk/master) Add strncpy to the list of banned functions (Ben Walker) [13:18:55] Diff URL: https://github.com/spdk/spdk/compare/453c804d1b71...bdfeddd3a385 [13:18:55] *** Parts: travis-ci (~travis-ci@ec2-54-234-20-18.compute-1.amazonaws.com) () [13:19:24] could we add this optimization later - to avoid iterating all blobs if there are no snapshots/clones? [13:19:41] we already write/rewrite the superblock for the dirty bit [13:21:11] it would be a bit messier to add it later - you'd actually need two bits - one for whether clones/snapshots exist, and another for whether the first bit is valid [13:23:07] currently both BlobFS and Lvol iterate through all the blobs anyways during initialization [13:24:00] I'm OK with optimizing it later [13:24:26] (if it even needs to be optimized - maybe all users end up wanting to iterate anyway) [13:28:27] i think i'd prefer this spdk_blob_get_children to have the caller pass the array - but if the caller doesn't pass an array that's big enough, what errno should it return? [13:29:03] hmm, yeah, that is a bit clunky [13:30:12] probably EINVAL is fine, but maybe we need a way to indicate the required size? [13:30:22] it can pass it in the *count output parameter [13:30:27] yeah, sounds good [13:31:00] he's already using EINVAL if the blob isn't a snapshot - but I don't think that's really necessary - just return 0 in that case [13:31:13] that is probably nicer anyway [13:31:28] conceptually, a blob that isn't a snapshot just has no clones [13:31:42] exactly [13:32:38] spdk_blob_get_clones instead of get_children? [13:33:02] that one sounds better to me - although I'm not sure about spdk_blob_get_snapshot instead of spdk_blob_get_parent [13:33:32] yeah, I think bwalker recommended children/parent, but I'm not sure either way [13:34:44] bwalker: what are your thoughts? or maybe get_parent_snapshot? [13:35:22] get_parent_snapshot sounds reasonable to me [13:35:50] yeah, get_parent_snapshot is good [13:36:04] what about spdk_blob_get_clones? this is what tomek had originally [13:36:12] instead of get_children [13:36:37] the terminology is not intuitive to me in general [13:36:41] for clones/snapshots [13:36:48] I think of clones as peers [13:37:00] i.e. find the other volumes that share the same base snapshot [13:37:19] but that's not what it's doing - it's finding volumes whose parent is the given snapshot [13:38:06] but given the interface for creating a clone (you pass it a snapshot), I could be convinced [13:38:11] that I just have to get used to the terms we're using [13:38:17] I think get_clones is probably ok [13:38:28] but get_parent_snapshot is definitely clearer [13:38:38] here's how VMware workstation defines it: https://www.vmware.com/support/ws55/doc/ws_clone_overview.html [13:38:42] seems similar to what we're doing [13:38:52] I hear what you're saying though bwalker [13:39:15] but how we're using "clones" here is in general how its done in other cases [13:40:07] hmm, the vmware docs seem to call it "clone" and "parent" [13:41:00] yeah - that's why I didn't care for "get_snapshot", I think "get_parent_snapshot" makes it more clear [13:41:26] yep, let's go with that one for sure [14:31:22] I posted some comments with the results of the naming discussion on the review [14:31:42] any comments on the later patch that adds blob_set_snapshot()? [14:31:50] I guess I understand what it's for now (convert an existing blob directly into a snapshot) [14:32:11] but it seems like that could also be accomplished by create snapshot + delete clone [14:32:57] not sure if there is an existing use case that this function accomodates or if it's just "we might want this someday" [14:42:44] i added a bunch of comments on it too [14:43:50] i'm not sure why we need set_snapshot [14:44:10] can't we just create a clone of any read-only blob? [14:44:38] and then we already disallow deleting that read-only blob if there are clones of it [14:45:14] yeah, I'm not sure it is really necessary [14:46:29] thanks for fixing those nvme qpair error messages - i meant to do that after that thread with charlie this week [14:46:48] yeah, I just noticed that after looking at the case he brought up [14:49:24] *** Joins: travis-ci (~travis-ci@ec2-54-234-20-18.compute-1.amazonaws.com) [14:49:25] (spdk/master) bdev: add new optional bdev i/f entry point (paul luse) [14:49:25] Diff URL: https://github.com/spdk/spdk/compare/bdfeddd3a385...a4a497d5b0f1 [14:49:25] *** Parts: travis-ci (~travis-ci@ec2-54-234-20-18.compute-1.amazonaws.com) () [14:49:37] I just pushed a fix for a very subtle bug in the io channel code [14:49:38] https://review.gerrithub.io/#/c/407602/ [14:49:55] that was ultimately what was preventing us from using an existing channel as the qos channel [15:46:28] *** Quits: mshirley (~mshirley@inet-hqmc05-o.oracle.com) (Remote host closed the connection) [15:55:21] *** Joins: mshirley (~mshirley@c-24-22-29-66.hsd1.or.comcast.net) [16:25:46] *** Joins: sbranden (483536e3@gateway/web/freenode/ip.72.53.54.227) [16:27:10] could you rerun my commit: https://review.gerrithub.io/#/c/407599/ The CI didn't launch on one of the test machines so indicated a timeout. [16:51:30] *** Quits: sbranden (483536e3@gateway/web/freenode/ip.72.53.54.227) (Quit: Page closed) [16:51:55] *** Joins: sbranden (483536e3@gateway/web/freenode/ip.72.53.54.227) [16:55:30] *** Quits: sbranden (483536e3@gateway/web/freenode/ip.72.53.54.227) (Client Quit) [17:02:57] *** Quits: mshirley (~mshirley@c-24-22-29-66.hsd1.or.comcast.net) (Ping timeout: 256 seconds) [17:08:38] *** Joins: mshirley (~mshirley@c-24-22-29-66.hsd1.or.comcast.net) [18:56:59] *** Quits: mshirley (~mshirley@c-24-22-29-66.hsd1.or.comcast.net) (Remote host closed the connection)