[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [RFC V6] Libxl Domain Snapshot API Design
Hi, Ian J. & Ian C., Do you have any comments about the new structures and new functions? Especially libxl_disk_snapshot structure, it's one of the most disputable parts in last version. If no objection, I'll start writing code. Thanks, Chunyan >>> On 8/27/2014 at 03:22 PM, in message <1409124146-18249-1-git-send-email-cyliu@xxxxxxxx>, Chunyan Liu <cyliu@xxxxxxxx> wrote: > Since Bamvor left SUSE and turns to work on ARM server, I'd like to continue > this work and make progress. Following the discussion about V5, which mainly > focused on the API design, here post the updated API design. Thanks for any > of your further suggestions! > > Main changes to V5: > * libxl_disk_snapshot: reuse libxl_device_disk rather than specify path, > format separately in the structure. Including two libxl_device_disk > components, one is to indicate the original disk info, one is to > indicate the external snapshot info if it is 'external snapshot'. > * define common APIs for domain snapshot creating/deleting/reverting, > rather than a group of functions for disk snapshot operations. > * remove those APIs for loading/storing/deleting snapshot config. > > V5 is here: > http://lists.xenproject.org/archives/html/xen-devel/2014-07/msg00893.html > V5 about API Design is here: > http://lists.xenproject.org/archives/html/xen-devel/2014-07/msg00897.html > > =========================================================================== > Libxl Domain Snapshot API > > libxl_domain_snapshot = Struct("domain_snapshot",[ > ("name", string), /* snapshot name */ > ("description", string), /* snapshot description */ > ("creation_time", uint64), /* creation time, in seconds */ > > /* save memory or not. "false" means disk-only snapshot */ > ("memory", bool), > > /* memory state file when snapshot is external */ > ("memory_file", string), > > /* Array to store disk snapshot info. */ > ("disks", Array(libxl_disk_snapshot, "num_disks")), > ]) > > libxl_disk_snapshot = Struct("disk_snapshot",[ > ("disk", libxl_device_disk), /* orignal disk */ > ("name", string), /* snapshot name */ > ("external", bool), /* external snapshot or not > */ > > /* external snapshot info, including file path and format, etc. > * if "external" is false, this will be "NULL". > */ > ("external_sn", libxl_device_disk), > ]) > > enum libxlDomainSnapshotCreateFlags { > /* disk snapshot, not system checkpoint */ > LIBXL_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY = 1, > > /* create the snapshot while the guest is running */ > LIBXL_DOMAIN_SNAPSHOT_CREATE_LIVE = 2, > } > > enum libxlDomainSnapshotDeleteFlags { > LIBXL_DOMAIN_SNAPSHOT_DELETE_CHILDREN = 1, /* delete children too */ > } > > enum virDomainSnapshotRevertFlags { > LIBXL_DOMAIN_SNAPSHOT_REVERT_RUNNING = 1, /* run after revert */ > LIBXL_DOMAIN_SNAPSHOT_REVERT_PAUSED = 2, /* pause after revert > */ > LIBXL_DOMAIN_SNAPSHOT_REVERT_FORCE = 4, /* force revert */ > } > > int libxl_domain_snapshot_create(libxl_ctx *ctx, const char *domname, > libxl_domain_snapshot *snapshot, > unsigned int flags); > > Creates a new snapshot of a domain based on the snapshot config > contained > in @snapshot. > > If @flags includes LIBXL_DOMAIN_SNAPSHOT_CREATE_LIVE, then the domain is > not > paused while creating the snapshot, like live migration. This increases > size > of the memory dump file, but reducess downtime of the guest. Only > support > this flag during external checkpoints. > > If @flags includes LIBXL_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY, then the > snapshot > will be limited to the disks described in @snapshot, and no VM state > will > be saved. For an active guest, this is not supported. > > ctx: context > domname: domain name > snapshot: configuration of domain snapshot > flags: bitwise-OR of libxlDomainSnapshotCreateFlags > Returns: 0 on success, -1 on failure > > > int libxl_domain_snapshot_delete(libxl_ctx *ctx, const char *domname, > const char *snapshot_name, > unsigned int flags); > > Delete a snapshot. > > If @flags is 0, then just this snapshot is deleted, and changes from > this > snapshot are automatically merged into children snapshots. > > If @flags includes LIBXL_DOMAIN_SNAPSHOT_DELETE_CHILDREN, then this > snapshot > and any descendant snapshots are deleted. > > ctx: context > domname: domain name > snapshot_name: snapshot name > flags: bitwise-OR of supported libxlDomainSnapshotDeleteFlags > Returns: 0 on success, -1 on error. > > int libxl_disk_snapshot_revert(libxl_ctx *ctx, const char *domname, > const char *snapshot_name, > unsigned int flags); > > Revert the domain to a given snapshot. > > Normally, the domain will revert to the same state the domain was in > while > the snapshot was taken (whether inactive, running, or paused). > > If @flags includes LIBXL_DOMAIN_SNAPSHOT_REVERT_RUNNING, then overrides > the > snapshot state to guarantee a running domain after the revert. > > If @flags includes LIBXL_DOMAIN_SNAPSHOT_REVERT_PAUSED, then guarantees > a > paused domain after the revert. > > ctx: context > domname: domain name > snapshot_name: snapshot name > flags: bitwise-OR of supported libxlDomainSnapshotRevertFlags > Returns: 0 on success, -1 on error. > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxx > http://lists.xen.org/xen-devel > > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |