** Description changed:

+ [Impact]
+ 
+  * Certain actions need to open/reopen files e.g. when doing a snapshot it 
+    will reopen the old file as backing image. Those cases can fail due to 
+    a bug in the flag handling.
+ 
+  * The fix is a backport of an upstream fix that fixes the options that 
+    were lost on recursing through images.
+ 
+ [Test Case]
+ 
+  * There is a great test description in the initial report which I 
+    extended to a script. Run the attached script should work once the fix 
+    is applied.
+    Summary: set up image files, do a snapshot via QMP.
+ 
+ [Regression Potential]
+ 
+  * There were a lot of changes in this area and chances are that there are 
+    side effects by only picking this change compared to adding up all the 
+    other changes. In my testing I found the isolated single patch to work 
+    fine for the case shown here and through regression tests. While at the 
+    same time the bigger set of changes is harder to review/understand and 
+    had some new hangs (by more side effects). So there is a risk, but I'd 
+    hope we chose the most sane an reviewable approach.
+ 
+ [Other Info]
+  
+  * n/a
+ 
+ 
+ ---
+ 
  On Bionic, Qemu complains that it cannot acquire write lock when
  commiting a snapshot if a read-only backing-store is opened by another
  qemu process. This behavior does not happen with version 2.12 in Cosmic.
  
  Reproducer
  ==========
  Create two QCOW2 containers sharing the same base file as a backing store :
  
             base.qcow2
                  |
        +---------+---------+
        |-------------------|
  middle-vm01.img   middle-vm02.img
        |-------------------|
  top-vm01.img   ----   top-vm02.img
  
  # cat mkimage
  #!/bin/bash
  qemu-img create -f qcow2 base.qcow2 10G
  qemu-img create -f qcow2 -b base.qcow2 middle-vm01.img 10G
  qemu-img create -f qcow2 -b base.qcow2 middle-vm02.img 10G
  qemu-img create -f qcow2 -b middle-vm01.img top-vm01.img 10G
  qemu-img create -f qcow2 -b middle-vm01.img top-vm02.img 10G
  
  Start two VM each using its own top-vm{id}.img
  
  # cat runvm
  #!/bin/bash
  
  qemu-system-x86_64 -nographic -qmp unix:./qmp-1.sock,server,nowait 
-enable-kvm -device virtio-scsi-pci,id=scsi       -device sga -nodefaults 
-monitor none -m 256M -drive file=./top-vm01.img,if=virtio,id=disk0 -smp 1 
-smbios type=1,manufacturer=test&
  qemu-system-x86_64 -nographic -qmp unix:./qmp-2.sock,server,nowait 
-enable-kvm -device virtio-scsi-pci,id=scsi       -device sga -nodefaults 
-monitor none -m 256M -drive file=./top-vm02.img,if=virtio,id=disk0 -smp 1 
-smbios type=1,manufacturer=test&
  
  Create a snapshot
  
  ./scripts/qmp/qmp-shell ./qmp-1.sock
  Welcome to the QMP low-level shell!
  Connected to QEMU 2.11.1
  
  (QEMU) blockdev-snapshot-sync device=disk0 snapshot-file=tmp.qcow2 
format=qcow2
  Formatting 'tmp.qcow2', fmt=qcow2 size=10737418240 
backing_file=./top-vm01.img backing_fmt=qcow2 cluster_size=65536 
lazy_refcounts=off refcount_bits=16
  {"return": {}}
  
  Commit the snapshot
  (QEMU) block-commit device=disk0 base=top-vm01.img
  {"error": {"class": "GenericError", "desc": "Failed to get \"write\" lock"}}
  
  Expected Behavior
  =================
  The commit should complete succesfully as the base.img backing store is 
opened read-only so no write lock is required
  
  Current Behavior
  ================
  The commit fails with "Failed to get "write" lock

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1837869

Title:
  Cannot complete snapshot if read-only backing store is opened by
  another VM

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/qemu/+bug/1837869/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to