All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tomoki Sekiyama <tomoki.sekiyama@hds.com>
To: qemu-devel@nongnu.org
Cc: mdroth@linux.vnet.ibm.com, lcapitulino@redhat.com,
	vrozenfe@redhat.com, pbonzini@redhat.com, seiji.aguchi@hds.com,
	areis@redhat.com
Subject: [Qemu-devel] [RFC PATCH v3 00/11] qemu-ga: fsfreeze on Windows using VSS
Date: Tue, 21 May 2013 11:33:33 -0400	[thread overview]
Message-ID: <20130521153333.4880.74390.stgit@hds.com> (raw)

Hi,

This patch series adds fsfreeze support for Windows qemu-guest-agent.

changes from v2:
 - [06/11] Fix errors in Windows 7, reported by Li Baiqing
           (see below for details).

changes from v1: 
 - Fix out-tree build by stop using recursive Makefile
 - Added script to extract VSS SDK headers on POSIX systems using msitools
   (thanks Paolo)
 - Remove some unnecessary header files

v2: http://lists.gnu.org/archive/html/qemu-devel/2013-04/msg02518.html


* Description
  In Windows, VSS (Volume Shadow Copy Service) provides a facility to
  quiesce filesystems and applications before disk snapshots are taken.
  This patch series implements "fsfreeze" command of qemu-ga using VSS.


* 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
   scripts/extract-vsssdk-headers setup.exe (on POSIX-systems)

 - 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, qga/vss-win32-provider/qga-provider.{dll,tlb}, and
   the other required mingw libraries into the same directory in guests

 - Run `qemu-ga.exe -s install' and `net start qemu-ga' in the guests


* About errors in Windows 7 with patch v2
  VSS requires to write to snapshot volumes just before making them read-only
  at final commit phase. This feature is called `auto-recovery'
  (See http://msdn.microsoft.com/en-us/library/windows/desktop/aa384651(v=vs.85).aspx#base.vssgloss_auto_recoved_shadow_copy for details).

  Since qemu and libvirt don't have feature to handle writable snapshots,
  this patchset just disables auto-recovery by specifying
  VSS_VOLSNAP_ATTR_NO_AUTORECOVERY flag to SetContext.
  Unfortunately, this flag seems unsupported in Windows 7 or earlier.
  It tries to look up the snapshot volumes to write and fails in
  VSS_E_OBJECT_NOT_FOUND.

  For fundamental resolution we need a framework for guests to query snapshots
  and to mount them as writable snapshots, but we just ignore the error in
  this patchset.

Any feedback are appliciated.

---
Tomoki Sekiyama (11):
      configure: Support configuring c++ compiler
      Fix errors and warnings while compiling with c++ compilier
      Add a script to extract VSS SDK headers on POSIX system
      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                                |    3 
 Makefile.objs                           |    2 
 QMP/qemu-ga-client                      |    4 
 QMP/qmp.py                              |    4 
 configure                               |   59 ++++
 hmp.c                                   |    2 
 hw/pci/pci.c                            |    2 
 qga/Makefile.objs                       |    7 
 qga/commands-win32.c                    |   74 ++++-
 qga/main.c                              |   41 +++
 qga/vss-win32-provider.h                |   26 ++
 qga/vss-win32-provider/Makefile.objs    |   25 ++
 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             |  404 +++++++++++++++++++++++++
 qga/vss-win32-requester.h               |   31 ++
 qga/vss-win32.h                         |   85 +++++
 rules.mak                               |    9 +
 scripts/extract-vsssdk-headers          |   25 ++
 scripts/qapi.py                         |    9 +
 24 files changed, 1796 insertions(+), 15 deletions(-)
 create mode 100644 qga/vss-win32-provider.h
 create mode 100644 qga/vss-win32-provider/Makefile.objs
 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
 create mode 100755 scripts/extract-vsssdk-headers

             reply	other threads:[~2013-05-21 15:39 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-21 15:33 Tomoki Sekiyama [this message]
2013-05-21 15:33 ` [Qemu-devel] [RFC PATCH v3 01/11] configure: Support configuring c++ compiler Tomoki Sekiyama
2013-05-21 16:42   ` Eric Blake
2013-05-21 21:02     ` Tomoki Sekiyama
2013-05-21 16:56   ` Peter Maydell
2013-05-21 21:01     ` Tomoki Sekiyama
2013-05-21 15:33 ` [Qemu-devel] [RFC PATCH v3 02/11] Fix errors and warnings while compiling with c++ compilier Tomoki Sekiyama
2013-05-23 12:12   ` Stefan Hajnoczi
2013-05-23 18:34     ` Tomoki Sekiyama
2013-05-24  8:52       ` Stefan Hajnoczi
2013-05-24 14:20         ` Tomoki Sekiyama
2013-05-24 15:25           ` Markus Armbruster
2013-05-27 11:43             ` Stefan Hajnoczi
2013-05-24 13:01   ` Laszlo Ersek
2013-05-24 14:33     ` Tomoki Sekiyama
2013-05-21 15:33 ` [Qemu-devel] [RFC PATCH v3 03/11] Add a script to extract VSS SDK headers on POSIX system Tomoki Sekiyama
2013-05-21 16:48   ` Eric Blake
2013-05-21 21:02     ` Tomoki Sekiyama
2013-05-24 13:14       ` Laszlo Ersek
2013-05-24 13:38   ` Laszlo Ersek
2013-05-24 15:59     ` Eric Blake
2013-05-24 18:27       ` Laszlo Ersek
2013-05-21 15:33 ` [Qemu-devel] [RFC PATCH v3 04/11] qemu-ga: Add an configure option to specify path to Windows VSS SDK Tomoki Sekiyama
2013-05-21 16:53   ` Eric Blake
2013-05-21 21:02     ` Tomoki Sekiyama
2013-05-24 13:48     ` Laszlo Ersek
2013-05-24 14:03   ` Laszlo Ersek
2013-05-21 15:33 ` [Qemu-devel] [RFC PATCH v3 05/11] qemu-ga: Add Windows VSS provider to quiesce applications on fsfreeze Tomoki Sekiyama
2013-05-23 12:22   ` Stefan Hajnoczi
2013-05-23 18:36     ` Tomoki Sekiyama
2013-05-24  8:54       ` Stefan Hajnoczi
2013-05-24 14:30         ` Tomoki Sekiyama
2013-05-28 21:01       ` Jeff Cody
2013-05-29  7:39         ` Stefan Hajnoczi
2013-05-31  2:15           ` Tomoki Sekiyama
2013-05-21 15:33 ` [Qemu-devel] [RFC PATCH v3 06/11] qemu-ga: Add Windows VSS requester to quisce applications and filesystems Tomoki Sekiyama
2013-05-21 16:56   ` Eric Blake
2013-05-21 21:02     ` Tomoki Sekiyama
2013-05-28 20:17   ` Jeff Cody
2013-05-31  5:06     ` Tomoki Sekiyama
2013-05-21 15:34 ` [Qemu-devel] [RFC PATCH v3 07/11] qemu-ga: call Windows VSS requester in fsfreeze command handler Tomoki Sekiyama
2013-05-21 15:34 ` [Qemu-devel] [RFC PATCH v3 08/11] qemu-ga: install Windows VSS provider on `qemu-ga -s install' Tomoki Sekiyama
2013-05-21 15:34 ` [Qemu-devel] [RFC PATCH v3 09/11] qemu-ga: Add VSS provider .tlb file in the repository Tomoki Sekiyama
2013-05-28 21:07   ` Jeff Cody
2013-05-21 15:34 ` [Qemu-devel] [RFC PATCH v3 10/11] QMP/qemu-ga-client: make timeout longer for guest-fsfreeze-freeze command Tomoki Sekiyama
2013-05-21 15:34 ` [Qemu-devel] [RFC PATCH v3 11/11] QMP/qmp.py: set locale for exceptions to display non-ascii messages correctly Tomoki Sekiyama
2013-05-23 12:30   ` Stefan Hajnoczi
2013-05-24 18:55     ` Tomoki Sekiyama
2013-05-27 12:06       ` Stefan Hajnoczi
2013-05-23 11:05 ` [Qemu-devel] [RFC PATCH v3 00/11] qemu-ga: fsfreeze on Windows using VSS Laszlo Ersek
2013-05-23 17:11   ` Tomoki Sekiyama
2013-05-23 12:15 ` Stefan Hajnoczi
2013-05-23 13:20   ` Paolo Bonzini
2013-05-23 13:28     ` Stefan Hajnoczi
2013-05-23 13:50       ` Paolo Bonzini
2013-05-24  8:59         ` Stefan Hajnoczi
2013-05-24 12:08           ` Paolo Bonzini
2013-05-24  9:20         ` Stefan Hajnoczi
2013-05-27  4:13 ` Libaiqing
2013-05-27  7:01   ` Tomoki Sekiyama
2013-05-27 10:00     ` Libaiqing
2013-05-31  1:30 ` Libaiqing
2013-05-31  2:20   ` Tomoki Sekiyama
2013-06-03  9:12     ` Libaiqing
2013-06-03 12:20       ` Luiz Capitulino

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130521153333.4880.74390.stgit@hds.com \
    --to=tomoki.sekiyama@hds.com \
    --cc=areis@redhat.com \
    --cc=lcapitulino@redhat.com \
    --cc=mdroth@linux.vnet.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=seiji.aguchi@hds.com \
    --cc=vrozenfe@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.