qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-block] [PATCH] block-backend: Preserve AioContext of root across m


From: Fam Zheng
Subject: [Qemu-block] [PATCH] block-backend: Preserve AioContext of root across medium change
Date: Fri, 23 Sep 2016 18:58:19 +0800

This is nop for non-dataplane case, but it prevents crash
(virtio_scsi_ctx_check assertion failure) when a scsi-cd change
operation happens on a virtio-scsi dataplane device.

Cc: address@hidden
Signed-off-by: Fam Zheng <address@hidden>
---
 block/block-backend.c     | 7 +++++++
 include/block/block_int.h | 1 +
 2 files changed, 8 insertions(+)

diff --git a/block/block-backend.c b/block/block-backend.c
index d1349d9..c2cae9a 100644
--- a/block/block-backend.c
+++ b/block/block-backend.c
@@ -1570,6 +1570,7 @@ void blk_update_root_state(BlockBackend *blk)
     blk->root_state.open_flags    = blk->root->bs->open_flags;
     blk->root_state.read_only     = blk->root->bs->read_only;
     blk->root_state.detect_zeroes = blk->root->bs->detect_zeroes;
+    blk->root_state.aio_context   = blk->root->bs->aio_context;
 }
 
 /*
@@ -1579,7 +1580,13 @@ void blk_update_root_state(BlockBackend *blk)
  */
 void blk_apply_root_state(BlockBackend *blk, BlockDriverState *bs)
 {
+    AioContext *ctx = blk->root_state.aio_context;
     bs->detect_zeroes = blk->root_state.detect_zeroes;
+    if (ctx && ctx != qemu_get_aio_context()) {
+        aio_context_acquire(ctx);
+        bdrv_set_aio_context(bs, ctx);
+        aio_context_release(ctx);
+    }
 }
 
 /*
diff --git a/include/block/block_int.h b/include/block/block_int.h
index ef3c047..23c64d2 100644
--- a/include/block/block_int.h
+++ b/include/block/block_int.h
@@ -534,6 +534,7 @@ struct BlockBackendRootState {
     int open_flags;
     bool read_only;
     BlockdevDetectZeroesOptions detect_zeroes;
+    AioContext *aio_context;
 };
 
 typedef enum BlockMirrorBackingMode {
-- 
2.7.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]