[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 02/10] block: bdrv_set_backing_hd(): use drained section
From: |
Kevin Wolf |
Subject: |
[PULL 02/10] block: bdrv_set_backing_hd(): use drained section |
Date: |
Tue, 1 Feb 2022 16:21:00 +0100 |
From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Graph modifications should be done in drained section. stream_prepare()
handler of block stream job call bdrv_set_backing_hd() without using
drained section and it's theoretically possible that some IO request
will interleave with graph modification and will use outdated pointers
to removed block nodes.
Some other callers use bdrv_set_backing_hd() not caring about drained
sections too. So it seems good to make a drained section exactly in
bdrv_set_backing_hd().
Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
Message-Id: <20220124173741.2984056-1-vsementsov@virtuozzo.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
block.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/block.c b/block.c
index 7b3ce415d8..b54d59d1fa 100644
--- a/block.c
+++ b/block.c
@@ -3341,6 +3341,8 @@ int bdrv_set_backing_hd(BlockDriverState *bs,
BlockDriverState *backing_hd,
int ret;
Transaction *tran = tran_new();
+ bdrv_drained_begin(bs);
+
ret = bdrv_set_backing_noperm(bs, backing_hd, tran, errp);
if (ret < 0) {
goto out;
@@ -3350,6 +3352,8 @@ int bdrv_set_backing_hd(BlockDriverState *bs,
BlockDriverState *backing_hd,
out:
tran_finalize(tran, ret);
+ bdrv_drained_end(bs);
+
return ret;
}
--
2.31.1
- [PULL 00/10] Block layer patches, Kevin Wolf, 2022/02/01
- [PULL 02/10] block: bdrv_set_backing_hd(): use drained section,
Kevin Wolf <=
- [PULL 03/10] block/export: Fix vhost-user-blk shutdown with requests in flight, Kevin Wolf, 2022/02/01
- [PULL 04/10] block/export/fuse: Rearrange if-else-if ladder in fuse_fallocate(), Kevin Wolf, 2022/02/01
- [PULL 05/10] block/export/fuse: Fix build failure on FreeBSD, Kevin Wolf, 2022/02/01
- [PULL 07/10] qsd: Document fuse's allow-other option, Kevin Wolf, 2022/02/01
- [PULL 08/10] qemu-img: Unify [-b [-F]] documentation, Kevin Wolf, 2022/02/01
- [PULL 01/10] qemu-storage-daemon: Fix typo in vhost-user-blk help, Kevin Wolf, 2022/02/01
- [PULL 10/10] block/rbd: workaround for ceph issue #53784, Kevin Wolf, 2022/02/01
- [PULL 09/10] block/rbd: fix handling of holes in .bdrv_co_block_status, Kevin Wolf, 2022/02/01
- [PULL 06/10] block.h: remove outdated comment, Kevin Wolf, 2022/02/01
- Re: [PULL 00/10] Block layer patches, Peter Maydell, 2022/02/02