• E
    snapshot: new query APIs · 2e13b9ab
    Eric Blake 提交于
    Right now, starting from just a virDomainSnapshotPtr, and wanting to
    know if it is the current snapshot for its respective domain, you have
    to use virDomainSnapshotGetDomain(), then virDomainSnapshotCurrent(),
    then compare the two names returned by virDomainSnapshotGetName().
    It is a bit easier if we can directly query this information from the
    snapshot itself.
    
    Right now, it is possible to filter a snapshot listing based on
    whether snapshots have metadata that would prevent domain deletion,
    but the only way to learn if an individual snapshot has metadata is
    to see if that snapshot appears in the list returned by a listing.
    Additionally, I hope to expand the qemu driver in a future patch to
    use qemu-img to reconstruct snapshot XML corresponding to internal
    qcow2 snapshot names not otherwise tracked by libvirt (in part, so
    that libvirt can guarantee that new snapshots are not created with
    a name that would silently corrupt the existing portion of the qcow2
    file); if I ever get that in, then it would no longer be an all-or-none
    decision on whether snapshots have metadata, and becomes all the more
    important to be able to directly determine that information from a
    particular snapshot.
    
    Other query functions (such as virDomainIsActive) do not have a flags
    argument, but since virDomainHasCurrentSnapshot takes a flags argument,
    I figured it was safer to provide a flags argument here as well.
    
    * include/libvirt/libvirt.h.in (virDomainSnapshotIsCurrent)
    (virDomainSnapshotHasMetadata): New declarations.
    * src/libvirt.c (virDomainSnapshotIsCurrent)
    (virDomainSnapshotHasMetadata): New functions.
    * src/libvirt_public.syms (LIBVIRT_0.9.13): Export them.
    * src/driver.h (virDrvDomainSnapshotIsCurrent)
    (virDrvDomainSnapshotHasMetadata): New driver callbacks.
    2e13b9ab
driver.h 63.6 KB