Hi, I tried the patch v3,with the following config. Guest os : win7 32bit professional Host os : fedora 17 Command: qemu-kvm -enable-kvm -name win7 -M pc-0.15 -m 1024 -smp 2 -boot c -device virtio-serial -drive file=/home/libaiqing/vss/win7.img,if=virtio,index=0,format=qcow2 - -monitor stdio -vga qxl -vnc :1 -chardev socket,id=charchannel0,path=/var/lib/libvirt/qemu/wahaha1_requester,server,nowait -device virtserialport,chardev=charchannel0,id=channel0,name=org.qemu.guest_agent.0 Output: [root@fedora121 ~]# socat stdio,ignoreeof unix-connect:/var/lib/libvirt/qemu/wahaha1_requester {"execute":"guest-fsfreeze-freeze"} {"return": 2} {"execute":"guest-fsfreeze-status"} {"return": "frozen"} {"execute":"guest-fsfreeze-thaw"} {"error": {"class": "GenericError", "desc": "DoSnapshotSet. (Error: 8004230f) "}} {"execute":"guest-fsfreeze-status"} {"return": "thawed"} {"execute":"guest-fsfreeze-freeze"} {"return": 2} {"execute":"guest-fsfreeze-status"} {"return": "frozen"} {"execute":"guest-fsfreeze-thaw"} {"error": {"class": "GenericError", "desc": "DoSnapshotSet. (Error: 80042314) "}} {"execute":"guest-fsfreeze-status"} {"return": "thawed"}
Issue: 1 Extcuting the command "guest-fsfreeze-thaw" failed,but the fs status is changed to thawed.Is this ok? 2 Extcuting the command "guest-fsfreeze-thaw" twice,the desc is different each time. Could you give me some advise to debug this problem ? I can provide more information if need. Regards, baiqing > -----Original Message----- > From: qemu-devel-bounces+libaiqing=huawei....@nongnu.org > [mailto:qemu-devel-bounces+libaiqing=huawei....@nongnu.org] On Behalf Of > Tomoki Sekiyama > Sent: Tuesday, May 21, 2013 11:34 PM > To: qemu-devel@nongnu.org > Cc: mdr...@linux.vnet.ibm.com; lcapitul...@redhat.com; > vroze...@redhat.com; pbonz...@redhat.com; seiji.agu...@hds.com; > ar...@redhat.com > Subject: [Qemu-devel] [RFC PATCH v3 00/11] qemu-ga: fsfreeze on Windows > using VSS > > 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 >