[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 06/11] blockdev: drain while unlocked in internal_snapshot_action
From: |
Fiona Ebner |
Subject: |
[PATCH 06/11] blockdev: drain while unlocked in internal_snapshot_action() |
Date: |
Thu, 8 May 2025 16:09:31 +0200 |
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
---
Could the bs associated to the device change because of polling
when draining? If yes, does that mean we need to drain all in the
beginning and not temporarily unlock?
blockdev.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/blockdev.c b/blockdev.c
index 1272b9a745..f2b4fdf1b3 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -1216,7 +1216,7 @@ static void
internal_snapshot_action(BlockdevSnapshotInternal *internal,
int ret1;
GLOBAL_STATE_CODE();
- GRAPH_RDLOCK_GUARD_MAINLOOP();
+ bdrv_graph_rdlock_main_loop();
tran_add(tran, &internal_snapshot_drv, state);
@@ -1225,14 +1225,18 @@ static void
internal_snapshot_action(BlockdevSnapshotInternal *internal,
bs = qmp_get_root_bs(device, errp);
if (!bs) {
+ bdrv_graph_rdunlock_main_loop();
return;
}
state->bs = bs;
+ bdrv_graph_rdunlock_main_loop();
/* Paired with .clean() */
bdrv_drained_begin(bs);
+ GRAPH_RDLOCK_GUARD_MAINLOOP();
+
if (bdrv_op_is_blocked(bs, BLOCK_OP_TYPE_INTERNAL_SNAPSHOT, errp)) {
return;
}
--
2.39.5
- Re: [PATCH 04/11] block: drain while unlocked in bdrv_reopen_parse_file_or_backing(), (continued)
- [PATCH 02/11] block: move drain outside of read-locked bdrv_reopen_queue_child(), Fiona Ebner, 2025/05/08
- [PATCH 01/11] block: remove outdated comments about AioContext locking, Fiona Ebner, 2025/05/08
- [PATCH 05/11] block: move drain outside of read-locked bdrv_inactivate_recurse(), Fiona Ebner, 2025/05/08
- [PATCH 11/11] iotests/graph-changes-while-io: add test case with removal of lower snapshot, Fiona Ebner, 2025/05/08
- [PATCH 06/11] blockdev: drain while unlocked in internal_snapshot_action(),
Fiona Ebner <=
- [PATCH 08/11] block: mark bdrv_drained_begin() as GRAPH_UNLOCKED, Fiona Ebner, 2025/05/08
- [PATCH 09/11] block: move drain out of bdrv_change_aio_context(), Fiona Ebner, 2025/05/08
- [PATCH 03/11] block/snapshot: move drain outside of read-locked bdrv_snapshot_delete(), Fiona Ebner, 2025/05/08
- [PATCH 07/11] blockdev: drain while unlocked in external_snapshot_action(), Fiona Ebner, 2025/05/08
- [PATCH 10/11] block/graph-lock: add drain flag to bdrv_graph_wr{, un}lock, Fiona Ebner, 2025/05/08