[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 4/7] nbd: Fix order of bdrv_set_perm and bdrv_invalid
From: |
Eric Blake |
Subject: |
[Qemu-devel] [PULL 4/7] nbd: Fix order of bdrv_set_perm and bdrv_invalidate_cache |
Date: |
Tue, 15 Aug 2017 10:09:04 -0500 |
From: Kevin Wolf <address@hidden>
The "inactive" state of BDS affects whether the permissions can be
granted, we must call bdrv_invalidate_cache before bdrv_set_perm to
support "-incoming defer" case.
Reported-by: Christian Ehrhardt <address@hidden>
Signed-off-by: Fam Zheng <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Eric Blake <address@hidden>
---
nbd/server.c | 20 +++++++++++---------
1 file changed, 11 insertions(+), 9 deletions(-)
diff --git a/nbd/server.c b/nbd/server.c
index 82a78bf439..993ade30bb 100644
--- a/nbd/server.c
+++ b/nbd/server.c
@@ -1045,11 +1045,22 @@ NBDExport *nbd_export_new(BlockDriverState *bs, off_t
dev_offset, off_t size,
bool writethrough, BlockBackend *on_eject_blk,
Error **errp)
{
+ AioContext *ctx;
BlockBackend *blk;
NBDExport *exp = g_malloc0(sizeof(NBDExport));
uint64_t perm;
int ret;
+ /*
+ * NBD exports are used for non-shared storage migration. Make sure
+ * that BDRV_O_INACTIVE is cleared and the image is ready for write
+ * access since the export could be available before migration handover.
+ */
+ ctx = bdrv_get_aio_context(bs);
+ aio_context_acquire(ctx);
+ bdrv_invalidate_cache(bs, NULL);
+ aio_context_release(ctx);
+
/* Don't allow resize while the NBD server is running, otherwise we don't
* care what happens with the node. */
perm = BLK_PERM_CONSISTENT_READ;
@@ -1087,15 +1098,6 @@ NBDExport *nbd_export_new(BlockDriverState *bs, off_t
dev_offset, off_t size,
exp->eject_notifier.notify = nbd_eject_notifier;
blk_add_remove_bs_notifier(on_eject_blk, &exp->eject_notifier);
}
-
- /*
- * NBD exports are used for non-shared storage migration. Make sure
- * that BDRV_O_INACTIVE is cleared and the image is ready for write
- * access since the export could be available before migration handover.
- */
- aio_context_acquire(exp->ctx);
- blk_invalidate_cache(blk, NULL);
- aio_context_release(exp->ctx);
return exp;
fail:
--
2.13.5
- [Qemu-devel] [PULL for 2.10-rc3 0/7] NBD changes for 2.10-rc3, Eric Blake, 2017/08/15
- [Qemu-devel] [PULL 1/7] nbd: Fix trace message for disconnect, Eric Blake, 2017/08/15
- [Qemu-devel] [PULL 2/7] qemu-iotests: step clock after each test iteration, Eric Blake, 2017/08/15
- [Qemu-devel] [PULL 3/7] stubs: Add vm state change handler stubs, Eric Blake, 2017/08/15
- [Qemu-devel] [PULL 5/7] block-backend: Defer shared_perm tightening migration completion, Eric Blake, 2017/08/15
- [Qemu-devel] [PULL 4/7] nbd: Fix order of bdrv_set_perm and bdrv_invalidate_cache,
Eric Blake <=
- [Qemu-devel] [PULL 7/7] nbd-client: Fix regression when server sends garbage, Eric Blake, 2017/08/15
- Re: [Qemu-devel] [PULL 7/7] nbd-client: Fix regression when server sends garbage, Vladimir Sementsov-Ogievskiy, 2017/08/21
[Qemu-devel] [PULL 6/7] iotests: Add non-shared storage migration case 192, Eric Blake, 2017/08/15