
Recently I got a disk snapshot marked as illegal in an VM due to a failed live merge I fixed the snapshot manually with qemu-img rebase, now qemu-img check shows everything OK I also set the imagestatus to OK in the engine database, as shown below engine=# select image_guid,parentid,imagestatus,vm_snapshot_id,volume_type,volume_format,active from images where image_group_id='c35ccdc5-a256-4460-8dd2-9e639b8430e9'; image_guid | parentid | imagestatus | vm_snapshot_id | volume_type | volume_format | active --------------------------------------+--------------------------------------+-------------+--------------------------------------+------------- +---------------+-------- 07729f62-2cd2-45d0-993a-ec8d7fbb6ee0 | 00000000-0000-0000-0000-000000000000 | 1 | 7ae58a5b-eacf-4f6b-a06f-bda1d85170b5 | 1 | 5 | f ee733323-308a-40c8-95d4-b33ca6307362 | 07729f62-2cd2-45d0-993a-ec8d7fbb6ee0 | 1 | 2ae07078-cc48-4e20-a249-52d3f44082b4 | 2 | 4 | t But when I try to boot the VM it still fails with this error in the SPM Thread-292345::ERROR::2017-07-06 14:20:33,155::task::866::Storage.TaskManager.Task::(_setError) Task=`2d262a05-5a03-4ff9-8347-eaa22b6e143c`::Unexpected error Traceback (most recent call last): File "/usr/share/vdsm/storage/task.py", line 873, in _run return fn(*args, **kargs) File "/usr/share/vdsm/logUtils.py", line 49, in wrapper res = f(*args, **kwargs) File "/usr/share/vdsm/storage/hsm.py", line 3227, in prepareImage raise se.prepareIllegalVolumeError(volUUID) prepareIllegalVolumeError: Cannot prepare illegal volume: ('ee733323-308a-40c8-95d4-b33ca6307362',) Thread-292345::DEBUG::2017-07-06 14:20:33,156::task::885::Storage.TaskManager.Task::(_run) Task=`2d262a05-5a03-4ff9-8347-eaa22b6e143c`::Task._run: 2d262a05-5a03-4ff9-8347-eaa22b6e143c (u'146dca57-05fd-4b3f-af8d-b253a7ca6f6e', u'00000001-0001-0001-0001-00000000014d', u'c35ccdc5-a256-4460-8dd2-9e639b8430e9', u'ee733323-308a-40c8-95d4-b33ca6307362') {} failed - stopping task Just before that error I see this operation in the log: /usr/bin/taskset --cpu-list 0-23 /usr/bin/dd iflag=direct skip=11 bs=512 if=/dev/146dca57-05fd-4b3f-af8d-b253a7ca6f6e/metadata count=1 If I run it manually I get this: [root@blade6 ~]# /usr/bin/taskset --cpu-list 0-23 /usr/bin/dd iflag=direct skip=11 bs=512 if=/dev/146dca57-05fd-4b3f-af8d-b253a7ca6f6e/metadata count=1 DOMAIN=146dca57-05fd-4b3f-af8d-b253a7ca6f6e VOLTYPE=LEAF CTIME=1497399380 FORMAT=COW IMAGE=c35ccdc5-a256-4460-8dd2-9e639b8430e9 DISKTYPE=2 PUUID=07729f62-2cd2-45d0-993a-ec8d7fbb6ee0 LEGALITY=ILLEGAL MTIME=0 POOL_UUID= SIZE=209715200 TYPE=SPARSE DESCRIPTION= EOF So I guess the volume info is cached in the storage domain's metadata LV, and it's still in ILLEGAL status there Is there a way to force ovirt to update the information in the metadata LV? Of course I've thought of updating manually with dd, with it seems too risky (and scary) to do it in production Salu2! -- Miguel Armas CanaryTek Consultoria y Sistemas SL http://www.canarytek.com/