[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH v6 12/42] block: Use bdrv_filtered_rw* where obvious
From: |
Max Reitz |
Subject: |
[Qemu-block] [PATCH v6 12/42] block: Use bdrv_filtered_rw* where obvious |
Date: |
Fri, 9 Aug 2019 18:13:37 +0200 |
Places that use patterns like
if (bs->drv->is_filter && bs->file) {
... something about bs->file->bs ...
}
should be
BlockDriverState *filtered = bdrv_filtered_rw_bs(bs);
if (filtered) {
... something about @filtered ...
}
instead.
Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Vladimir Sementsov-Ogievskiy <address@hidden>
---
block.c | 23 +++++++++++++++--------
block/io.c | 5 +++--
2 files changed, 18 insertions(+), 10 deletions(-)
diff --git a/block.c b/block.c
index 029c809a8e..86b84bea21 100644
--- a/block.c
+++ b/block.c
@@ -556,11 +556,12 @@ int bdrv_create_file(const char *filename, QemuOpts
*opts, Error **errp)
int bdrv_probe_blocksizes(BlockDriverState *bs, BlockSizes *bsz)
{
BlockDriver *drv = bs->drv;
+ BlockDriverState *filtered = bdrv_filtered_rw_bs(bs);
if (drv && drv->bdrv_probe_blocksizes) {
return drv->bdrv_probe_blocksizes(bs, bsz);
- } else if (drv && drv->is_filter && bs->file) {
- return bdrv_probe_blocksizes(bs->file->bs, bsz);
+ } else if (filtered) {
+ return bdrv_probe_blocksizes(filtered, bsz);
}
return -ENOTSUP;
@@ -575,11 +576,12 @@ int bdrv_probe_blocksizes(BlockDriverState *bs,
BlockSizes *bsz)
int bdrv_probe_geometry(BlockDriverState *bs, HDGeometry *geo)
{
BlockDriver *drv = bs->drv;
+ BlockDriverState *filtered = bdrv_filtered_rw_bs(bs);
if (drv && drv->bdrv_probe_geometry) {
return drv->bdrv_probe_geometry(bs, geo);
- } else if (drv && drv->is_filter && bs->file) {
- return bdrv_probe_geometry(bs->file->bs, geo);
+ } else if (filtered) {
+ return bdrv_probe_geometry(filtered, geo);
}
return -ENOTSUP;
@@ -5084,6 +5086,8 @@ int bdrv_has_zero_init_1(BlockDriverState *bs)
int bdrv_has_zero_init(BlockDriverState *bs)
{
+ BlockDriverState *filtered;
+
if (!bs->drv) {
return 0;
}
@@ -5096,8 +5100,10 @@ int bdrv_has_zero_init(BlockDriverState *bs)
if (bs->drv->bdrv_has_zero_init) {
return bs->drv->bdrv_has_zero_init(bs);
}
- if (bs->file && bs->drv->is_filter) {
- return bdrv_has_zero_init(bs->file->bs);
+
+ filtered = bdrv_filtered_rw_bs(bs);
+ if (filtered) {
+ return bdrv_has_zero_init(filtered);
}
/* safe default */
@@ -5142,8 +5148,9 @@ int bdrv_get_info(BlockDriverState *bs, BlockDriverInfo
*bdi)
return -ENOMEDIUM;
}
if (!drv->bdrv_get_info) {
- if (bs->file && drv->is_filter) {
- return bdrv_get_info(bs->file->bs, bdi);
+ BlockDriverState *filtered = bdrv_filtered_rw_bs(bs);
+ if (filtered) {
+ return bdrv_get_info(filtered, bdi);
}
return -ENOTSUP;
}
diff --git a/block/io.c b/block/io.c
index 06305c6ea6..4d6cf4b3c2 100644
--- a/block/io.c
+++ b/block/io.c
@@ -3186,8 +3186,9 @@ int coroutine_fn bdrv_co_truncate(BdrvChild *child,
int64_t offset,
}
if (!drv->bdrv_co_truncate) {
- if (bs->file && drv->is_filter) {
- ret = bdrv_co_truncate(bs->file, offset, prealloc, errp);
+ BdrvChild *filtered = bdrv_filtered_rw_child(bs);
+ if (filtered) {
+ ret = bdrv_co_truncate(filtered, offset, prealloc, errp);
goto out;
}
error_setg(errp, "Image format driver does not support resize");
--
2.21.0
- [Qemu-block] [PATCH v6 05/42] block: Add chain helper functions, (continued)
- [Qemu-block] [PATCH v6 05/42] block: Add chain helper functions, Max Reitz, 2019/08/09
- [Qemu-block] [PATCH v6 07/42] block: *filtered_cow_child() for *has_zero_init(), Max Reitz, 2019/08/09
- [Qemu-block] [PATCH v6 08/42] block: bdrv_set_backing_hd() is about bs->backing, Max Reitz, 2019/08/09
- [Qemu-block] [PATCH v6 09/42] block: Include filters when freezing backing chain, Max Reitz, 2019/08/09
- [Qemu-block] [PATCH v6 10/42] block: Drop bdrv_is_encrypted(), Max Reitz, 2019/08/09
- [Qemu-block] [PATCH v6 11/42] block: Add bdrv_supports_compressed_writes(), Max Reitz, 2019/08/09
- [Qemu-block] [PATCH v6 12/42] block: Use bdrv_filtered_rw* where obvious,
Max Reitz <=
- [Qemu-block] [PATCH v6 13/42] block: Use CAFs in block status functions, Max Reitz, 2019/08/09
- [Qemu-block] [PATCH v6 14/42] block: Use CAFs when working with backing chains, Max Reitz, 2019/08/09
- [Qemu-block] [PATCH v6 15/42] block: Re-evaluate backing file handling in reopen, Max Reitz, 2019/08/09
- [Qemu-block] [PATCH v6 16/42] block: Flush all children in generic code, Max Reitz, 2019/08/09
- [Qemu-block] [PATCH v6 17/42] block: Use CAFs in bdrv_refresh_limits(), Max Reitz, 2019/08/09
- [Qemu-block] [PATCH v6 18/42] block: Use CAFs in bdrv_refresh_filename(), Max Reitz, 2019/08/09