On 05/30/2014 09:35 AM, Jeff Cody wrote: > Now that node-names can reference an individual BlockDriverState without > needing to navigate downwards from the 'device' level, in order to find > the top-most image (active layer) we need a pointer to the overlay of a > BDS. > > This will allow QMP commands to reference an image solely by its > node-name, without also needing to pass in the corresponding 'device' > string. > > This also adds a helper function to set the overlay pointer that is, for > now, trivial. But since we recently moved away from open coding > bs->backing_hd assignment, we should probably also refrain from setting > bs->overlay directly. > > Signed-off-by: Jeff Cody <jc...@redhat.com> > --- > block.c | 14 ++++++++++++++ > include/block/block.h | 1 + > include/block/block_int.h | 1 + > 3 files changed, 16 insertions(+)
Question - can one bds ever belong to more than one chain? That is, could I create a guest that uses: / disk1 base < \ disk2 for two disks in parallel, but where I use blockdev referencing to pass in a single readonly copy of base to both chains rather than the default of opening base twice? If so, then what does the overlay field get set to for base: disk1 or disk2? On the other hand, if base truly is shared, it's non-deterministic which device is meant when using just the node-name for the shared base bds. So maybe the user gets what they deserved. Or maybe it argues that doing a bds lookup for a bds that has more than one device chain returns a failure unless the device chain was passed as well (but that may mean reference counting or even tracking an array of overlays). But if a bds can be in at most one chain at a time, then your patch makes sense. Reviewed-by: Eric Blake <ebl...@redhat.com> -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature