[libvirt] [PATCH 3/3] all: replacing virGetLastError with virGetLastErrorCode where we can

2018-05-05 Thread ramyelkest
Replaced instances where we called virGetLastError just to
either get the code or to check if an error exists with
virGetLastErrorCode to avoid a validity pre-check.

Signed-off-by: Ramy Elkest 
---
 src/locking/lock_driver_lockd.c |  3 +--
 src/lxc/lxc_controller.c|  4 +---
 src/qemu/qemu_agent.c   |  3 +--
 src/qemu/qemu_conf.c|  3 +--
 src/qemu/qemu_domain.c  |  2 +-
 src/qemu/qemu_driver.c  | 12 ++--
 src/qemu/qemu_hotplug.c |  2 +-
 src/qemu/qemu_migration.c   |  4 ++--
 src/qemu/qemu_monitor.c |  5 ++---
 src/qemu/qemu_monitor_json.c|  2 +-
 src/qemu/qemu_process.c |  4 ++--
 src/remote/remote_driver.c  |  3 +--
 src/rpc/virnetclient.c  |  2 +-
 src/rpc/virnetlibsshsession.c   |  4 +---
 src/util/virmodule.c|  3 +--
 src/util/virxml.c   |  4 ++--
 tests/commandtest.c |  2 +-
 tests/testutils.c   |  6 ++
 tests/virhostcputest.c  |  2 +-
 tests/virstoragetest.c  |  8 
 tools/virsh-domain-monitor.c|  7 +++
 tools/virsh-domain.c|  4 +---
 tools/virsh-util.c  |  3 +--
 tools/vsh.c |  2 +-
 24 files changed, 39 insertions(+), 55 deletions(-)

diff --git a/src/locking/lock_driver_lockd.c b/src/locking/lock_driver_lockd.c
index c3fc18a..957a963 100644
--- a/src/locking/lock_driver_lockd.c
+++ b/src/locking/lock_driver_lockd.c
@@ -302,8 +302,7 @@ static int virLockManagerLockDaemonSetupLockspace(const 
char *path)
 0, NULL, NULL, NULL,
 
(xdrproc_t)xdr_virLockSpaceProtocolCreateLockSpaceArgs, (char*),
 (xdrproc_t)xdr_void, NULL) < 0) {
-virErrorPtr err = virGetLastError();
-if (err && err->code == VIR_ERR_OPERATION_INVALID) {
+if (virGetLastErrorCode() == VIR_ERR_OPERATION_INVALID) {
 /* The lockspace already exists */
 virResetLastError();
 rv = 0;
diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c
index d5636b8..e1ee864 100644
--- a/src/lxc/lxc_controller.c
+++ b/src/lxc/lxc_controller.c
@@ -1297,7 +1297,6 @@ static void virLXCControllerConsoleIO(int watch, int fd, 
int events, void *opaqu
  */
 static int virLXCControllerMain(virLXCControllerPtr ctrl)
 {
-virErrorPtr err;
 int rc = -1;
 size_t i;
 
@@ -1349,8 +1348,7 @@ static int virLXCControllerMain(virLXCControllerPtr ctrl)
 
 virNetDaemonRun(ctrl->daemon);
 
-err = virGetLastError();
-if (!err || err->code == VIR_ERR_OK)
+if (!virGetLastErrorCode())
 rc = wantReboot ? 1 : 0;
 
  cleanup:
diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c
index 4df1bde..1fb31a7 100644
--- a/src/qemu/qemu_agent.c
+++ b/src/qemu/qemu_agent.c
@@ -686,8 +686,7 @@ qemuAgentIO(int watch, int fd, int events, void *opaque)
 /* Already have an error, so clear any new error */
 virResetLastError();
 } else {
-virErrorPtr err = virGetLastError();
-if (!err)
+if (!virGetLastErrorCode())
 virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Error while processing monitor IO"));
 virCopyLastError(>lastError);
diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
index bfbb572..a09532d 100644
--- a/src/qemu/qemu_conf.c
+++ b/src/qemu/qemu_conf.c
@@ -297,8 +297,7 @@ virQEMUDriverConfigPtr virQEMUDriverConfigNew(bool 
privileged)
 if (privileged &&
 virFileFindHugeTLBFS(>hugetlbfs, >nhugetlbfs) < 0) {
 /* This however is not implemented on all platforms. */
-virErrorPtr err = virGetLastError();
-if (err && err->code != VIR_ERR_NO_SUPPORT)
+if (virGetLastErrorCode() != VIR_ERR_NO_SUPPORT)
 goto error;
 }
 
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 727ea33..128f1a0 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -6063,7 +6063,7 @@ int qemuDomainObjExitMonitor(virQEMUDriverPtr driver,
 {
 qemuDomainObjExitMonitorInternal(driver, obj);
 if (!virDomainObjIsActive(obj)) {
-if (!virGetLastError())
+if (!virGetLastErrorCode())
 virReportError(VIR_ERR_OPERATION_FAILED, "%s",
_("domain is no longer running"));
 return -1;
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 83fc191..bd776e0 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -1929,7 +1929,7 @@ static int qemuDomainResume(virDomainPtr dom)
 if (qemuProcessStartCPUs(driver, vm,
  VIR_DOMAIN_RUNNING_UNPAUSED,
  QEMU_ASYNC_JOB_NONE) < 0) {
-if (virGetLastError() == NULL)
+if (!virGetLastErrorCode())
 virReportError(VIR_ERR_OPERATION_FAILED,
 

[libvirt] [PATCH 2/3] util: added virGetLastErrorCode/Domain

2018-05-05 Thread ramyelkest
Many places in the code call virGetLastError() just to check the
raised error code, or domain. However virGetLastError() can return
NULL, so the code has to check for that first. This patch therefore
introduces virGetLasErrorCode/Domain function which always returns a
valid error code/domain respectively, thus dropping the need to
perform any checks on the error object.

Signed-off-by: Ramy Elkest 
---
 include/libvirt/virterror.h |  2 ++
 src/libvirt_public.syms |  6 ++
 src/util/virerror.c | 42 ++
 3 files changed, 50 insertions(+)

diff --git a/include/libvirt/virterror.h b/include/libvirt/virterror.h
index 3e7c7a0..5e58b6a 100644
--- a/include/libvirt/virterror.h
+++ b/include/libvirt/virterror.h
@@ -344,6 +344,8 @@ voidvirResetLastError   (void);
 voidvirResetError   (virErrorPtr err);
 voidvirFreeError(virErrorPtr err);
 
+int virGetLastErrorCode (void);
+int virGetLastErrorDomain   (void);
 const char *virGetLastErrorMessage  (void);
 
 virErrorPtr virConnGetLastError (virConnectPtr conn);
diff --git a/src/libvirt_public.syms b/src/libvirt_public.syms
index 95df3a0..85b6b6d 100644
--- a/src/libvirt_public.syms
+++ b/src/libvirt_public.syms
@@ -785,4 +785,10 @@ LIBVIRT_4.1.0 {
 virStoragePoolLookupByTargetPath;
 } LIBVIRT_3.9.0;
 
+LIBVIRT_4.4.0 {
+global:
+virGetLastErrorCode;
+virGetLastErrorDomain;
+} LIBVIRT_4.1.0;
+
 #  define new API here using predicted next version number 
diff --git a/src/util/virerror.c b/src/util/virerror.c
index c000b00..842fc49 100644
--- a/src/util/virerror.c
+++ b/src/util/virerror.c
@@ -272,6 +272,48 @@ virGetLastError(void)
 
 
 /**
+ * virGetLastErrorCode:
+ *
+ * Get the most recent error code
+ *
+ * The error object is kept in thread local storage, so separate
+ * threads can safely access this concurrently.
+ *
+ * Returns the most recent error code in this thread,
+ * or VIR_ERR_OK if none is set
+ */
+int
+virGetLastErrorCode(void)
+{
+virErrorPtr err = virLastErrorObject();
+if (!err)
+return VIR_ERR_OK;
+return err->code;
+}
+
+
+/**
+ * virGetLastErrorDomain:
+ *
+ * Get the most recent error domain
+ *
+ * The error object is kept in thread local storage, so separate
+ * threads can safely access this concurrently.
+ *
+ * Returns the most recent error code in this thread,
+ * or VIR_FROM_NONE if none is set
+ */
+int
+virGetLastErrorDomain(void)
+{
+virErrorPtr err = virLastErrorObject();
+if (!err)
+return VIR_FROM_NONE;
+return err->domain;
+}
+
+
+/**
  * virGetLastErrorMessage:
  *
  * Get the most recent error message
-- 
2.7.4

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


[libvirt] [PATCH 1/3] util: cleanup: using virGetLastErrorMessage instead of err->message

2018-05-05 Thread ramyelkest
Signed-off-by: Ramy Elkest 
---
 src/util/virfilecache.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/src/util/virfilecache.c b/src/util/virfilecache.c
index dab7216..96ae96d 100644
--- a/src/util/virfilecache.c
+++ b/src/util/virfilecache.c
@@ -157,9 +157,8 @@ virFileCacheLoad(virFileCachePtr cache,
 }
 
 if (!(loadData = cache->handlers.loadFile(file, name, cache->priv))) {
-virErrorPtr err = virGetLastError();
 VIR_WARN("Failed to load cached data from '%s' for '%s': %s",
- file, name, err ? NULLSTR(err->message) : "unknown error");
+ file, name, virGetLastErrorMessage());
 virResetLastError();
 ret = 0;
 goto cleanup;
-- 
2.7.4

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


[libvirt] [PATCH v2 0/3] adding virGetLastErrorCode/Domain to paritally replace virGetLastError

2018-05-05 Thread ramyelkest
Changes from v1[1]:

* removed virHasLastError() and s/virHasLastError/virGetLastErrorCode/g
* replaced in missed files: virmodule.c and virnetlibsshsession.c
* better split of patches

[1] https://www.redhat.com/archives/libvir-list/2018-May/msg00259.html

ramyelkest (3):
  util: cleanup: using virGetLastErrorMessage instead of err->message
  util: added virGetLastErrorCode/Domain
  all: replacing virGetLastError with virGetLastErrorCode where we can

 include/libvirt/virterror.h |  2 ++
 src/libvirt_public.syms |  6 ++
 src/locking/lock_driver_lockd.c |  3 +--
 src/lxc/lxc_controller.c|  4 +---
 src/qemu/qemu_agent.c   |  3 +--
 src/qemu/qemu_conf.c|  3 +--
 src/qemu/qemu_domain.c  |  2 +-
 src/qemu/qemu_driver.c  | 12 ++--
 src/qemu/qemu_hotplug.c |  2 +-
 src/qemu/qemu_migration.c   |  4 ++--
 src/qemu/qemu_monitor.c |  5 ++---
 src/qemu/qemu_monitor_json.c|  2 +-
 src/qemu/qemu_process.c |  4 ++--
 src/remote/remote_driver.c  |  3 +--
 src/rpc/virnetclient.c  |  2 +-
 src/rpc/virnetlibsshsession.c   |  4 +---
 src/util/virerror.c | 42 +
 src/util/virfilecache.c |  3 +--
 src/util/virmodule.c|  3 +--
 src/util/virxml.c   |  4 ++--
 tests/commandtest.c |  2 +-
 tests/testutils.c   |  6 ++
 tests/virhostcputest.c  |  2 +-
 tests/virstoragetest.c  |  8 
 tools/virsh-domain-monitor.c|  7 +++
 tools/virsh-domain.c|  4 +---
 tools/virsh-util.c  |  3 +--
 tools/vsh.c |  2 +-
 28 files changed, 90 insertions(+), 57 deletions(-)

-- 
2.7.4

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


[libvirt] [PATCH 1/2] util: adding virHasLastError and virGetLastErrorCode/Domain

2018-05-03 Thread ramyelkest
Many places in the code call virGetLastError() just to check the
raised error code, or domain. However virGetLastError() can return
NULL, so the code has to check for that as well.

So Instead we create functions virGetLastErrorCode and virGetLastErrorDomain
(in addition to the existing virGetLastErrorMessage) that always return a
valid error code/domain/message, to simplify callers.

Also created virHasLastErrorCode for completion

My first commit, for:
https://wiki.libvirt.org/page/BiteSizedTasks#Add_and_use_virGetLastErrorCode.28.29

Signed-off-by: Ramy Elkest 
---
 include/libvirt/virterror.h |  3 +++
 src/libvirt_public.syms |  7 +
 src/util/virerror.c | 63 +
 3 files changed, 73 insertions(+)

diff --git a/include/libvirt/virterror.h b/include/libvirt/virterror.h
index 3e7c7a0..8336258 100644
--- a/include/libvirt/virterror.h
+++ b/include/libvirt/virterror.h
@@ -344,6 +344,9 @@ voidvirResetLastError   (void);
 voidvirResetError   (virErrorPtr err);
 voidvirFreeError(virErrorPtr err);
 
+int virHasLastError (void);
+int virGetLastErrorCode (void);
+int virGetLastErrorDomain   (void);
 const char *virGetLastErrorMessage  (void);
 
 virErrorPtr virConnGetLastError (virConnectPtr conn);
diff --git a/src/libvirt_public.syms b/src/libvirt_public.syms
index 95df3a0..3a641a3 100644
--- a/src/libvirt_public.syms
+++ b/src/libvirt_public.syms
@@ -785,4 +785,11 @@ LIBVIRT_4.1.0 {
 virStoragePoolLookupByTargetPath;
 } LIBVIRT_3.9.0;
 
+LIBVIRT_4.4.0 {
+global:
+virHasLastError;
+virGetLastErrorCode;
+virGetLastErrorDomain;
+} LIBVIRT_4.1.0;
+
 #  define new API here using predicted next version number 
diff --git a/src/util/virerror.c b/src/util/virerror.c
index c000b00..818af2e 100644
--- a/src/util/virerror.c
+++ b/src/util/virerror.c
@@ -272,6 +272,69 @@ virGetLastError(void)
 
 
 /**
+ * virHasLastError:
+ *
+ * Check for a reported last error
+ *
+ * The error object is kept in thread local storage, so separate
+ * threads can safely access this concurrently.
+ *
+ * Returns 1 if there is an error and the error code is not VIR_ERR_OK,
+   otherwise returns 0
+ */
+int
+virHasLastError(void)
+{
+virErrorPtr err = virLastErrorObject();
+if (!err || err->code == VIR_ERR_OK)
+return 0;
+return 1;
+}
+
+
+/**
+ * virGetLastErrorCode:
+ *
+ * Get the most recent error code
+ *
+ * The error object is kept in thread local storage, so separate
+ * threads can safely access this concurrently.
+ *
+ * Returns the most recent error code in this thread,
+ * or VIR_ERR_OK if none is set
+ */
+int
+virGetLastErrorCode(void)
+{
+virErrorPtr err = virLastErrorObject();
+if (!err)
+return VIR_ERR_OK;
+return err->code;
+}
+
+
+/**
+ * virGetLastErrorDomain:
+ *
+ * Get the most recent error domain
+ *
+ * The error object is kept in thread local storage, so separate
+ * threads can safely access this concurrently.
+ *
+ * Returns the most recent error code in this thread,
+ * or VIR_FROM_NONE if none is set
+ */
+int
+virGetLastErrorDomain(void)
+{
+virErrorPtr err = virLastErrorObject();
+if (!err)
+return VIR_FROM_NONE;
+return err->domain;
+}
+
+
+/**
  * virGetLastErrorMessage:
  *
  * Get the most recent error message
-- 
2.7.4

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


[libvirt] [PATCH 2/2] all: replacing virGetLastError with virHas/GetLastErrorCode/Domain

2018-05-03 Thread ramyelkest
Many places in the code call virGetLastError() just to check the
raised error code, or domain. However virGetLastError() can return
NULL, so the code has to check for that as well.

So Instead we create functions virGetLastErrorCode and virGetLastErrorDomain
(in addition to the existing virGetLastErrorMessage) that always return a
valid error code/domain/message, to simplify callers.

Also created virHasLastErrorCode for completion

for:
https://wiki.libvirt.org/page/BiteSizedTasks#Add_and_use_virGetLastErrorCode.28.29

Notes:
* There are a few instances of virGetLastErrorCode() left where we use multiple
fields from the error, which makes sense to keep it.
* I didn't manage to use virGetLastErrorDomain() (due to the above) so I'm 
inclined
to remove it.

Signed-off-by: Ramy Elkest 
---
 src/locking/lock_driver_lockd.c |  3 +--
 src/lxc/lxc_controller.c|  4 +---
 src/qemu/qemu_agent.c   |  3 +--
 src/qemu/qemu_conf.c|  3 +--
 src/qemu/qemu_domain.c  |  2 +-
 src/qemu/qemu_driver.c  | 12 ++--
 src/qemu/qemu_hotplug.c |  2 +-
 src/qemu/qemu_migration.c   |  4 ++--
 src/qemu/qemu_monitor.c |  5 ++---
 src/qemu/qemu_monitor_json.c|  2 +-
 src/qemu/qemu_process.c |  2 +-
 src/remote/remote_driver.c  |  3 +--
 src/rpc/virnetclient.c  |  2 +-
 src/util/virfilecache.c |  3 +--
 src/util/virxml.c   |  4 ++--
 tests/commandtest.c |  2 +-
 tests/testutils.c   |  6 ++
 tests/virhostcputest.c  |  2 +-
 tests/virstoragetest.c  |  8 
 tools/virsh-domain-monitor.c|  7 +++
 tools/virsh-domain.c|  4 +---
 tools/virsh-util.c  |  3 +--
 tools/vsh.c |  2 +-
 23 files changed, 37 insertions(+), 51 deletions(-)

diff --git a/src/locking/lock_driver_lockd.c b/src/locking/lock_driver_lockd.c
index c3fc18a..957a963 100644
--- a/src/locking/lock_driver_lockd.c
+++ b/src/locking/lock_driver_lockd.c
@@ -302,8 +302,7 @@ static int virLockManagerLockDaemonSetupLockspace(const 
char *path)
 0, NULL, NULL, NULL,
 
(xdrproc_t)xdr_virLockSpaceProtocolCreateLockSpaceArgs, (char*),
 (xdrproc_t)xdr_void, NULL) < 0) {
-virErrorPtr err = virGetLastError();
-if (err && err->code == VIR_ERR_OPERATION_INVALID) {
+if (virGetLastErrorCode() == VIR_ERR_OPERATION_INVALID) {
 /* The lockspace already exists */
 virResetLastError();
 rv = 0;
diff --git a/src/lxc/lxc_controller.c b/src/lxc/lxc_controller.c
index d5636b8..81709d5 100644
--- a/src/lxc/lxc_controller.c
+++ b/src/lxc/lxc_controller.c
@@ -1297,7 +1297,6 @@ static void virLXCControllerConsoleIO(int watch, int fd, 
int events, void *opaqu
  */
 static int virLXCControllerMain(virLXCControllerPtr ctrl)
 {
-virErrorPtr err;
 int rc = -1;
 size_t i;
 
@@ -1349,8 +1348,7 @@ static int virLXCControllerMain(virLXCControllerPtr ctrl)
 
 virNetDaemonRun(ctrl->daemon);
 
-err = virGetLastError();
-if (!err || err->code == VIR_ERR_OK)
+if (!virHasLastError())
 rc = wantReboot ? 1 : 0;
 
  cleanup:
diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c
index 4df1bde..0d7a484 100644
--- a/src/qemu/qemu_agent.c
+++ b/src/qemu/qemu_agent.c
@@ -686,8 +686,7 @@ qemuAgentIO(int watch, int fd, int events, void *opaque)
 /* Already have an error, so clear any new error */
 virResetLastError();
 } else {
-virErrorPtr err = virGetLastError();
-if (!err)
+if (!virHasLastError())
 virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Error while processing monitor IO"));
 virCopyLastError(>lastError);
diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c
index bfbb572..a09532d 100644
--- a/src/qemu/qemu_conf.c
+++ b/src/qemu/qemu_conf.c
@@ -297,8 +297,7 @@ virQEMUDriverConfigPtr virQEMUDriverConfigNew(bool 
privileged)
 if (privileged &&
 virFileFindHugeTLBFS(>hugetlbfs, >nhugetlbfs) < 0) {
 /* This however is not implemented on all platforms. */
-virErrorPtr err = virGetLastError();
-if (err && err->code != VIR_ERR_NO_SUPPORT)
+if (virGetLastErrorCode() != VIR_ERR_NO_SUPPORT)
 goto error;
 }
 
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 727ea33..7df1520 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -6063,7 +6063,7 @@ int qemuDomainObjExitMonitor(virQEMUDriverPtr driver,
 {
 qemuDomainObjExitMonitorInternal(driver, obj);
 if (!virDomainObjIsActive(obj)) {
-if (!virGetLastError())
+if (!virHasLastError())
 virReportError(VIR_ERR_OPERATION_FAILED, "%s",
_("domain is no longer running"));
 

[libvirt] [PATCH 0/2] adding virHas/GetLastErrorCode/Domain to paritally replace virGetLastError

2018-05-03 Thread ramyelkest
Many places in the code call virGetLastError() just to check the
raised error code, or domain. However virGetLastError() can return
NULL, so the code has to check for that as well.

So Instead we create functions virGetLastErrorCode and virGetLastErrorDomain
(in addition to the existing virGetLastErrorMessage) that always return a
valid error code/domain/message, to simplify callers.

Also created virHasLastErrorCode for completion

This is my first commit, for:
https://wiki.libvirt.org/page/BiteSizedTasks#Add_and_use_virGetLastErrorCode.28.29

Notes:
* There are a few instances of virGetLastErrorCode() left where we use multiple
fields from the error, which makes sense to keep it.
* I didn't manage to use virGetLastErrorDomain() (due to the above) so I'm 
inclined
to remove it.
* virHasLastError is more or less only a semantic improvement over 
virGetLastError,
so I'm happy to revert it if needed

Signed-off-by: Ramy Elkest <ramyelk...@gmail.com>


ramyelkest (2):
  util: adding virHasLastError and virGetLastErrorCode/Domain
  all: replacing virGetLastError with virHas/GetLastErrorCode/Domain

 include/libvirt/virterror.h |  3 ++
 src/libvirt_public.syms |  7 +
 src/locking/lock_driver_lockd.c |  3 +-
 src/lxc/lxc_controller.c|  4 +--
 src/qemu/qemu_agent.c   |  3 +-
 src/qemu/qemu_conf.c|  3 +-
 src/qemu/qemu_domain.c  |  2 +-
 src/qemu/qemu_driver.c  | 12 
 src/qemu/qemu_hotplug.c |  2 +-
 src/qemu/qemu_migration.c   |  4 +--
 src/qemu/qemu_monitor.c |  5 ++--
 src/qemu/qemu_monitor_json.c|  2 +-
 src/qemu/qemu_process.c |  2 +-
 src/remote/remote_driver.c  |  3 +-
 src/rpc/virnetclient.c  |  2 +-
 src/util/virerror.c | 63 +
 src/util/virfilecache.c |  3 +-
 src/util/virxml.c   |  4 +--
 tests/commandtest.c |  2 +-
 tests/testutils.c   |  6 ++--
 tests/virhostcputest.c  |  2 +-
 tests/virstoragetest.c  |  8 +++---
 tools/virsh-domain-monitor.c|  7 ++---
 tools/virsh-domain.c|  4 +--
 tools/virsh-util.c  |  3 +-
 tools/vsh.c |  2 +-
 26 files changed, 110 insertions(+), 51 deletions(-)

-- 
2.7.4

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list