[libvirt] [PATCH v6 0/6] Expose FSFreeze/FSThaw within the guest as API

Tomoki Sekiyama tomoki.sekiyama at hds.com
Wed Apr 30 00:03:48 UTC 2014


Hello,

This is patchset v6 to add FSFreeze/FSThaw API for custom disk snapshotting.

Changes since v5:
 * replace disks and ndisks parameter with mountpoints and nmountpoints
   to specify filesystem to be frozen/thawed, so that we can specify
   non-disk-backed filesystems

 * add PATCH 6 to support 'mountpoints' argument for
   'guest-fsfreeze-freeze' command of qemu-guest-agent.
   (This requires a patch for qemu-guest-agent, which isn't merged yet:
    https://lists.gnu.org/archive/html/qemu-devel/2014-04/msg04434.html )

 * drop nested fsfreeze request feature
 * change API version to 1.2.5

 (v5: https://www.redhat.com/archives/libvir-list/2014-April/msg00140.html )


=== Description ===

Currently FSFreeze and FSThaw are supported by qemu guest agent and they
are used internally in snapshot-create command with --quiesce option.
However, when users want to utilize the native snapshot feature of storage
devices (such as LVM over iSCSI, enterprise storage appliances, etc.),
they need to issue fsfreeze command separately from libvirt-driven snapshots.
(OpenStack cinder provides these storages' snapshot feature, but it cannot
 quiesce the guest filesystems automatically for now.)

Although virDomainQemuGuestAgent() API could be used for this purpose, it
is only for debugging and is not supported officially.

This patchset adds virDomainFSFreeze()/virDomainFSThaw() APIs and virsh
domfsfreeze/domfsthaw commands to enable the users to freeze and thaw
domain's filesystems cleanly.

  <updated>
The APIs take disks and ndisks parameters, which is a list of mountpoints
of filesystems to be frozen/thawed. If the option is not provided, or
guest agent doesn't support the 'mountpoints' argument, every mounted
filesystem is frozen/thawed.
  </updated>

The APIs have flags option currently unsupported for future extension.
---

Tomoki Sekiyama (6):
      Introduce virDomainFSFreeze() and virDomainFSThaw() public API
      remote: Implement virDomainFSFreeze and virDomainFSThaw
      qemu: track quiesced status in qemuDomainSnapshotFSFreeze
      qemu: Implement virDomainFSFreeze and virDomainFSThaw
      virsh: Expose new virDomainFSFreeze and virDomainFSThaw API
      qemu: Support mountpoints option of guest-fsfreeze-freeze


 include/libvirt/libvirt.h.in |   10 +++
 src/access/viraccessperm.c   |    2 -
 src/access/viraccessperm.h   |    6 ++
 src/driver.h                 |   14 ++++
 src/libvirt.c                |   93 ++++++++++++++++++++++++
 src/libvirt_public.syms      |    6 ++
 src/qemu/qemu_agent.c        |   47 +++++++++++-
 src/qemu/qemu_agent.h        |    3 +
 src/qemu/qemu_domain.c       |    5 +
 src/qemu/qemu_domain.h       |    2 +
 src/qemu/qemu_driver.c       |  160 ++++++++++++++++++++++++++++++++++++++----
 src/remote/remote_driver.c   |    2 +
 src/remote/remote_protocol.x |   38 +++++++++-
 src/remote_protocol-structs  |   18 +++++
 src/rpc/gendispatch.pl       |    2 +
 tests/qemuagenttest.c        |    8 +-
 tools/virsh-domain.c         |  130 ++++++++++++++++++++++++++++++++++
 tools/virsh.pod              |   23 ++++++
 18 files changed, 544 insertions(+), 25 deletions(-)




More information about the libvir-list mailing list