qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] export root node for write through NBD


From: Vladimir Sementsov-Ogievskiy
Subject: Re: [Qemu-devel] export root node for write through NBD
Date: Fri, 15 Dec 2017 19:13:37 +0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0

30.11.2017 17:33, Kevin Wolf wrote:
Am 30.11.2017 um 15:21 hat Max Reitz geschrieben:
On 2017-11-30 08:47, Vladimir Sementsov-Ogievskiy wrote:
Hi all.

We need the following option: start vm in stopped mode (-S) and write
it's disk before start through NBD.
It should be absolutely safe, but unfortunately it is disallowed by root
role of the disk.
Is there any workaround or if not, what is a true way to implement this
possibility?

----
error message:
     unable to execute QEMU command 'nbd-server-add': Conflicts with use
by drive0 as 'root', which does not allow 'write' on #block100
One thing that comes to mind is adding the guest device only after you
are done with NBD.

The other of course is to set share-rw=on for the device.
We already allow this with incoming migration, in that case the
BlockBackend for the guest device stays inactive and doesn't request
permissions yet.

I've been thinking for a while that it would be nice to unify the
startup of "normal" VMs and incoming migration, so that images are
always opened inactive first and then get activated.

The interesting point for you could be that opening the image happens
immediately when the process starts, but activation would only happen
when the VM actually starts running (i.e. on 'cont').

Kevin

Could it be as simple as:

diff --git a/block/block-backend.c b/block/block-backend.c
index 3064cb888f..b8cbb43f02 100644
--- a/block/block-backend.c
+++ b/block/block-backend.c
@@ -709,7 +709,9 @@ static int blk_do_attach_dev(BlockBackend *blk, void *dev)
     /* While migration is still incoming, we don't need to apply the
      * permissions of guest device BlockBackends. We might still have a block
      * job or NBD server writing to the image for storage migration. */
-    if (runstate_check(RUN_STATE_INMIGRATE)) {
+    if (runstate_check(RUN_STATE_INMIGRATE) ||
+        runstate_check(RUN_STATE_PRELAUNCH))
+    {
         blk->disable_perm = true;
     }


(at least it fixes my case)

--
Best regards,
Vladimir




reply via email to

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