13.06.2019 1:09, Max Reitz wrote: > When looking for a blkdebug node (which implements debug breakpoints), > use bdrv_primary_bs() to iterate through the graph, because that is > where a blkdebug node would be. > > Signed-off-by: Max Reitz <mre...@redhat.com>
Honestly, don't know why blkdebug is always searched in ->file sequence, but this patch obviously supports backing-based filters for blkdebug scenarios, which I need for my backup-top series (and have corresponding patch in it, which is not needed if this goes first) Reviewed-by: Vladimir Sementsov-Ogievskiy <vsement...@virtuozzo.com> > --- > block.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/block.c b/block.c > index 797bec0326..11b7ba8cf6 100644 > --- a/block.c > +++ b/block.c > @@ -5097,7 +5097,7 @@ int bdrv_debug_breakpoint(BlockDriverState *bs, const > char *event, > const char *tag) > { > while (bs && bs->drv && !bs->drv->bdrv_debug_breakpoint) { > - bs = bs->file ? bs->file->bs : NULL; > + bs = bdrv_primary_bs(bs); > } > > if (bs && bs->drv && bs->drv->bdrv_debug_breakpoint) { > @@ -5110,7 +5110,7 @@ int bdrv_debug_breakpoint(BlockDriverState *bs, const > char *event, > int bdrv_debug_remove_breakpoint(BlockDriverState *bs, const char *tag) > { > while (bs && bs->drv && !bs->drv->bdrv_debug_remove_breakpoint) { > - bs = bs->file ? bs->file->bs : NULL; > + bs = bdrv_primary_bs(bs); > } > > if (bs && bs->drv && bs->drv->bdrv_debug_remove_breakpoint) { > @@ -5123,7 +5123,7 @@ int bdrv_debug_remove_breakpoint(BlockDriverState *bs, > const char *tag) > int bdrv_debug_resume(BlockDriverState *bs, const char *tag) > { > while (bs && (!bs->drv || !bs->drv->bdrv_debug_resume)) { > - bs = bs->file ? bs->file->bs : NULL; > + bs = bdrv_primary_bs(bs); > } > > if (bs && bs->drv && bs->drv->bdrv_debug_resume) { > @@ -5136,7 +5136,7 @@ int bdrv_debug_resume(BlockDriverState *bs, const char > *tag) > bool bdrv_debug_is_suspended(BlockDriverState *bs, const char *tag) > { > while (bs && bs->drv && !bs->drv->bdrv_debug_is_suspended) { > - bs = bs->file ? bs->file->bs : NULL; > + bs = bdrv_primary_bs(bs); > } > > if (bs && bs->drv && bs->drv->bdrv_debug_is_suspended) { > -- Best regards, Vladimir