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

Re: [libvirt] [PATCH] qemu: Do not unlink managedsave image if restoring fails.

On 04/05/2011 07:20 AM, Jiri Denemark wrote:
> On Tue, Apr 05, 2011 at 14:47:22 +0800, Osier Yang wrote:
>> Both "qemuDomainStartWithFlags" and "qemuAutostartDomain" try to
>> restore the domain from managedsave'ed image if it exists (by
>> invoking "qemuDomainObjRestore"), but it unlinks the image even
>> if restoring fails, which causes data loss.
>> However, I'm not sure if it's the very correct way to fix it,
>> if restoring fails, and we didn't remove the image, it will
>> trys to restore from the image again next time, if that's
>> not the user expected (e.g. the user made quite many changes
>> on the guest), then it's a new problem.
> I think this patch is risky. You should either remove the state on error
> (which is the current state) or fail domain start if managed state is present
> but resuming from it fails. If you do something in the middle (your patch) you
> will certainly end up corrupting domain's disks.

What's more, I think we should consider removing the saved-state file on
success for 'virsh restore file' - once a state has been restored, the
guest is running and has likely modified its disks, which means that the
saved (memory) state is no longer consistent with the new disk state,
and a second restore of the saved file is asking for a different type of
data corruption.

That is, I think:

virsh save dom file
virsh restore file

should leave file intact if and only if the restore failed, and:

virsh managedsave dom
virsh start

should either fail but leave the (hidden) state file intact, or succeed
and remove the state file.  We have virsh managedsave-remove to properly
delete the state file if the user determines that they want a fresh
start rather than retrying the (hidden) state file.

Eric Blake   eblake redhat com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature

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