[libvirt] [PATCH] [libvirt-perl] Add missing $flags arguments to documentation
by Guido Günther
Hi,
when looking at the DomainSnapshot docs I wondered if these also take
the flags argument as the other functions so I went ahead and updated
the docs after checking the source.
Cheers,
-- Guido
---
lib/Sys/Virt/DomainSnapshot.pm | 16 ++++++++++------
1 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/lib/Sys/Virt/DomainSnapshot.pm b/lib/Sys/Virt/DomainSnapshot.pm
index 1c4a008..5b7204b 100644
--- a/lib/Sys/Virt/DomainSnapshot.pm
+++ b/lib/Sys/Virt/DomainSnapshot.pm
@@ -60,18 +60,22 @@ sub _new {
return $self;
}
-=item my $xml = $dom->get_xml_description()
+=item my $xml = $dom->get_xml_description($flags)
Returns an XML document containing a complete description of
-the domain's configuration
+the domain's configuration.
-=item $dom->delete()
+=item $dom->delete($flags)
-Deletes this snapshot object & its datra
+Deletes this snapshot object & its data. The optional C<$flags> parameter controls
+what should be deleted via the C<Sys::Virt::DomainSnapshot::DELETE_*>
+constants.
-=item $dom->revert_to()
+=item $dom->revert_to($flags)
-Revert the domain to the state associated with this snapshot
+Revert the domain to the state associated with this snapshot. The optional
+C<$flags> control the state of the vm after the revert via the
+C<Sys::Virt::DomainSnapshot::REVERT_*> constants.
=back
--
1.7.6.3
13 years, 2 months
[libvirt] build: fail to 'make distcheck'
by Wenyi Gao
Hi All,
I failed to 'make distcheck' on Ubuntu 11.04 with the following
information:
................................. 33 OK
PASS: nwfilterschematest
TEST: domainsnapshotschematest
........... 11 OK
PASS: domainsnapshotschematest
TEST: test_conf.sh
.. 2 OK
PASS: test_conf.sh
PASS: cpuset
TEST: daemon-conf
.....!!!!!!...!!!!!!!!!!!!!!!!!!!kill: 98: No such process
! 34 FAILED
FAIL: daemon-conf
PASS: define-dev-segfault
PASS: int-overflow
PASS: libvirtd-fail
PASS: libvirtd-pool
PASS: read-bufsiz
PASS: read-non-seekable
PASS: start
PASS: undefine
PASS: vcpupin
TEST: virsh-all
........................................ 40
........................................ 80
........................................ 120
........................................ 160
............ 172 OK
PASS: virsh-all
PASS: virsh-optparse
PASS: virsh-schedinfo
PASS: virsh-synopsis
TEST: xml2sexprtest
........................................ 40
............. 53 OK
PASS: xml2sexprtest
TEST: sexpr2xmltest
........................................ 40
.......... 50 OK
PASS: sexpr2xmltest
TEST: xmconfigtest
........................................ 40
.......................... 66 OK
PASS: xmconfigtest
TEST: xencapstest
.......... 10 OK
PASS: xencapstest
TEST: reconnect
SKIP: reconnect
TEST: statstest
SKIP: statstest
TEST: qemuxml2argvtest
........................................ 40
........................................ 80
........................................ 120
........................................ 160
. 161 OK
PASS: qemuxml2argvtest
TEST: qemuxml2xmltest
........................................ 40
...................................... 78 OK
PASS: qemuxml2xmltest
TEST: qemuargv2xmltest
........................................ 40
........................ 64 OK
PASS: qemuargv2xmltest
TEST: qemuhelptest
............ 12 OK
PASS: qemuhelptest
TEST: nwfilterxml2xmltest
................................. 33 OK
PASS: nwfilterxml2xmltest
TEST: openvzutilstest
.. 2 OK
PASS: openvzutilstest
TEST: vmx2xmltest
........................................ 40
...... 46 OK
PASS: vmx2xmltest
TEST: xml2vmxtest
........................................ 40
. 41 OK
PASS: xml2vmxtest
TEST: eventtest
............... 15 OK
PASS: eventtest
TEST: networkxml2xmltest
............ 12 OK
PASS: networkxml2xmltest
TEST: networkxml2argvtest
....... 7 OK
PASS: networkxml2argvtest
TEST: storagevolxml2xmltest
...... 6 OK
PASS: storagevolxml2xmltest
TEST: storagepoolxml2xmltest
............ 12 OK
PASS: storagepoolxml2xmltest
TEST: nodedevxml2xmltest
............. 13 OK
PASS: nodedevxml2xmltest
TEST: interfacexml2xmltest
................... 19 OK
PASS: interfacexml2xmltest
TEST: cputest
........................................ 40
................. 57 OK
PASS: cputest
=======================================
1 of 58 tests failed
(2 tests were not run)
Please report to libvir-list(a)redhat.com
=======================================
Does anyone experience the problem or do I miss some packages? Thanks.
Regards
Wenyi Gao
13 years, 2 months
[libvirt] [PATCH v3] Introduce <driver> under <filesystem> to support open-by-handle.
by Harsh Prateek Bora
VirtFS allows the user to choose between path/handle based fs driver.
As of now, libvirt hardcode to use path based driver only. This patch provides
a solution to allow user to choose between path/handle based fs driver.
Sample:
<filesystem type='mount'>
<driver type='handle'/>
<source dir='/folder/to/share1'/>
<target dir='mount_tag1'/>
</filesystem>
<filesystem type='mount'>
<driver type='path'/>
<source dir='/folder/to/share2'/>
<target dir='mount_tag2'/>
</filesystem>
Signed-off-by: Harsh Prateek Bora <harsh(a)linux.vnet.ibm.com>
v3:
- use enum for fs driver type (qemuDomainFSDriver)
v2:
- use 'path' instead of 'local' in xml terminology
- added default enum for optional driver type
---
docs/schemas/domaincommon.rng | 9 +++++++++
src/conf/domain_conf.c | 24 ++++++++++++++++++++++++
src/conf/domain_conf.h | 11 +++++++++++
src/qemu/qemu_command.c | 15 ++++++++++++++-
4 files changed, 58 insertions(+), 1 deletions(-)
diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
index 492a41d..3937393 100644
--- a/docs/schemas/domaincommon.rng
+++ b/docs/schemas/domaincommon.rng
@@ -1025,6 +1025,15 @@
</choice>
<optional>
<ref name="address"/>
+ <element name="driver">
+ <attribute name="type">
+ <choice>
+ <value>path</value>
+ <value>handle</value>
+ </choice>
+ </attribute>
+ <empty/>
+ </element>
<attribute name="accessmode">
<choice>
<value>passthrough</value>
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index a537251..ede1f01 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -238,6 +238,11 @@ VIR_ENUM_IMPL(virDomainFS, VIR_DOMAIN_FS_TYPE_LAST,
"file",
"template")
+VIR_ENUM_IMPL(virDomainFSDriverType, VIR_DOMAIN_FS_DRIVER_TYPE_LAST,
+ "default",
+ "path",
+ "handle")
+
VIR_ENUM_IMPL(virDomainFSAccessMode, VIR_DOMAIN_FS_ACCESSMODE_LAST,
"passthrough",
"mapped",
@@ -2828,6 +2833,7 @@ virDomainFSDefParseXML(xmlNodePtr node,
virDomainFSDefPtr def;
xmlNodePtr cur;
char *type = NULL;
+ char *fsdriver = NULL;
char *source = NULL;
char *target = NULL;
char *accessmode = NULL;
@@ -2878,11 +2884,23 @@ virDomainFSDefParseXML(xmlNodePtr node,
target = virXMLPropString(cur, "dir");
} else if (xmlStrEqual(cur->name, BAD_CAST "readonly")) {
def->readonly = 1;
+ } else if ((fsdriver == NULL) && (xmlStrEqual(cur->name, BAD_CAST "driver"))) {
+ fsdriver = virXMLPropString(cur, "type");
}
}
cur = cur->next;
}
+ if (fsdriver) {
+ if ((def->fsdriver = virDomainFSDriverTypeTypeFromString(fsdriver)) < 0) {
+ virDomainReportError(VIR_ERR_INTERNAL_ERROR,
+ _("unknown fs driver type '%s'"), fsdriver);
+ goto error;
+ }
+ } else {
+ def->fsdriver = VIR_DOMAIN_FS_DRIVER_TYPE_PATH;
+ }
+
if (source == NULL) {
virDomainReportError(VIR_ERR_NO_SOURCE,
target ? "%s" : NULL, target);
@@ -2905,6 +2923,7 @@ virDomainFSDefParseXML(xmlNodePtr node,
cleanup:
VIR_FREE(type);
+ VIR_FREE(fsdriver);
VIR_FREE(target);
VIR_FREE(source);
VIR_FREE(accessmode);
@@ -9351,6 +9370,7 @@ virDomainFSDefFormat(virBufferPtr buf,
{
const char *type = virDomainFSTypeToString(def->type);
const char *accessmode = virDomainFSAccessModeTypeToString(def->accessmode);
+ const char *fsdriver = virDomainFSDriverTypeTypeToString(def->fsdriver);
if (!type) {
virDomainReportError(VIR_ERR_INTERNAL_ERROR,
@@ -9369,6 +9389,10 @@ virDomainFSDefFormat(virBufferPtr buf,
" <filesystem type='%s' accessmode='%s'>\n",
type, accessmode);
+ if (def->fsdriver) {
+ virBufferAsprintf(buf, " <driver type='%s'/>\n", fsdriver);
+ }
+
if (def->src) {
switch (def->type) {
case VIR_DOMAIN_FS_TYPE_MOUNT:
diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
index e07fd2f..4f8993b 100644
--- a/src/conf/domain_conf.h
+++ b/src/conf/domain_conf.h
@@ -368,6 +368,15 @@ enum virDomainFSType {
VIR_DOMAIN_FS_TYPE_LAST
};
+/* Filesystem driver type */
+enum virDomainFSDriverType {
+ VIR_DOMAIN_FS_DRIVER_TYPE_DEFAULT = 0,
+ VIR_DOMAIN_FS_DRIVER_TYPE_PATH,
+ VIR_DOMAIN_FS_DRIVER_TYPE_HANDLE,
+
+ VIR_DOMAIN_FS_DRIVER_TYPE_LAST
+};
+
/* Filesystem mount access mode */
enum virDomainFSAccessMode {
VIR_DOMAIN_FS_ACCESSMODE_PASSTHROUGH,
@@ -381,6 +390,7 @@ typedef struct _virDomainFSDef virDomainFSDef;
typedef virDomainFSDef *virDomainFSDefPtr;
struct _virDomainFSDef {
int type;
+ int fsdriver;
int accessmode;
char *src;
char *dst;
@@ -1856,6 +1866,7 @@ VIR_ENUM_DECL(virDomainController)
VIR_ENUM_DECL(virDomainControllerModelSCSI)
VIR_ENUM_DECL(virDomainControllerModelUSB)
VIR_ENUM_DECL(virDomainFS)
+VIR_ENUM_DECL(virDomainFSDriverType)
VIR_ENUM_DECL(virDomainFSAccessMode)
VIR_ENUM_DECL(virDomainNet)
VIR_ENUM_DECL(virDomainNetBackend)
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index cf99f89..b4f4bd8 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -100,6 +100,12 @@ VIR_ENUM_IMPL(qemuControllerModelUSB, VIR_DOMAIN_CONTROLLER_MODEL_USB_LAST,
"vt82c686b-usb-uhci",
"pci-ohci");
+VIR_ENUM_DECL(qemuDomainFSDriver)
+VIR_ENUM_IMPL(qemuDomainFSDriver, VIR_DOMAIN_FS_DRIVER_TYPE_LAST,
+ "local",
+ "local",
+ "handle");
+
static void
uname_normalize (struct utsname *ut)
@@ -1811,6 +1817,7 @@ char *qemuBuildFSStr(virDomainFSDefPtr fs,
virBitmapPtr qemuCaps ATTRIBUTE_UNUSED)
{
virBuffer opt = VIR_BUFFER_INITIALIZER;
+ const char *driver = qemuDomainFSDriverTypeToString(fs->fsdriver);
if (fs->type != VIR_DOMAIN_FS_TYPE_MOUNT) {
qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
@@ -1818,7 +1825,13 @@ char *qemuBuildFSStr(virDomainFSDefPtr fs,
goto error;
}
- virBufferAddLit(&opt, "local");
+ if (!driver) {
+ qemuReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("Filesystem driver type not supported"));
+ goto error;
+ }
+ virBufferAdd(&opt, driver, -1);
+
if (fs->accessmode == VIR_DOMAIN_FS_ACCESSMODE_MAPPED) {
virBufferAddLit(&opt, ",security_model=mapped");
} else if(fs->accessmode == VIR_DOMAIN_FS_ACCESSMODE_PASSTHROUGH) {
--
1.7.1.1
13 years, 2 months
[libvirt] [PATCH 0/5 v2] Improve Ceph Qemu+RBD support
by Sage Weil
The current support for qemu and Ceph RBD (rados block device) has two
main deficiencies: authentication doesn't work, and it relies on
environment variables (which don't work with latest upstream). This
patch set addresses both those problems.
The first two patches update the xml schemas and conf to add a Ceph
secret type and to specify authentication information along with the rbd
disk.
The next two patches make some libvirt changes. We pass virConnectPtr
down into the Domain{Attach,Detach} methods (needed to access secrets
while building the qemu command), and add a helper that will escape
arbitrary characters.
The final patch replaces the current RBD qemu code and uses the new conf
info to do authentication properly. (We still need to make a change
there to avoid having the authentication key show up on qemu command
line; I'll clean that up shortly.)
Comments on this approach?
Thanks!
sage
Changes from v1:
update docs/schemas/{domain,secret}.rng
Sage Weil (5):
secret: add Ceph secret type
storage: add authId, authDomain to virDomainDiskDef
qemu: pass virConnectPtr into Domain{Attach,Detach}*
buf: implement generic virBufferEscape
qemu/rbd: improve rbd device specification
docs/schemas/domain.rng | 6 +
docs/schemas/secret.rng | 17 ++
include/libvirt/libvirt.h.in | 3 +
src/conf/domain_conf.c | 43 +++-
src/conf/domain_conf.h | 2 +
src/conf/secret_conf.c | 45 ++++-
src/conf/secret_conf.h | 1 +
src/libvirt_private.syms | 1 +
src/qemu/qemu_command.c | 273 +++++++++++---------
src/qemu/qemu_command.h | 3 +-
src/qemu/qemu_driver.c | 17 +-
src/qemu/qemu_hotplug.c | 15 +-
src/qemu/qemu_hotplug.h | 9 +-
src/secret/secret_driver.c | 8 +
src/util/buf.c | 33 ++-
src/util/buf.h | 1 +
.../qemuxml2argv-disk-drive-network-rbd.args | 6 +-
.../qemuxml2argv-disk-drive-network-rbd.xml | 1 +
18 files changed, 328 insertions(+), 156 deletions(-)
--
1.7.4.1
>From 498cd06b76bbb4415a2f81f9d169f267ff99329c Mon Sep 17 00:00:00 2001
From: Sage Weil <sage(a)newdream.net>
Date: Thu, 15 Sep 2011 13:47:40 -0700
Subject: [PATCH 0/5] Improve Ceph Qemu+RBD support
The current support for qemu and Ceph RBD (rados block device) has two
main deficiencies: authentication doesn't work, and it relies on
environment variables (which don't work with latest upstream).
This patch set addresses both those problems, while trying to integrate as
cleanly as possible with the rest of libvirt.
The first few patches make some changes to libvirt itself: adding a CEPH
secret type (for Ceph/RBD authentication), adding authentication fields
to the XML schema, passing the virConnectPtr into the
Domain{Attach,Detach} methods (needed to access secrets while building
the qemu command), a helper that will escape arbitrary characters, and
finally a patch that replaces the current RBD qemu code.
Comments on this approach?
Thanks!
sage
Sage Weil (5):
secret: add Ceph secret type
storage: add authId, authDomain to virDomainDiskDef
qemu: pass virConnectPtr into Domain{Attach,Detach}*
buf: implement generic virBufferEscape
qemu/rbd: improve rbd device specification
include/libvirt/libvirt.h.in | 3 +
src/conf/domain_conf.c | 43 +++-
src/conf/domain_conf.h | 2 +
src/conf/secret_conf.c | 45 ++++-
src/conf/secret_conf.h | 1 +
src/libvirt_private.syms | 1 +
src/qemu/qemu_command.c | 273 +++++++++++---------
src/qemu/qemu_command.h | 3 +-
src/qemu/qemu_driver.c | 17 +-
src/qemu/qemu_hotplug.c | 15 +-
src/qemu/qemu_hotplug.h | 9 +-
src/secret/secret_driver.c | 8 +
src/util/buf.c | 33 ++-
src/util/buf.h | 1 +
.../qemuxml2argv-disk-drive-network-rbd.args | 6 +-
.../qemuxml2argv-disk-drive-network-rbd.xml | 1 +
16 files changed, 305 insertions(+), 156 deletions(-)
--
1.7.4.1
13 years, 2 months
[libvirt] [PATCH] daemon: Always advertise libvirtd service
by Osier Yang
This is a regression introduced by new RPC codes, previously
we advertise the service via ssh even if the daemon doesn't
listen on TLS port (TCP is not choosed). Now the service is
only advertised when it listens on TLS or TCP port. This breaks
upper layer apps which intends to discover the service, such
as virt-manager.
---
daemon/libvirtd.c | 6 ++++++
src/rpc/virnetserver.c | 22 ++++++++++++++--------
2 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/daemon/libvirtd.c b/daemon/libvirtd.c
index d1bc3dd..aa58121 100644
--- a/daemon/libvirtd.c
+++ b/daemon/libvirtd.c
@@ -531,6 +531,12 @@ static int daemonSetupNetworking(virNetServerPtr srv,
virNetTLSContextFree(ctxt);
}
+ } else {
+ if (virNetServerAddService(srv, NULL,
+ config->mdns_adv ?
+ "_libvirt._tcp" :
+ NULL) < 0)
+ goto error;
}
#if HAVE_SASL
diff --git a/src/rpc/virnetserver.c b/src/rpc/virnetserver.c
index f739743..3cf36bc 100644
--- a/src/rpc/virnetserver.c
+++ b/src/rpc/virnetserver.c
@@ -582,12 +582,16 @@ int virNetServerAddService(virNetServerPtr srv,
{
virNetServerLock(srv);
- if (VIR_EXPAND_N(srv->services, srv->nservices, 1) < 0)
- goto no_memory;
+ if (svc) {
+ if (VIR_EXPAND_N(srv->services, srv->nservices, 1) < 0)
+ goto no_memory;
+ }
#if HAVE_AVAHI
if (mdnsEntryName) {
- int port = virNetServerServiceGetPort(svc);
+ int port = 0;
+ if (svc)
+ port = virNetServerServiceGetPort(svc);
if (!virNetServerMDNSAddEntry(srv->mdnsGroup,
mdnsEntryName,
@@ -596,12 +600,14 @@ int virNetServerAddService(virNetServerPtr srv,
}
#endif
- srv->services[srv->nservices-1] = svc;
- virNetServerServiceRef(svc);
+ if (svc) {
+ srv->services[srv->nservices-1] = svc;
+ virNetServerServiceRef(svc);
- virNetServerServiceSetDispatcher(svc,
- virNetServerDispatchNewClient,
- srv);
+ virNetServerServiceSetDispatcher(svc,
+ virNetServerDispatchNewClient,
+ srv);
+ }
virNetServerUnlock(srv);
return 0;
--
1.7.6
13 years, 2 months
Re: [libvirt] [PATCH] Make saving domain XML more robust
by lvroyce
tested-by: Royce Lv <lvroyce(a)linux.vnet.ibm.com>
Patch works as expected.Use setmaxmem cmd,tested cases of set mem
success ,writing tmp config file failure and rename failure.old xml file
reserves in case of failure so still can be used,and tmp config file
cleared leaving no trash to xml folder.
13 years, 2 months
[libvirt] [RFC PATCH 0/5] Summary on QEMU I/O throttling support to libvirt
by Lei Li
Today libvirt supports the cgroups blkio-controller, which handles
proportional shares and throughput/iops limits on host block devices.
blkio-controller does not support network file systems (NFS) or other
QEMU remote block drivers (curl, Ceph/rbd, sheepdog) since they are
not host block devices. QEMU I/O throttling works with all types of
drive and can be applied independently to each drive attached to
a guest and supports throughput/iops limits.
To help add QEMU I/O throttling support to libvirt, we plan to complete
it with add new API virDomainBlockIoThrottle(), new command 'blkiothrottle'
and Python bindings.
Notes: we are sending this series out now(even though they are not completed
yet.)because we want to start the review process. These patches implemented
the below features by Zhi Yong Wu:
1) Enable the blkio throttling in xml when guest is starting up.
Add blkio throttling in xml as follows:
<disk type='file' device='disk'>
<driver name='qemu' type='raw'/>
<source file='/var/lib/libvirt/images/kvm-one.img'/>
<target dev='vda' bus='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
<iothrottle bps='100000' bps_rd='20000'.../>
</disk>
2) Enable blkio throttling setting at guest running time.
virsh blkiothrottle<domain> <device> [--bps<number>] [--bps_rd<number>] \
[--bps_wr<number>] [--iops<number>] [--iops_rd<number>] [--iops_wr<number>]
[PATCH 1/5] Add new API virDomainBlockIoThrottle.
[PATCH 2/5] Add virDomainBlockIoThrottle support to the remote driver.
[PATCH 3/5] Implement virDomainBlockIoThrottle for the qemu driver.
[PATCH 4/5] Enable the virDomainBlockIoThrottle API in virsh.
[PATCH 5/5] Enable virDomainBlockIoThrottle in the python API.
And I will address feedback and work on the missing features in few days includes:
3) The support to display the setting for block i/o throttling - HMP/QMP
4) Python binding support.
5) --current --live --config options support to unify the libvirt API.
--
Lei
13 years, 2 months
[libvirt] [PATCH 0/4] snapshot: optimize qemu relationship traversal
by Eric Blake
After working with ESX and VBox, I realized that a tweak to how
snapshot relationships are stored would speed things up from O(n^2)
to O(n). The hash table must be kept for name lookup, but the
speedup comes by tracking relationships with each snapshot rather
than crawling the entire hash table rebuilding those relations
for every operation that needs particular relations.
Eric Blake (4):
snapshot: framework for more efficient relation traversal
snapshot: track qemu snapshot relations
snapshot: take advantage of new relations
snapshot: drop dead parameters
src/conf/domain_conf.c | 266 +++++++++++++++++++++++++---------------------
src/conf/domain_conf.h | 22 ++--
src/libvirt_private.syms | 3 +-
src/qemu/qemu_driver.c | 84 +++++++++++----
4 files changed, 224 insertions(+), 151 deletions(-)
--
1.7.4.4
13 years, 2 months
[libvirt] [PATCH] snapshot: use correct qmp monitor command
by Eric Blake
To date, disk snapshots worked by accident, as they were always
using hmp fallback due to a typo in commit e702b5b not picking up
on the (intentional) difference in command names between the two
monitor protocols.
* src/qemu/qemu_monitor_json.c (qemuMonitorJSONDiskSnapshot):
Spell QMP command correctly.
Reported by Luiz Capitulino.
---
How embarrassing. http://wiki.qemu.org/Features/Snapshots
even called out the difference in naming.
src/qemu/qemu_monitor_json.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
index 3d383c8..18d1c9f 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -2960,7 +2960,7 @@ qemuMonitorJSONDiskSnapshot(qemuMonitorPtr mon, const char *device,
virJSONValuePtr cmd;
virJSONValuePtr reply = NULL;
- cmd = qemuMonitorJSONMakeCommand("snapshot-blkdev-sync",
+ cmd = qemuMonitorJSONMakeCommand("blockdev-snapshot-sync",
"s:device", device,
"s:snapshot-file", file,
NULL);
@@ -2972,7 +2972,7 @@ qemuMonitorJSONDiskSnapshot(qemuMonitorPtr mon, const char *device,
if (qemuMonitorJSONHasError(reply, "CommandNotFound") &&
qemuMonitorCheckHMP(mon, "snapshot_blkdev")) {
- VIR_DEBUG("snapshot-blkdev-sync command not found, trying HMP");
+ VIR_DEBUG("blockdev-snapshot-sync command not found, trying HMP");
ret = qemuMonitorTextDiskSnapshot(mon, device, file);
goto cleanup;
}
--
1.7.4.4
13 years, 2 months
[libvirt] [PATCHv2 0/7] snapshot: listing children
by Eric Blake
Cleaned up the rebase goofs present throughout my v1:
https://www.redhat.com/archives/libvir-list/2011-September/msg01270.html
Eric Blake (7):
snapshot: new virDomainSnapshotListChildrenNames API
snapshot: virsh snapshot-list and children
snapshot: virsh fallback for snapshot-list --tree --from
snapshot: virsh fallback for snapshot-list --from children
snapshot: virsh fallback for snapshot-list --descendants --from
snapshot: remote protocol for snapshot children
snapshot: implement snapshot children listing in qemu
include/libvirt/libvirt.h.in | 27 +++++--
python/generator.py | 4 +
python/libvirt-override-api.xml | 12 ++-
python/libvirt-override.c | 45 +++++++++
src/conf/domain_conf.c | 51 +++++++++++
src/conf/domain_conf.h | 7 ++
src/driver.h | 12 +++
src/libvirt.c | 111 +++++++++++++++++++++++
src/libvirt_private.syms | 2 +
src/libvirt_public.syms | 2 +
src/qemu/qemu_driver.c | 87 ++++++++++++++++++
src/remote/remote_driver.c | 2 +
src/remote/remote_protocol.x | 25 +++++-
src/remote_protocol-structs | 20 ++++
tools/virsh.c | 190 ++++++++++++++++++++++++++++++++------
tools/virsh.pod | 9 ++-
16 files changed, 564 insertions(+), 42 deletions(-)
--
1.7.4.4
13 years, 2 months