Description of problem:
VDSM localdisk hook does not prevent a VM from being snapshot.
This breaks the chain, merge fails and if shutdown VM wont start. It's also complex to fix.
Apparently would be easy if we had "before_vm_snapshot" hook infra.
Version-Release number of selected component (if applicable):
RHV 4.0, vdsm-4.18
Steps to Reproduce:
1. Install he hook
2. Snapshot the VM
jsonrpc.Executor/4::DEBUG::2017-11-12 04:02:37,169::storage::315::virt.vm::(path) vmId=`b54f9aa2-c060-4fc6-9879-d33ad87accaa`::Drive vda moved from u'/dev/ovirt-local/ae207ffa-ad36-4927-b634-5ec5c6c284b0' to u'/rhev/data-center/78a89f5e-e88a-40dc-9467-9ccbb77f59d6/c2ba9087-43d9-44b5-a862-32f3a4dafb95/images/1c27de0d-a56c-4bd0-96ed-4e54843b0b4b/ca99bf43-daf9-440a-9469-37cbe8abb76d'
Fail to snapshot
Missing from initial comment:
Current fix is to basically collapse the chain down to the base image on the local host, then adjust the DB.
Volume AAA is the raw , local to the host, image (i.e.: /dev/ovirt-local/...)
Volume BBB is the qcow2, on nfs storage , image (i.e.: /rhev/data-center/...)
Chain is: [BBB - leaf]
[AAA - base]
1) VM shutdown (!!!)
2) unsafe rebase of image BBB, make it point to AAA's path (so that step 3 can succeed, otherwise qemu-img commit fails to build the chain)
qemu-img rebase -f qcow2 -t none -u -b AAA -F raw BBB
3) image commit, commit BBB into AAA
qemu-img commit -f qcow2 -t none -b AAA -d -p BBB
4) metadata fix for AAA
sed -i 's/VOLTYPE=INTERNAL/VOLTYPE=LEAF/g' AAA.meta
5) Remove BBB (optional, probably safer to do later)
# rm -rf BBB*
6) Adjust images and snapshots in the DB to make VM with no snapshots and use AAA to start.
Merged for oVirt 4.2.1 (will be part of RHV 4.2 GA).
Fred/Tal - the patch seems simple enough - let's please clone this and provide a fix for 4.1.9 too.
Verified with the following code:
Verified with the following scenario:
1. Install he hook
2. Snapshot the VM >>>>> Error is displayed informing the user that snapshots cant be created as the hook is configured on the system.
Moving to VERIFY
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory, and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.