qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [RFC PATCH 00/10] qemu-ga: support fsfreeze on Windows usin


From: Tomoki Sekiyama
Subject: [Qemu-devel] [RFC PATCH 00/10] qemu-ga: support fsfreeze on Windows using VSS
Date: Thu, 14 Feb 2013 15:10:26 +0900
User-agent: StGit/0.16

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 <address@hidden>
Linux Technology Center
Hitachi, Ltd., Yokohama Research Laboratory



reply via email to

[Prev in Thread] Current Thread [Next in Thread]