qemu-block
[Top][All Lists]
Advanced

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

[Qemu-block] [PATCH v6 14/22] mirror: Disable image locking on target ba


From: Fam Zheng
Subject: [Qemu-block] [PATCH v6 14/22] mirror: Disable image locking on target backing chain
Date: Fri, 3 Jun 2016 16:49:08 +0800

In sync=none the backing image of s->target is s->common.bs, which could
be exclusively locked, the image locking wouldn't work here.

Later we can update completion code to lock it after the replaced node
has dropped its lock.

Signed-off-by: Fam Zheng <address@hidden>
---
 blockdev.c | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/blockdev.c b/blockdev.c
index fa8b50c..4a9fa7c 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -3620,8 +3620,14 @@ void qmp_drive_mirror(const char *device, const char 
*target,
     /* Mirroring takes care of copy-on-write using the source's backing
      * file.
      */
-    target_bs = bdrv_open(target, NULL, options, flags | BDRV_O_NO_BACKING,
-                          errp);
+    flags |= BDRV_O_NO_BACKING;
+    if (sync == MIRROR_SYNC_MODE_NONE) {
+        /* TODO: in mirror complete, after target_bs is switched to and the
+         * original BDS's lock is dropped, we should enable the lock on
+         * target_bs.  */
+        flags |= BDRV_O_NO_LOCK;
+    }
+    target_bs = bdrv_open(target, NULL, options, flags, errp);
     if (!target_bs) {
         goto out;
     }
-- 
2.8.2




reply via email to

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