On 09/14/2012 07:41 AM, Jeff Cody wrote: > Add bdrv_find_overlay(), and bdrv_drop_intermediate(). > > bdrv_find_overlay(): given 'bs' and the active (topmost) BDS of an image > chain, > find the image that is the immediate top of 'bs' > > bdrv_drop_intermediate(): > Given 3 BDS (active, top, base), delete images above
s/delete/drop/ > base up to and including top, and set base to be the > parent of top's child node. set base to be the backing file of top's overlay node. > > E.g., this converts: > > bottom <- base <- intermediate <- top <- active > > to > > bottom <- base <- active > > +++ b/block.c > @@ -1713,6 +1713,156 @@ int bdrv_change_backing_file(BlockDriverState *bs, > return ret; > } > > +/* > + * Finds the image layer immediately to the 'top' of bs. Or even: Finds the image layer in the chain that has 'bs' as its backing file. > +/* > + * Deletes images above 'base' up to and including 'top', and sets the image s/Deletes/Drops/ > +++ b/block.h > @@ -209,7 +209,10 @@ int bdrv_commit_all(void); > int bdrv_change_backing_file(BlockDriverState *bs, > const char *backing_file, const char *backing_fmt); > void bdrv_register(BlockDriver *bdrv); > - > +int bdrv_drop_intermediate(BlockDriverState *active, BlockDriverState *top, > + BlockDriverState *base); > +BlockDriverState *bdrv_find_overlay(BlockDriverState *active, > + BlockDriverState *bs); > > typedef struct BdrvCheckResult { Changed from two blank lines to one before the typedef; was that intentional? -- Eric Blake ebl...@redhat.com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature