[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 2/6] fixup block: remove AioContext locking
From: |
Stefan Hajnoczi |
Subject: |
[PATCH v3 2/6] fixup block: remove AioContext locking |
Date: |
Thu, 21 Dec 2023 14:24:48 -0500 |
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
migration/block.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/migration/block.c b/migration/block.c
index 2bcfcbfdf6..6ec6a1d6e6 100644
--- a/migration/block.c
+++ b/migration/block.c
@@ -311,10 +311,17 @@ static int mig_save_device_bulk(QEMUFile *f,
BlkMigDevState *bmds)
block_mig_state.submitted++;
blk_mig_unlock();
+ /*
+ * The migration thread does not have an AioContext. Lock the BQL so that
+ * I/O runs in the main loop AioContext (see
+ * qemu_get_current_aio_context()).
+ */
+ qemu_mutex_lock_iothread();
bdrv_reset_dirty_bitmap(bmds->dirty_bitmap, cur_sector * BDRV_SECTOR_SIZE,
nr_sectors * BDRV_SECTOR_SIZE);
blk->aiocb = blk_aio_preadv(bb, cur_sector * BDRV_SECTOR_SIZE, &blk->qiov,
0, blk_mig_read_cb, blk);
+ qemu_mutex_unlock_iothread();
bmds->cur_sector = cur_sector + nr_sectors;
return (bmds->cur_sector >= total_sectors);
--
2.43.0
- [PATCH v3 0/6] qemu-iotests fixes for Kevin's block tree, Stefan Hajnoczi, 2023/12/21
- [PATCH v3 1/6] fixup block-coroutine-wrapper: use qemu_get_current_aio_context(), Stefan Hajnoczi, 2023/12/21
- [PATCH v3 3/6] fixup scsi: only access SCSIDevice->requests from one thread, Stefan Hajnoczi, 2023/12/21
- [PATCH v3 4/6] nbd/server: avoid per-NBDRequest nbd_client_get/put(), Stefan Hajnoczi, 2023/12/21
- [PATCH v3 6/6] nbd/server: introduce NBDClient->lock to protect fields, Stefan Hajnoczi, 2023/12/21
- [PATCH v3 5/6] nbd/server: only traverse NBDExport->clients from main loop thread, Stefan Hajnoczi, 2023/12/21
- [PATCH v3 2/6] fixup block: remove AioContext locking,
Stefan Hajnoczi <=
- Re: [PATCH v3 0/6] qemu-iotests fixes for Kevin's block tree, Kevin Wolf, 2023/12/21