[libvirt] [PATCH 06/20] snapshot: Add flag to enable creating checkpoints in paused state

Peter Krempa pkrempa at redhat.com
Thu Nov 1 13:12:04 UTC 2012


On 10/31/12 23:12, Eric Blake wrote:
> On 10/23/2012 09:12 AM, Peter Krempa wrote:
>> The default behavior while creating external checkpoints is to let the
>> guest run while the memory state is caputred. This leads to a larger
>> save file but minimizes the time needed to take the checkpoint.
>>
>> This patch adds a flag that causes the guest to be paused before taking
>> the snapshot.
>
> For this patch, I'm going to review the updated version at
>   git fetch git://pipo.sk/pipo/libvirt.git snap-revert
>
>>
>> commit 8cf5a508f0ef37308ce7601b1632a2fb0853233f
>> Author: Peter Krempa <pkrempa at redhat.com>
>> Date:   Tue Oct 9 12:11:56 2012 +0200
>>
>>      snapshot: Add flag to enable creating checkpoints in live state
>>
>>      The default behavior while creating external checkpoints is to pause the
>>      guest while the memory state is captured. We want the users to sacrifice
>>      space saving for creating the memory save image while the guest is live
>>      to minimize downtime.
>>
>>      This patch adds a flag that causes the guest not to be paused before
>>      taking the snapshot.
>>       *include/libvirt/libvirt.h.in:
>>          - add new paused reason: VIR_DOMAIN_PAUSED_SNAPSHOT
>>          - add new flag for takin snapshot: VIR_DOMAIN_SNAPSHOT_CREATE_LIVE
>
> s/takin/taking/
>
>>       *tools/virsh-domain-monitor.c:
>>          - add string representation for VIR_DOMAIN_PAUSED_SNAPSHOT
>>       *tools/virsh-snapshot.c:
>>          - add support for VIR_DOMAIN_SNAPSHOT_CREATE_LIVE
>>       *tools/virsh.pod:
>>          - add docs for --live option added to use
>>          VIR_DOMAIN_SNAPSHOT_CREATE_LIVE flag
>
> This misses examples/domain-events/events-c/event-test.c, which also
> needs updates.

Hm, the event-test file uses switch() statements that fully cover all 
possible values and I didn't run into a compile problem with this.

What am I missing here?

>
>>
>> diff --git a/include/libvirt/libvirt.h.in b/include/libvirt/libvirt.h.in
>> index 2b17cef..d520144 100644
>> --- a/include/libvirt/libvirt.h.in
>> +++ b/include/libvirt/libvirt.h.in
>> @@ -179,6 +179,7 @@ typedef enum {
>>       VIR_DOMAIN_PAUSED_WATCHDOG = 6,     /* paused due to a watchdog event */
>>       VIR_DOMAIN_PAUSED_FROM_SNAPSHOT = 7, /* paused after restoring from snapshot */
>>       VIR_DOMAIN_PAUSED_SHUTTING_DOWN = 8, /* paused during shutdown process */
>> +    VIR_DOMAIN_PAUSED_SNAPSHOT = 9,      /* paused while creating a snaphot */
>
> s/snaphot/snapshot/
>
> At first, I wondered why you weren't reusing _FROM_SNAPSHOT, but after
> looking through the series, now I know - you need distinct states to
> know across libvirtd restarts whether the pause was temporary (due to
> taking the snapshot) or end result (the snapshot itself requested paused
> state when being restored).  Makes sense.
>
>> +++ b/tools/virsh-snapshot.c
>> @@ -127,6 +127,7 @@ static const vshCmdOptDef opts_snapshot_create[] = {
>>       {"reuse-external", VSH_OT_BOOL, 0, N_("reuse any existing external files")},
>>       {"quiesce", VSH_OT_BOOL, 0, N_("quiesce guest's file systems")},
>>       {"atomic", VSH_OT_BOOL, 0, N_("require atomic operation")},
>> +    {"pause", VSH_OT_BOOL, 0, N_("pause guest before taking snapshot")},
>
> Stale - this line should be talking about live.
>
>> +++ b/tools/virsh.pod
>> @@ -2594,7 +2594,7 @@ used to represent properties of snapshots.
>>
>>   =item B<snapshot-create> I<domain> [I<xmlfile>] {[I<--redefine> [I<--current>]]
>>   | [I<--no-metadata>] [I<--halt>] [I<--disk-only>] [I<--reuse-external>]
>> -[I<--quiesce>] [I<--atomic>]}
>> +[I<--quiesce>] [I<--atomic>] [I<--live>]}
>>
>>   Create a snapshot for domain I<domain> with the properties specified in
>>   I<xmlfile>.  Normally, the only properties settable for a domain snapshot
>> @@ -2647,6 +2647,10 @@ this.  If this flag is not specified, then some hypervisors may fail
>>   after partially performing the action, and B<dumpxml> must be used to
>>   see whether any partial changes occurred.
>>
>> +If I<--live> is specified, libvirt takes the snapshot while the guest is
>> +running. This increases the size of the memory image of the external
>> +checkpoint.
>
> Should we also mention that it is not supported with internal
> checkpoint, and/or mention that it is silently ignored for offline
> snapshots?

I think we should. I just added that to the libvirt.c documentation 
comment so I'll try to state that also in the man page
>
> Patch looks okay once those issues are fixed, but since I reviewed an
> unposted later version of your patch straight from your git tree, it
> will help to see a v2 series with the fixes incorporated rather than
> giving ACK now.

I'll be posting a v2 today (hopefuly).
>
>
>
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
>




More information about the libvir-list mailing list