qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 03/11] block: Add overlay BDS pointer into th


From: Jeff Cody
Subject: Re: [Qemu-devel] [PATCH v2 03/11] block: Add overlay BDS pointer into the BlockDriverState struct
Date: Thu, 29 May 2014 17:36:51 -0400
User-agent: Mutt/1.5.21 (2010-09-15)

On Tue, May 27, 2014 at 09:57:19AM -0600, Eric Blake wrote:
> On 05/27/2014 08:28 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.
> > 
> > Signed-off-by: Jeff Cody <address@hidden>
> > ---
> >  block.c                   | 5 +++++
> >  include/block/block_int.h | 1 +
> >  2 files changed, 6 insertions(+)
> > 
> 
> Deceptively simple - good thing we already refactored all chain
> manipulations to go through bdrv_set_backing_hd().
>

Alas, it was too deceptive... it breaks in the bdrv_append() case.  An
example:

Existing chain:
[0 'base'] <--- [1 'sn1'] <--- [2 'sn2'] 


Perform a snapshot:
[0 'base'] <--- [1 'sn1'] <--- [3 'sn2'] <---- [2 'sn3']
                               ^^^^^^^^^
                               (new BDS)

[1] will have an overlay pointing to [2] still, skipping the newly
injected BDS.

When we perform bdrv_append(), we also need to update the overlay of
the active layer's backing_hd BDS.  Fortunately, this is just one
additional line (although I am also adding a helper, since we just got
rid of open coding bs->backing_hd, we should probably avoid doing the
same thing with bs->overlay)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]