Message ID | 20200625152215.941773-25-mreitz@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | block: Deal with filters | expand |
On 25.06.2020 18:21, 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 <mreitz@redhat.com> > --- > block.c | 16 +++------------- > 1 file changed, 3 insertions(+), 13 deletions(-) > > diff --git a/block.c b/block.c > index 7c827fefa0..1c71ecab7c 100644 > --- a/block.c > +++ b/block.c > @@ -5562,17 +5562,7 @@ void bdrv_debug_event(BlockDriverState *bs, BlkdebugEvent event) > static BlockDriverState *bdrv_find_debug_node(BlockDriverState *bs) > { > while (bs && bs->drv && !bs->drv->bdrv_debug_breakpoint) { > - if (bs->file) { > - bs = bs->file->bs; > - continue; > - } > - > - if (bs->drv->is_filter && bs->backing) { > - bs = bs->backing->bs; > - continue; > - } > - > - break; > + bs = bdrv_primary_bs(bs); > } > > if (bs && bs->drv && bs->drv->bdrv_debug_breakpoint) { > @@ -5607,7 +5597,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) { > @@ -5620,7 +5610,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) { Reviewed-by: Andrey Shinkevich <andrey.shinkevich@virtuozzo.com>
diff --git a/block.c b/block.c index 7c827fefa0..1c71ecab7c 100644 --- a/block.c +++ b/block.c @@ -5562,17 +5562,7 @@ void bdrv_debug_event(BlockDriverState *bs, BlkdebugEvent event) static BlockDriverState *bdrv_find_debug_node(BlockDriverState *bs) { while (bs && bs->drv && !bs->drv->bdrv_debug_breakpoint) { - if (bs->file) { - bs = bs->file->bs; - continue; - } - - if (bs->drv->is_filter && bs->backing) { - bs = bs->backing->bs; - continue; - } - - break; + bs = bdrv_primary_bs(bs); } if (bs && bs->drv && bs->drv->bdrv_debug_breakpoint) { @@ -5607,7 +5597,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) { @@ -5620,7 +5610,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) {
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 <mreitz@redhat.com> --- block.c | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-)