[libvirt] [PATCH 4/5] qemu: Unset the genid start change flag for revert force

John Ferlan jferlan at redhat.com
Wed Jun 20 14:19:13 UTC 2018



On 06/20/2018 09:20 AM, Michal Privoznik wrote:
> On 06/20/2018 12:54 AM, John Ferlan wrote:
>> If the the snapshot revert involves a forced revert option, then
>> let's not cause startup to change the genid flag in order to signify
>> that we're still running the same/previous guest and not some
>> snapshot reversion.
>>
>> https://bugzilla.redhat.com/show_bug.cgi?id=1149445
>>
>> Signed-off-by: John Ferlan <jferlan at redhat.com>
>> ---
>>  src/qemu/qemu_driver.c | 6 ++++--
>>  1 file changed, 4 insertions(+), 2 deletions(-)
>>
>> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
>> index 01011906d1..f737f4d350 100644
>> --- a/src/qemu/qemu_driver.c
>> +++ b/src/qemu/qemu_driver.c
>> @@ -16136,12 +16136,14 @@ qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot,
>>                  }
>>  
>>                  /* If using VM GenID, there is no way currently to change
>> -                 * the genid for the running guest, so set an error and
>> -                 * mark as incompatible. */
>> +                 * the genid for the running guest, so set an error,
>> +                 * mark as incompatible, and don't allow change of genid
>> +                 * if the revert force flag would start the guest again. */
>>                  if (compatible && config->genidRequested) {
>>                      virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
>>                                     _("domain genid update requires restart"));
>>                      compatible = false;
>> +                    start_flags &= ~VIR_QEMU_PROCESS_START_GEN_VMID;
> 
> Pre-existing, but what is the point of this virReportError() if it does
> not cause domain starting?
> 
> Michal
> 

See a few lines lower:

    if (!(flags & VIR_DOMAIN_SNAPSHOT_REVERT_FORCE)) {
        /* Re-spawn error using correct category. */
        if (err->code == VIR_ERR_CONFIG_UNSUPPORTED)
            virReportError(VIR_ERR_SNAPSHOT_REVERT_RISKY, "%s",
                           err->str2);
        goto endjob;
    }
    virResetError(err);

It's thus "similar to" what virDomainDefCheckABIStabilityFlags would do
(see a few lines above) when generating an error such as "Target domain
disk count 1 does not match source 2" which is seen in bz1591628.

A virsh failure would see :

error: revert requires force: "%s" (message)

which immediately for qe is followed by --force ;-)

Tks for the review...

John




More information about the libvir-list mailing list