[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 5/6] block-backend: fix edge case in bdrv_next_cleanup() where BDS
From: |
Kevin Wolf |
Subject: |
[PULL 5/6] block-backend: fix edge case in bdrv_next_cleanup() where BDS associated to BB changes |
Date: |
Tue, 26 Mar 2024 14:54:39 +0100 |
From: Fiona Ebner <f.ebner@proxmox.com>
Same rationale as for commit "block-backend: fix edge case in
bdrv_next() where BDS associated to BB changes". The block graph might
change between the bdrv_next() call and the bdrv_next_cleanup() call,
so it could be that the associated BDS is not the same that was
referenced previously anymore. Instead, rely on bdrv_next() to set
it->bs to the BDS it referenced and unreference that one in any case.
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
Message-ID: <20240322095009.346989-4-f.ebner@proxmox.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
block/block-backend.c | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/block/block-backend.c b/block/block-backend.c
index 28af1eb17a..db6f9b92a3 100644
--- a/block/block-backend.c
+++ b/block/block-backend.c
@@ -663,13 +663,10 @@ void bdrv_next_cleanup(BdrvNextIterator *it)
/* Must be called from the main loop */
assert(qemu_get_current_aio_context() == qemu_get_aio_context());
- if (it->phase == BDRV_NEXT_BACKEND_ROOTS) {
- if (it->blk) {
- bdrv_unref(blk_bs(it->blk));
- blk_unref(it->blk);
- }
- } else {
- bdrv_unref(it->bs);
+ bdrv_unref(it->bs);
+
+ if (it->phase == BDRV_NEXT_BACKEND_ROOTS && it->blk) {
+ blk_unref(it->blk);
}
bdrv_next_reset(it);
--
2.44.0
- [PULL 0/6] Block layer patches, Kevin Wolf, 2024/03/26
- [PULL 2/6] vdpa-dev: Fix initialisation order to restore VDUSE compatibility, Kevin Wolf, 2024/03/26
- [PULL 3/6] block/io: accept NULL qiov in bdrv_pad_request, Kevin Wolf, 2024/03/26
- [PULL 4/6] block-backend: fix edge case in bdrv_next() where BDS associated to BB changes, Kevin Wolf, 2024/03/26
- [PULL 1/6] tests/qemu-iotests: Test 157 and 227 require virtio-blk, Kevin Wolf, 2024/03/26
- [PULL 5/6] block-backend: fix edge case in bdrv_next_cleanup() where BDS associated to BB changes,
Kevin Wolf <=
- [PULL 6/6] iotests: add test for stream job with an unaligned prefetch read, Kevin Wolf, 2024/03/26
- Re: [PULL 0/6] Block layer patches, Peter Maydell, 2024/03/26