[libvirt] [PATCH 0/3] libxl: implement virDomainObjCheckIsActive

Add function which raises error if domain is not active. This is BiteSizedTask. http://wiki.libvirt.org/page/BiteSizedTasks#Add_function_that_raises_error_i... Sagar Ghuge (3): libxl: Implement virDomainObjCheckIsActive change virDomainObjIsActive with virDomainObjCheckIsActive libxl: Change virDomainObjIsActive to virDomainObjCheckIsActive ...libxl-Implement-virDomainObjCheckIsActive.patch | 55 ++++ ...omainObjIsActive-with-virDomainObjCheckIs.patch | 109 ++++++++ ...e-virDomainObjIsActive-to-virDomainObjChe.patch | 298 +++++++++++++++++++++ patch1 | 52 ++++ src/conf/domain_conf.c | 15 ++ src/conf/domain_conf.h | 1 + src/libxl/libxl_driver.c | 102 ++----- src/test/test_driver.c | 35 +-- 8 files changed, 560 insertions(+), 107 deletions(-) create mode 100644 0001-libxl-Implement-virDomainObjCheckIsActive.patch create mode 100644 0002-change-virDomainObjIsActive-with-virDomainObjCheckIs.patch create mode 100644 0003-libxl-Change-virDomainObjIsActive-to-virDomainObjChe.patch create mode 100644 patch1 -- 2.9.3

Add function which raises error if domain is not active Signed-off-by: Sagar Ghuge <ghugesss@gmail.com> --- src/conf/domain_conf.c | 15 +++++++++++++++ src/conf/domain_conf.h | 1 + 2 files changed, 16 insertions(+) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 97d42fe..a44454c 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -2997,6 +2997,21 @@ virDomainObjWait(virDomainObjPtr vm) } +int +virDomainObjCheckIsActive(virDomainObjPtr vm) +{ + if (!virDomainObjIsActive(vm)) { + virReportError(VIR_ERR_OPERATION_FAILED, "%s", + _("domain is not running")); + return -1; + } + + return 0; +} + + + + /** * Waits for domain condition to be triggered for a specific period of time. * diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 1e53cc3..cfeb1ba 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2559,6 +2559,7 @@ bool virDomainObjTaint(virDomainObjPtr obj, void virDomainObjBroadcast(virDomainObjPtr vm); int virDomainObjWait(virDomainObjPtr vm); +int virDomainObjCheckIsActive(virDomainObjPtr vm); int virDomainObjWaitUntil(virDomainObjPtr vm, unsigned long long whenms); -- 2.9.3

On 02/24/2017 01:03 AM, Sagar Ghuge wrote:
Add function which raises error if domain is not active
Signed-off-by: Sagar Ghuge <ghugesss@gmail.com> --- src/conf/domain_conf.c | 15 +++++++++++++++ src/conf/domain_conf.h | 1 + 2 files changed, 16 insertions(+)
This patch doesn't touch any libxl code, so the commit summary should be conf: Implement virDomainObjCheckIsActive
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 97d42fe..a44454c 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -2997,6 +2997,21 @@ virDomainObjWait(virDomainObjPtr vm) }
+int +virDomainObjCheckIsActive(virDomainObjPtr vm) +{ + if (!virDomainObjIsActive(vm)) { + virReportError(VIR_ERR_OPERATION_FAILED, "%s", + _("domain is not running")); + return -1; + } + + return 0; +} + + + + /** * Waits for domain condition to be triggered for a specific period of time. * diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 1e53cc3..cfeb1ba 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2559,6 +2559,7 @@ bool virDomainObjTaint(virDomainObjPtr obj,
void virDomainObjBroadcast(virDomainObjPtr vm); int virDomainObjWait(virDomainObjPtr vm); +int virDomainObjCheckIsActive(virDomainObjPtr vm);
I realize functions aren't listed in alphabetical order, but placement here seems a bit odd. Maybe add it after the existing declaration of virDomainObjIsActive(). Also, I think this function should return a bool instead of int. Regards, Jim
int virDomainObjWaitUntil(virDomainObjPtr vm, unsigned long long whenms);

On 02/28/2017 11:32 AM, Jim Fehlig wrote:
On 02/24/2017 01:03 AM, Sagar Ghuge wrote:
Add function which raises error if domain is not active
Signed-off-by: Sagar Ghuge <ghugesss@gmail.com> --- src/conf/domain_conf.c | 15 +++++++++++++++ src/conf/domain_conf.h | 1 + 2 files changed, 16 insertions(+)
This patch doesn't touch any libxl code, so the commit summary should be
conf: Implement virDomainObjCheckIsActive
BTW, since this new function simply wraps the existing virDomainObjIsActive with error reporting, maybe a better name is virDomainObjIsActiveWithError. Just a suggestion. Perhaps Cole or others have an opinion about the name. Regards, Jim
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 97d42fe..a44454c 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -2997,6 +2997,21 @@ virDomainObjWait(virDomainObjPtr vm) }
+int +virDomainObjCheckIsActive(virDomainObjPtr vm) +{ + if (!virDomainObjIsActive(vm)) { + virReportError(VIR_ERR_OPERATION_FAILED, "%s", + _("domain is not running")); + return -1; + } + + return 0; +} + + + + /** * Waits for domain condition to be triggered for a specific period of time. * diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 1e53cc3..cfeb1ba 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2559,6 +2559,7 @@ bool virDomainObjTaint(virDomainObjPtr obj,
void virDomainObjBroadcast(virDomainObjPtr vm); int virDomainObjWait(virDomainObjPtr vm); +int virDomainObjCheckIsActive(virDomainObjPtr vm);
I realize functions aren't listed in alphabetical order, but placement here seems a bit odd. Maybe add it after the existing declaration of virDomainObjIsActive(). Also, I think this function should return a bool instead of int.
Regards, Jim

On 02/28/2017 05:17 PM, Jim Fehlig wrote:
On 02/28/2017 11:32 AM, Jim Fehlig wrote:
On 02/24/2017 01:03 AM, Sagar Ghuge wrote:
Add function which raises error if domain is not active
Signed-off-by: Sagar Ghuge <ghugesss@gmail.com> --- src/conf/domain_conf.c | 15 +++++++++++++++ src/conf/domain_conf.h | 1 + 2 files changed, 16 insertions(+)
This patch doesn't touch any libxl code, so the commit summary should be
conf: Implement virDomainObjCheckIsActive
BTW, since this new function simply wraps the existing virDomainObjIsActive with error reporting, maybe a better name is virDomainObjIsActiveWithError. Just a suggestion. Perhaps Cole or others have an opinion about the name.
Regards, Jim
When all else fails, go with longer names ;-) I would think "eventually" there's two scenarios you're trying to cover 1. Common action/message if active is unexpected: if (virDomainObjIsActive(vm)) { virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is already running")); goto cleanup; } 2. Common action/message if inactive is unexpected: if (!virDomainObjIsActive(vm)) { virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running")); goto cleanup; } Although changing virDomainObjIsActive would seem to be not feasible as there are callers that don't care about messaging the answer; however, what if we added usage of va_args which would then message based on whether a 2nd/3rd boolean arg exists. e.g. va_start(ap, vm); if ((wantError = va_arg(ap, int))) { if ((isRunning = va_arg(ap, int))) virReportError(... "Domain is already running"); else virReportError(... "Domain is not running"); } For those callers that care, the arguments would be "true" if you want a message and "true" if that message should indicate already running or either "false" or not provided if not running. Leaving out a few key details I'm sure, but I've seen other patches that expand the APIs created for the simple purpose of providing the error message not get accepted, so this is just another "idea". John
diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 97d42fe..a44454c 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -2997,6 +2997,21 @@ virDomainObjWait(virDomainObjPtr vm) }
+int +virDomainObjCheckIsActive(virDomainObjPtr vm) +{ + if (!virDomainObjIsActive(vm)) { + virReportError(VIR_ERR_OPERATION_FAILED, "%s", + _("domain is not running")); + return -1; + } + + return 0; +} + + + + /** * Waits for domain condition to be triggered for a specific period of time. * diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 1e53cc3..cfeb1ba 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2559,6 +2559,7 @@ bool virDomainObjTaint(virDomainObjPtr obj,
void virDomainObjBroadcast(virDomainObjPtr vm); int virDomainObjWait(virDomainObjPtr vm); +int virDomainObjCheckIsActive(virDomainObjPtr vm);
I realize functions aren't listed in alphabetical order, but placement here seems a bit odd. Maybe add it after the existing declaration of virDomainObjIsActive(). Also, I think this function should return a bool instead of int.
Regards, Jim
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

Signed-off-by: Sagar Ghuge <ghugesss@gmail.com> --- src/test/test_driver.c | 35 +++++++---------------------------- 1 file changed, 7 insertions(+), 28 deletions(-) diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 5fef3f1..bbcaa44 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -1769,11 +1769,8 @@ static int testDomainDestroy(virDomainPtr domain) if (!(privdom = testDomObjFromDomain(domain))) goto cleanup; - if (!virDomainObjIsActive(privdom)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckIsActive(privdom) < 0) goto cleanup; - } testDomainShutdownState(domain, privdom, VIR_DOMAIN_SHUTOFF_DESTROYED); event = virDomainEventLifecycleNewFromObj(privdom, @@ -1902,11 +1899,8 @@ static int testDomainReboot(virDomainPtr domain, if (!(privdom = testDomObjFromDomain(domain))) goto cleanup; - if (!virDomainObjIsActive(privdom)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckIsActive(privdom) < 0) goto cleanup; - } virDomainObjSetState(privdom, VIR_DOMAIN_SHUTDOWN, VIR_DOMAIN_SHUTDOWN_USER); @@ -2028,11 +2022,8 @@ testDomainSaveFlags(virDomainPtr domain, const char *path, if (!(privdom = testDomObjFromDomain(domain))) goto cleanup; - if (!virDomainObjIsActive(privdom)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckIsActive(privdom) < 0) goto cleanup; - } xml = virDomainDefFormat(privdom->def, privconn->caps, VIR_DOMAIN_DEF_FORMAT_SECURE); @@ -2232,11 +2223,8 @@ static int testDomainCoreDumpWithFormat(virDomainPtr domain, if (!(privdom = testDomObjFromDomain(domain))) goto cleanup; - if (!virDomainObjIsActive(privdom)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckIsActive(privdom) < 0) goto cleanup; - } if ((fd = open(to, O_CREAT|O_TRUNC|O_WRONLY, S_IRUSR|S_IWUSR)) < 0) { virReportSystemError(errno, @@ -3126,11 +3114,8 @@ static int testDomainBlockStats(virDomainPtr domain, if (!(privdom = testDomObjFromDomain(domain))) return ret; - if (!virDomainObjIsActive(privdom)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckIsActive(privdom) < 0) goto error; - } if (virDomainDiskIndexByName(privdom->def, path, false) < 0) { virReportError(VIR_ERR_INVALID_ARG, @@ -3171,11 +3156,8 @@ static int testDomainInterfaceStats(virDomainPtr domain, if (!(privdom = testDomObjFromDomain(domain))) return -1; - if (!virDomainObjIsActive(privdom)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckIsActive(privdom) < 0) goto error; - } for (i = 0; i < privdom->def->nnets; i++) { if (privdom->def->nets[i]->ifname && @@ -6065,11 +6047,8 @@ testDomainManagedSave(virDomainPtr dom, unsigned int flags) if (!(vm = testDomObjFromDomain(dom))) return -1; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckIsActive(vm) < 0) goto cleanup; - } if (!vm->persistent) { virReportError(VIR_ERR_OPERATION_INVALID, "%s", -- 2.9.3

On 02/24/2017 01:03 AM, Sagar Ghuge wrote:
Signed-off-by: Sagar Ghuge <ghugesss@gmail.com> --- src/test/test_driver.c | 35 +++++++---------------------------- 1 file changed, 7 insertions(+), 28 deletions(-)
The commit summary here should be prefixed with 'test'. E.g. test: Use virDomainObjCheckIsActive
diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 5fef3f1..bbcaa44 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -1769,11 +1769,8 @@ static int testDomainDestroy(virDomainPtr domain) if (!(privdom = testDomObjFromDomain(domain))) goto cleanup;
- if (!virDomainObjIsActive(privdom)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckIsActive(privdom) < 0)
If you change virDomainObjCheckIsActive to return a bool, you'll need to change all of these to if (!virDomainObjCheckIsActive(privdom)) Otherwise looking good. Regards, Jim

Replace virDomainObjIsActive with virDomainObjCheckIsActive which raises error if domain is not active Signed-off-by: Sagar Ghuge <ghugesss@gmail.com> --- ...libxl-Implement-virDomainObjCheckIsActive.patch | 55 ++++ ...omainObjIsActive-with-virDomainObjCheckIs.patch | 109 ++++++++ ...e-virDomainObjIsActive-to-virDomainObjChe.patch | 298 +++++++++++++++++++++ patch1 | 52 ++++ src/libxl/libxl_driver.c | 102 ++----- 5 files changed, 537 insertions(+), 79 deletions(-) create mode 100644 0001-libxl-Implement-virDomainObjCheckIsActive.patch create mode 100644 0002-change-virDomainObjIsActive-with-virDomainObjCheckIs.patch create mode 100644 0003-libxl-Change-virDomainObjIsActive-to-virDomainObjChe.patch create mode 100644 patch1 diff --git a/0001-libxl-Implement-virDomainObjCheckIsActive.patch b/0001-libxl-Implement-virDomainObjCheckIsActive.patch new file mode 100644 index 0000000..161a59d --- /dev/null +++ b/0001-libxl-Implement-virDomainObjCheckIsActive.patch @@ -0,0 +1,55 @@ +From 364fe0cec782a312a7c0fc3a6ebf7580053f4f9a Mon Sep 17 00:00:00 2001 +From: Sagar Ghuge <ghugesss@gmail.com> +Date: Thu, 23 Feb 2017 19:47:26 -0800 +Subject: [PATCH 1/3] libxl: Implement virDomainObjCheckIsActive + +Add function which raises error if domain is +not active + +Signed-off-by: Sagar Ghuge <ghugesss@gmail.com> +--- + src/conf/domain_conf.c | 15 +++++++++++++++ + src/conf/domain_conf.h | 1 + + 2 files changed, 16 insertions(+) + +diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c +index 97d42fe..a44454c 100644 +--- a/src/conf/domain_conf.c ++++ b/src/conf/domain_conf.c +@@ -2997,6 +2997,21 @@ virDomainObjWait(virDomainObjPtr vm) + } + + ++int ++virDomainObjCheckIsActive(virDomainObjPtr vm) ++{ ++ if (!virDomainObjIsActive(vm)) { ++ virReportError(VIR_ERR_OPERATION_FAILED, "%s", ++ _("domain is not running")); ++ return -1; ++ } ++ ++ return 0; ++} ++ ++ ++ ++ + /** + * Waits for domain condition to be triggered for a specific period of time. + * +diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h +index 1e53cc3..cfeb1ba 100644 +--- a/src/conf/domain_conf.h ++++ b/src/conf/domain_conf.h +@@ -2559,6 +2559,7 @@ bool virDomainObjTaint(virDomainObjPtr obj, + + void virDomainObjBroadcast(virDomainObjPtr vm); + int virDomainObjWait(virDomainObjPtr vm); ++int virDomainObjCheckIsActive(virDomainObjPtr vm); + int virDomainObjWaitUntil(virDomainObjPtr vm, + unsigned long long whenms); + +-- +2.9.3 + diff --git a/0002-change-virDomainObjIsActive-with-virDomainObjCheckIs.patch b/0002-change-virDomainObjIsActive-with-virDomainObjCheckIs.patch new file mode 100644 index 0000000..fa82dce --- /dev/null +++ b/0002-change-virDomainObjIsActive-with-virDomainObjCheckIs.patch @@ -0,0 +1,109 @@ +From 2656b5e6e8047e5f23563d6dff4347bba4483e2a Mon Sep 17 00:00:00 2001 +From: Sagar Ghuge <ghugesss@gmail.com> +Date: Thu, 23 Feb 2017 20:40:08 -0800 +Subject: [PATCH 2/3] change virDomainObjIsActive with + virDomainObjCheckIsActive + +Signed-off-by: Sagar Ghuge <ghugesss@gmail.com> +--- + src/test/test_driver.c | 35 +++++++---------------------------- + 1 file changed, 7 insertions(+), 28 deletions(-) + +diff --git a/src/test/test_driver.c b/src/test/test_driver.c +index 5fef3f1..bbcaa44 100644 +--- a/src/test/test_driver.c ++++ b/src/test/test_driver.c +@@ -1769,11 +1769,8 @@ static int testDomainDestroy(virDomainPtr domain) + if (!(privdom = testDomObjFromDomain(domain))) + goto cleanup; + +- if (!virDomainObjIsActive(privdom)) { +- virReportError(VIR_ERR_OPERATION_INVALID, +- "%s", _("domain is not running")); ++ if (virDomainObjCheckIsActive(privdom) < 0) + goto cleanup; +- } + + testDomainShutdownState(domain, privdom, VIR_DOMAIN_SHUTOFF_DESTROYED); + event = virDomainEventLifecycleNewFromObj(privdom, +@@ -1902,11 +1899,8 @@ static int testDomainReboot(virDomainPtr domain, + if (!(privdom = testDomObjFromDomain(domain))) + goto cleanup; + +- if (!virDomainObjIsActive(privdom)) { +- virReportError(VIR_ERR_OPERATION_INVALID, +- "%s", _("domain is not running")); ++ if (virDomainObjCheckIsActive(privdom) < 0) + goto cleanup; +- } + + virDomainObjSetState(privdom, VIR_DOMAIN_SHUTDOWN, + VIR_DOMAIN_SHUTDOWN_USER); +@@ -2028,11 +2022,8 @@ testDomainSaveFlags(virDomainPtr domain, const char *path, + if (!(privdom = testDomObjFromDomain(domain))) + goto cleanup; + +- if (!virDomainObjIsActive(privdom)) { +- virReportError(VIR_ERR_OPERATION_INVALID, +- "%s", _("domain is not running")); ++ if (virDomainObjCheckIsActive(privdom) < 0) + goto cleanup; +- } + + xml = virDomainDefFormat(privdom->def, privconn->caps, + VIR_DOMAIN_DEF_FORMAT_SECURE); +@@ -2232,11 +2223,8 @@ static int testDomainCoreDumpWithFormat(virDomainPtr domain, + if (!(privdom = testDomObjFromDomain(domain))) + goto cleanup; + +- if (!virDomainObjIsActive(privdom)) { +- virReportError(VIR_ERR_OPERATION_INVALID, +- "%s", _("domain is not running")); ++ if (virDomainObjCheckIsActive(privdom) < 0) + goto cleanup; +- } + + if ((fd = open(to, O_CREAT|O_TRUNC|O_WRONLY, S_IRUSR|S_IWUSR)) < 0) { + virReportSystemError(errno, +@@ -3126,11 +3114,8 @@ static int testDomainBlockStats(virDomainPtr domain, + if (!(privdom = testDomObjFromDomain(domain))) + return ret; + +- if (!virDomainObjIsActive(privdom)) { +- virReportError(VIR_ERR_OPERATION_INVALID, +- "%s", _("domain is not running")); ++ if (virDomainObjCheckIsActive(privdom) < 0) + goto error; +- } + + if (virDomainDiskIndexByName(privdom->def, path, false) < 0) { + virReportError(VIR_ERR_INVALID_ARG, +@@ -3171,11 +3156,8 @@ static int testDomainInterfaceStats(virDomainPtr domain, + if (!(privdom = testDomObjFromDomain(domain))) + return -1; + +- if (!virDomainObjIsActive(privdom)) { +- virReportError(VIR_ERR_OPERATION_INVALID, +- "%s", _("domain is not running")); ++ if (virDomainObjCheckIsActive(privdom) < 0) + goto error; +- } + + for (i = 0; i < privdom->def->nnets; i++) { + if (privdom->def->nets[i]->ifname && +@@ -6065,11 +6047,8 @@ testDomainManagedSave(virDomainPtr dom, unsigned int flags) + if (!(vm = testDomObjFromDomain(dom))) + return -1; + +- if (!virDomainObjIsActive(vm)) { +- virReportError(VIR_ERR_OPERATION_INVALID, +- "%s", _("domain is not running")); ++ if (virDomainObjCheckIsActive(vm) < 0) + goto cleanup; +- } + + if (!vm->persistent) { + virReportError(VIR_ERR_OPERATION_INVALID, "%s", +-- +2.9.3 + diff --git a/0003-libxl-Change-virDomainObjIsActive-to-virDomainObjChe.patch b/0003-libxl-Change-virDomainObjIsActive-to-virDomainObjChe.patch new file mode 100644 index 0000000..5ea8ca7 --- /dev/null +++ b/0003-libxl-Change-virDomainObjIsActive-to-virDomainObjChe.patch @@ -0,0 +1,298 @@ +From ff65287895d08018e30e76923011cc1c8668e214 Mon Sep 17 00:00:00 2001 +From: Sagar Ghuge <ghugesss@gmail.com> +Date: Thu, 23 Feb 2017 20:55:35 -0800 +Subject: [PATCH 3/3] libxl: Change virDomainObjIsActive to + virDomainObjCheckIsActive + +Replace virDomainObjIsActive with virDomainObjCheckIsActive +which raises error if domain is not active + +Signed-off-by: Sagar Ghuge <ghugesss@gmail.com> +--- + src/libxl/libxl_driver.c | 102 +++++++++++------------------------------------ + 1 file changed, 23 insertions(+), 79 deletions(-) + +diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c +index e5b8f48..7a69215 100644 +--- a/src/libxl/libxl_driver.c ++++ b/src/libxl/libxl_driver.c +@@ -1183,10 +1183,8 @@ libxlDomainSuspend(virDomainPtr dom) + if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) + goto cleanup; + +- if (!virDomainObjIsActive(vm)) { +- virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running")); ++ if (virDomainObjCheckIsActive(vm) < 0) + goto endjob; +- } + + if (virDomainObjGetState(vm, NULL) != VIR_DOMAIN_PAUSED) { + if (libxl_domain_pause(cfg->ctx, vm->def->id) != 0) { +@@ -1239,10 +1237,8 @@ libxlDomainResume(virDomainPtr dom) + if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) + goto cleanup; + +- if (!virDomainObjIsActive(vm)) { +- virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running")); ++ if (virDomainObjCheckIsActive(vm) < 0) + goto endjob; +- } + + if (virDomainObjGetState(vm, NULL) == VIR_DOMAIN_PAUSED) { + if (libxl_domain_unpause(cfg->ctx, vm->def->id) != 0) { +@@ -1297,11 +1293,8 @@ libxlDomainShutdownFlags(virDomainPtr dom, unsigned int flags) + if (virDomainShutdownFlagsEnsureACL(dom->conn, vm->def, flags) < 0) + goto cleanup; + +- if (!virDomainObjIsActive(vm)) { +- virReportError(VIR_ERR_OPERATION_INVALID, +- "%s", _("Domain is not running")); ++ if (virDomainObjCheckIsActive(vm) < 0) + goto cleanup; +- } + + if (flags & VIR_DOMAIN_SHUTDOWN_PARAVIRT) { + ret = libxl_domain_shutdown(cfg->ctx, vm->def->id); +@@ -1364,11 +1357,8 @@ libxlDomainReboot(virDomainPtr dom, unsigned int flags) + if (virDomainRebootEnsureACL(dom->conn, vm->def, flags) < 0) + goto cleanup; + +- if (!virDomainObjIsActive(vm)) { +- virReportError(VIR_ERR_OPERATION_INVALID, +- "%s", _("Domain is not running")); ++ if (virDomainObjCheckIsActive(vm) < 0) + goto cleanup; +- } + + if (flags & VIR_DOMAIN_REBOOT_PARAVIRT) { + ret = libxl_domain_reboot(cfg->ctx, vm->def->id); +@@ -1411,11 +1401,8 @@ libxlDomainDestroyFlags(virDomainPtr dom, + if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) + goto cleanup; + +- if (!virDomainObjIsActive(vm)) { +- virReportError(VIR_ERR_OPERATION_INVALID, +- "%s", _("Domain is not running")); ++ if (virDomainObjCheckIsActive(vm) < 0) + goto endjob; +- } + + if (libxlDomainDestroyInternal(driver, vm) < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, +@@ -1820,10 +1807,8 @@ libxlDomainSaveFlags(virDomainPtr dom, const char *to, const char *dxml, + if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) + goto cleanup; + +- if (!virDomainObjIsActive(vm)) { +- virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running")); ++ if (virDomainObjCheckIsActive(vm) < 0) + goto endjob; +- } + + if (libxlDoDomainSave(driver, vm, to) < 0) + goto endjob; +@@ -1946,10 +1931,8 @@ libxlDomainCoreDump(virDomainPtr dom, const char *to, unsigned int flags) + if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) + goto cleanup; + +- if (!virDomainObjIsActive(vm)) { +- virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running")); ++ if (virDomainObjCheckIsActive(vm) < 0) + goto endjob; +- } + + if (!(flags & VIR_DUMP_LIVE) && + virDomainObjGetState(vm, NULL) == VIR_DOMAIN_RUNNING) { +@@ -2043,10 +2026,9 @@ libxlDomainManagedSave(virDomainPtr dom, unsigned int flags) + if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) + goto cleanup; + +- if (!virDomainObjIsActive(vm)) { +- virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running")); ++ if (virDomainObjCheckIsActive(vm) < 0) + goto endjob; +- } ++ + if (!vm->persistent) { + virReportError(VIR_ERR_OPERATION_INVALID, "%s", + _("cannot do managed save for transient domain")); +@@ -2518,10 +2500,8 @@ libxlDomainGetVcpus(virDomainPtr dom, virVcpuInfoPtr info, int maxinfo, + if (virDomainGetVcpusEnsureACL(dom->conn, vm->def) < 0) + goto cleanup; + +- if (!virDomainObjIsActive(vm)) { +- virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running")); ++ if (virDomainObjCheckIsActive(vm) < 0) + goto cleanup; +- } + + if ((vcpuinfo = libxl_list_vcpu(cfg->ctx, vm->def->id, &maxcpu, + &hostcpus)) == NULL) { +@@ -2755,11 +2735,8 @@ libxlDomainCreateWithFlags(virDomainPtr dom, + if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) + goto cleanup; + +- if (virDomainObjIsActive(vm)) { +- virReportError(VIR_ERR_OPERATION_INVALID, +- "%s", _("Domain is already running")); ++ if (virDomainObjCheckIsActive(vm) < 0) + goto endjob; +- } + + ret = libxlDomainStartNew(driver, vm, + (flags & VIR_DOMAIN_START_PAUSED) != 0); +@@ -4498,10 +4475,8 @@ libxlDomainGetSchedulerType(virDomainPtr dom, int *nparams) + if (virDomainGetSchedulerTypeEnsureACL(dom->conn, vm->def) < 0) + goto cleanup; + +- if (!virDomainObjIsActive(vm)) { +- virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running")); ++ if (virDomainObjCheckIsActive(vm) < 0) + goto cleanup; +- } + + sched_id = libxl_get_scheduler(cfg->ctx); + +@@ -4562,11 +4537,8 @@ libxlDomainGetSchedulerParametersFlags(virDomainPtr dom, + if (virDomainGetSchedulerParametersFlagsEnsureACL(dom->conn, vm->def) < 0) + goto cleanup; + +- if (!virDomainObjIsActive(vm)) { +- virReportError(VIR_ERR_OPERATION_INVALID, "%s", +- _("Domain is not running")); ++ if (virDomainObjCheckIsActive(vm) < 0) + goto cleanup; +- } + + sched_id = libxl_get_scheduler(cfg->ctx); + +@@ -4643,10 +4615,8 @@ libxlDomainSetSchedulerParametersFlags(virDomainPtr dom, + if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) + goto cleanup; + +- if (!virDomainObjIsActive(vm)) { +- virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running")); ++ if (virDomainObjCheckIsActive(vm) < 0) + goto endjob; +- } + + sched_id = libxl_get_scheduler(cfg->ctx); + +@@ -4712,11 +4682,8 @@ libxlDomainOpenConsole(virDomainPtr dom, + if (virDomainOpenConsoleEnsureACL(dom->conn, vm->def) < 0) + goto cleanup; + +- if (!virDomainObjIsActive(vm)) { +- virReportError(VIR_ERR_OPERATION_INVALID, +- "%s", _("domain is not running")); ++ if (virDomainObjCheckIsActive(vm) < 0) + goto cleanup; +- } + + priv = vm->privateData; + if (dev_name) { +@@ -4812,11 +4779,8 @@ libxlDomainGetNumaParameters(virDomainPtr dom, + if (virDomainGetNumaParametersEnsureACL(dom->conn, vm->def) < 0) + goto cleanup; + +- if (!virDomainObjIsActive(vm)) { +- virReportError(VIR_ERR_OPERATION_INVALID, "%s", +- _("Domain is not running")); ++ if (virDomainObjCheckIsActive(vm) < 0) + goto cleanup; +- } + + if ((*nparams) == 0) { + *nparams = LIBXL_NUMA_NPARAM; +@@ -4983,11 +4947,8 @@ libxlDomainInterfaceStats(virDomainPtr dom, + if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_QUERY) < 0) + goto cleanup; + +- if (!virDomainObjIsActive(vm)) { +- virReportError(VIR_ERR_OPERATION_INVALID, +- "%s", _("domain is not running")); ++ if (virDomainObjCheckIsActive(vm) < 0) + goto endjob; +- } + + /* Check the path is one of the domain's network interfaces. */ + for (i = 0; i < vm->def->nnets; i++) { +@@ -5111,11 +5072,8 @@ libxlDomainGetCPUStats(virDomainPtr dom, + if (virDomainGetCPUStatsEnsureACL(dom->conn, vm->def) < 0) + goto cleanup; + +- if (!virDomainObjIsActive(vm)) { +- virReportError(VIR_ERR_OPERATION_INVALID, +- "%s", _("domain is not running")); ++ if (virDomainObjCheckIsActive(vm) < 0) + goto cleanup; +- } + + if (start_cpu == -1) + ret = libxlDomainGetTotalCPUStats(driver, vm, params, nparams); +@@ -5164,11 +5122,8 @@ libxlDomainMemoryStats(virDomainPtr dom, + if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_QUERY) < 0) + goto cleanup; + +- if (!virDomainObjIsActive(vm)) { +- virReportError(VIR_ERR_OPERATION_INVALID, +- "%s", _("domain is not running")); ++ if (virDomainObjCheckIsActive(vm) < 0) + goto endjob; +- } + + if (libxl_domain_info(cfg->ctx, &d_info, vm->def->id) != 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, +@@ -5528,11 +5483,8 @@ libxlDomainBlockStats(virDomainPtr dom, + if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_QUERY) < 0) + goto cleanup; + +- if (!virDomainObjIsActive(vm)) { +- virReportError(VIR_ERR_OPERATION_INVALID, +- "%s", _("domain is not running")); ++ if (virDomainObjCheckIsActive(vm) < 0) + goto endjob; +- } + + memset(&blkstats, 0, sizeof(libxlBlockStats)); + if ((ret = libxlDomainBlockStatsGather(vm, path, &blkstats)) < 0) +@@ -5581,11 +5533,8 @@ libxlDomainBlockStatsFlags(virDomainPtr dom, + if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_QUERY) < 0) + goto cleanup; + +- if (!virDomainObjIsActive(vm)) { +- virReportError(VIR_ERR_OPERATION_INVALID, +- "%s", _("domain is not running")); ++ if (virDomainObjCheckIsActive(vm) < 0) + goto endjob; +- } + + /* return count of supported stats */ + if (*nparams == 0) { +@@ -5922,9 +5871,7 @@ libxlDomainMigrateBegin3Params(virDomainPtr domain, + return NULL; + } + +- if (!virDomainObjIsActive(vm)) { +- virReportError(VIR_ERR_OPERATION_INVALID, +- "%s", _("domain is not running")); ++ if (virDomainObjCheckIsActive(vm) < 0) { + virObjectUnlock(vm); + return NULL; + } +@@ -6330,11 +6277,8 @@ libxlDomainInterfaceAddresses(virDomainPtr dom, + if (virDomainInterfaceAddressesEnsureACL(dom->conn, vm->def) < 0) + goto cleanup; + +- if (!virDomainObjIsActive(vm)) { +- virReportError(VIR_ERR_OPERATION_INVALID, "%s", +- _("domain is not running")); ++ if (virDomainObjCheckIsActive(vm) < 0) + goto cleanup; +- } + + switch (source) { + case VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_LEASE: +-- +2.9.3 + diff --git a/patch1 b/patch1 new file mode 100644 index 0000000..e39c5cd --- /dev/null +++ b/patch1 @@ -0,0 +1,52 @@ +diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c +index 1bc72a4..10a69af 100644 +--- a/src/conf/domain_conf.c ++++ b/src/conf/domain_conf.c +@@ -2995,6 +2995,19 @@ virDomainObjWait(virDomainObjPtr vm) + } + + ++int ++virDomainObjCheckIsActive(virDomainObjPtr vm) ++{ ++ if (!virDomainObjIsActive(vm)) { ++ virReportError(VIR_ERR_OPERATION_FAILED, "%s", ++ _("domain is not running")); ++ return -1; ++ } ++ ++ return 0; ++} ++ ++ + /** + * Waits for domain condition to be triggered for a specific period of time. + * +diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h +index dd79206..b6c7826 100644 +--- a/src/conf/domain_conf.h ++++ b/src/conf/domain_conf.h +@@ -2559,6 +2559,7 @@ bool virDomainObjTaint(virDomainObjPtr obj, + + void virDomainObjBroadcast(virDomainObjPtr vm); + int virDomainObjWait(virDomainObjPtr vm); ++int virDomainObjCheckIsActive(virDomainObjPtr vm); + int virDomainObjWaitUntil(virDomainObjPtr vm, + unsigned long long whenms); + +diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c +index 74cb05a..3a487ac 100644 +--- a/src/libxl/libxl_driver.c ++++ b/src/libxl/libxl_driver.c +@@ -1183,10 +1183,8 @@ libxlDomainSuspend(virDomainPtr dom) + if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) + goto cleanup; + +- if (!virDomainObjIsActive(vm)) { +- virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running")); ++ if (virDomainObjCheckIsActive(vm) < 0) + goto endjob; +- } + + if (virDomainObjGetState(vm, NULL) != VIR_DOMAIN_PAUSED) { + if (libxl_domain_pause(cfg->ctx, vm->def->id) != 0) { diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index e5b8f48..7a69215 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -1183,10 +1183,8 @@ libxlDomainSuspend(virDomainPtr dom) if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running")); + if (virDomainObjCheckIsActive(vm) < 0) goto endjob; - } if (virDomainObjGetState(vm, NULL) != VIR_DOMAIN_PAUSED) { if (libxl_domain_pause(cfg->ctx, vm->def->id) != 0) { @@ -1239,10 +1237,8 @@ libxlDomainResume(virDomainPtr dom) if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running")); + if (virDomainObjCheckIsActive(vm) < 0) goto endjob; - } if (virDomainObjGetState(vm, NULL) == VIR_DOMAIN_PAUSED) { if (libxl_domain_unpause(cfg->ctx, vm->def->id) != 0) { @@ -1297,11 +1293,8 @@ libxlDomainShutdownFlags(virDomainPtr dom, unsigned int flags) if (virDomainShutdownFlagsEnsureACL(dom->conn, vm->def, flags) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("Domain is not running")); + if (virDomainObjCheckIsActive(vm) < 0) goto cleanup; - } if (flags & VIR_DOMAIN_SHUTDOWN_PARAVIRT) { ret = libxl_domain_shutdown(cfg->ctx, vm->def->id); @@ -1364,11 +1357,8 @@ libxlDomainReboot(virDomainPtr dom, unsigned int flags) if (virDomainRebootEnsureACL(dom->conn, vm->def, flags) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("Domain is not running")); + if (virDomainObjCheckIsActive(vm) < 0) goto cleanup; - } if (flags & VIR_DOMAIN_REBOOT_PARAVIRT) { ret = libxl_domain_reboot(cfg->ctx, vm->def->id); @@ -1411,11 +1401,8 @@ libxlDomainDestroyFlags(virDomainPtr dom, if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("Domain is not running")); + if (virDomainObjCheckIsActive(vm) < 0) goto endjob; - } if (libxlDomainDestroyInternal(driver, vm) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -1820,10 +1807,8 @@ libxlDomainSaveFlags(virDomainPtr dom, const char *to, const char *dxml, if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running")); + if (virDomainObjCheckIsActive(vm) < 0) goto endjob; - } if (libxlDoDomainSave(driver, vm, to) < 0) goto endjob; @@ -1946,10 +1931,8 @@ libxlDomainCoreDump(virDomainPtr dom, const char *to, unsigned int flags) if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running")); + if (virDomainObjCheckIsActive(vm) < 0) goto endjob; - } if (!(flags & VIR_DUMP_LIVE) && virDomainObjGetState(vm, NULL) == VIR_DOMAIN_RUNNING) { @@ -2043,10 +2026,9 @@ libxlDomainManagedSave(virDomainPtr dom, unsigned int flags) if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running")); + if (virDomainObjCheckIsActive(vm) < 0) goto endjob; - } + if (!vm->persistent) { virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("cannot do managed save for transient domain")); @@ -2518,10 +2500,8 @@ libxlDomainGetVcpus(virDomainPtr dom, virVcpuInfoPtr info, int maxinfo, if (virDomainGetVcpusEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running")); + if (virDomainObjCheckIsActive(vm) < 0) goto cleanup; - } if ((vcpuinfo = libxl_list_vcpu(cfg->ctx, vm->def->id, &maxcpu, &hostcpus)) == NULL) { @@ -2755,11 +2735,8 @@ libxlDomainCreateWithFlags(virDomainPtr dom, if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) goto cleanup; - if (virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("Domain is already running")); + if (virDomainObjCheckIsActive(vm) < 0) goto endjob; - } ret = libxlDomainStartNew(driver, vm, (flags & VIR_DOMAIN_START_PAUSED) != 0); @@ -4498,10 +4475,8 @@ libxlDomainGetSchedulerType(virDomainPtr dom, int *nparams) if (virDomainGetSchedulerTypeEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running")); + if (virDomainObjCheckIsActive(vm) < 0) goto cleanup; - } sched_id = libxl_get_scheduler(cfg->ctx); @@ -4562,11 +4537,8 @@ libxlDomainGetSchedulerParametersFlags(virDomainPtr dom, if (virDomainGetSchedulerParametersFlagsEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("Domain is not running")); + if (virDomainObjCheckIsActive(vm) < 0) goto cleanup; - } sched_id = libxl_get_scheduler(cfg->ctx); @@ -4643,10 +4615,8 @@ libxlDomainSetSchedulerParametersFlags(virDomainPtr dom, if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_MODIFY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", _("Domain is not running")); + if (virDomainObjCheckIsActive(vm) < 0) goto endjob; - } sched_id = libxl_get_scheduler(cfg->ctx); @@ -4712,11 +4682,8 @@ libxlDomainOpenConsole(virDomainPtr dom, if (virDomainOpenConsoleEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckIsActive(vm) < 0) goto cleanup; - } priv = vm->privateData; if (dev_name) { @@ -4812,11 +4779,8 @@ libxlDomainGetNumaParameters(virDomainPtr dom, if (virDomainGetNumaParametersEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("Domain is not running")); + if (virDomainObjCheckIsActive(vm) < 0) goto cleanup; - } if ((*nparams) == 0) { *nparams = LIBXL_NUMA_NPARAM; @@ -4983,11 +4947,8 @@ libxlDomainInterfaceStats(virDomainPtr dom, if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_QUERY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckIsActive(vm) < 0) goto endjob; - } /* Check the path is one of the domain's network interfaces. */ for (i = 0; i < vm->def->nnets; i++) { @@ -5111,11 +5072,8 @@ libxlDomainGetCPUStats(virDomainPtr dom, if (virDomainGetCPUStatsEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckIsActive(vm) < 0) goto cleanup; - } if (start_cpu == -1) ret = libxlDomainGetTotalCPUStats(driver, vm, params, nparams); @@ -5164,11 +5122,8 @@ libxlDomainMemoryStats(virDomainPtr dom, if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_QUERY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckIsActive(vm) < 0) goto endjob; - } if (libxl_domain_info(cfg->ctx, &d_info, vm->def->id) != 0) { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -5528,11 +5483,8 @@ libxlDomainBlockStats(virDomainPtr dom, if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_QUERY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckIsActive(vm) < 0) goto endjob; - } memset(&blkstats, 0, sizeof(libxlBlockStats)); if ((ret = libxlDomainBlockStatsGather(vm, path, &blkstats)) < 0) @@ -5581,11 +5533,8 @@ libxlDomainBlockStatsFlags(virDomainPtr dom, if (libxlDomainObjBeginJob(driver, vm, LIBXL_JOB_QUERY) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckIsActive(vm) < 0) goto endjob; - } /* return count of supported stats */ if (*nparams == 0) { @@ -5922,9 +5871,7 @@ libxlDomainMigrateBegin3Params(virDomainPtr domain, return NULL; } - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is not running")); + if (virDomainObjCheckIsActive(vm) < 0) { virObjectUnlock(vm); return NULL; } @@ -6330,11 +6277,8 @@ libxlDomainInterfaceAddresses(virDomainPtr dom, if (virDomainInterfaceAddressesEnsureACL(dom->conn, vm->def) < 0) goto cleanup; - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("domain is not running")); + if (virDomainObjCheckIsActive(vm) < 0) goto cleanup; - } switch (source) { case VIR_DOMAIN_INTERFACE_ADDRESSES_SRC_LEASE: -- 2.9.3

On 02/24/2017 01:03 AM, Sagar Ghuge wrote:
Replace virDomainObjIsActive with virDomainObjCheckIsActive which raises error if domain is not active
Signed-off-by: Sagar Ghuge <ghugesss@gmail.com> --- ...libxl-Implement-virDomainObjCheckIsActive.patch | 55 ++++ ...omainObjIsActive-with-virDomainObjCheckIs.patch | 109 ++++++++ ...e-virDomainObjIsActive-to-virDomainObjChe.patch | 298 +++++++++++++++++++++ patch1 | 52 ++++ src/libxl/libxl_driver.c | 102 ++----- 5 files changed, 537 insertions(+), 79 deletions(-) create mode 100644 0001-libxl-Implement-virDomainObjCheckIsActive.patch create mode 100644 0002-change-virDomainObjIsActive-with-virDomainObjCheckIs.patch create mode 100644 0003-libxl-Change-virDomainObjIsActive-to-virDomainObjChe.patch create mode 100644 patch1
Mistakenly added some older patches to the patch? :-) I assume you were only wanting to change src/libxl/libxl_driver.c in this patch. Please remove the embedded patches from this patch in the next version. BTW, 'make syntax-check' fails when run on this patch. Ensure you run 'make syntax-check' and 'make check' on each patch before submitting to the list. Thanks! Regards, Jim
participants (3)
-
Jim Fehlig
-
John Ferlan
-
Sagar Ghuge