Hi, This patch series attempts to add fsfreeze support for Windows qemu-guest-agent.
In Windows, VSS (Volume Shadow Copy Service) can provide a facility to quiesce filesystems and applications before snapshots are taken. VSS consists from some components. - VSS Writers: applications to be quiesced. - VSS Providers: modules to provide a snapshot feature - VSS Requesters: modules to control snapshotting processes This patch series adds VSS provider and requester feature to qemu-ga. When guest-fsfreeze-freeze command is sent, qemu-ga request VSS to freeze applications and filesystems. After frozen, VSS requests providers to take snapshots using COM+. Qemu-ga hooks this event by registering its own VSS provider and relay it to qemu-ga. guest-fsfreeze-freeze command is finished by this event. When guest-fsfreeze-thaw command is sent, qemu-ga provider tells VSS that snapshot is finished. Then, VSS thaws the filesystems and applications and notify the requester of snapshot completion. The VSS provider in this patch series only provides snapshotting to implement fsfreeze commands, but doesn't provide functions to query for snapshots, recovery, and so on. Auto-recovery(*) feature of VSS is not either supported becuase it requires writable snapshots. *http://msdn.microsoft.com/en-us//library/windows/desktop/aa819771(v=vs.85).aspx Still, this could be useful as a base for future extentions. * How to build & run qemu-ga with VSS support - Download Microsoft VSS SDK from: http://www.microsoft.com/en-us/download/details.aspx?id=23490 - Setup the SDK (wine can be used to run the setup) - Specify installed SDK directory to configure option as: ./configure -with-vss-sdk="path/to/VSS SDK" --cross-prefix=i686-w64-mingw32- - Make qemu-ga.exe - Install qemu-ga.exe and qga/vss-win32-provider/qga-provider.{dll,tlb} into the same directory in guests - Run `qemu-ga.exe -s install' and `net start qemu-ga' in the guests --- Tomoki Sekiyama (10): configure: Support configuring c++ compiler Fix errors and warnings while compiling with c++ compilier qemu-ga: Add an configure option to specify path to Windows VSS SDK qemu-ga: Add Windows VSS provider to quiesce applications on fsfreeze qemu-ga: Add Windows VSS requester to quisce applications and filesystems qemu-ga: call Windows VSS requester in fsfreeze command handler qemu-ga: install Windows VSS provider on `qemu-ga -s install' qemu-ga: Add VSS provider .tlb file in the repository QMP/qemu-ga-client: make timeout longer for guest-fsfreeze-freeze command QMP/qmp.py: set locale for exceptions to display non-ascii messages correctly .gitignore | 1 Makefile | 4 QMP/qemu-ga-client | 4 QMP/qmp.py | 4 configure | 52 +++ hmp.c | 2 hw/pci/pci.c | 2 qapi-schema.json | 4 qga/Makefile.objs | 15 + qga/commands-win32.c | 74 ++++- qga/main.c | 41 +++ qga/vss-win32-provider.h | 26 ++ qga/vss-win32-provider/Makefile | 30 ++ qga/vss-win32-provider/install.cpp | 494 +++++++++++++++++++++++++++++++ qga/vss-win32-provider/provider.cpp | 474 ++++++++++++++++++++++++++++++ qga/vss-win32-provider/qga-provider.def | 10 + qga/vss-win32-provider/qga-provider.idl | 20 + qga/vss-win32-provider/qga-provider.tlb | Bin qga/vss-win32-requester.cpp | 393 +++++++++++++++++++++++++ qga/vss-win32-requester.h | 31 ++ qga/vss-win32.h | 93 ++++++ rules.mak | 7 22 files changed, 1766 insertions(+), 15 deletions(-) create mode 100644 qga/vss-win32-provider.h create mode 100644 qga/vss-win32-provider/Makefile create mode 100644 qga/vss-win32-provider/install.cpp create mode 100644 qga/vss-win32-provider/provider.cpp create mode 100644 qga/vss-win32-provider/qga-provider.def create mode 100644 qga/vss-win32-provider/qga-provider.idl create mode 100644 qga/vss-win32-provider/qga-provider.tlb create mode 100644 qga/vss-win32-requester.cpp create mode 100644 qga/vss-win32-requester.h create mode 100644 qga/vss-win32.h Any feedback are appliciated. Thanks, -- Tomoki Sekiyama <tomoki.sekiyama...@hitachi.com> Linux Technology Center Hitachi, Ltd., Yokohama Research Laboratory