On 16.06.2016 14:59, Nikolay Shirokovskiy wrote:
Current vz driver implementation is not usable when it comes to
long runnig operations. Migration or saving a domain blocks all
other operations even query ones which are expecteted to be available.
This patch address this problem.
...
@@ -2436,6 +2504,7 @@ vzDomainMigratePerformStep(virDomainPtr
domain,
const char *miguri = NULL;
const char *dname = NULL;
vzMigrationCookiePtr mig = NULL;
+ bool job = false;
virCheckFlags(VZ_MIGRATION_FLAGS, -1);
@@ -2458,9 +2527,13 @@ vzDomainMigratePerformStep(virDomainPtr domain,
VZ_MIGRATION_COOKIE_SESSION_UUID)))
goto cleanup;
- if (!(dom = vzDomObjFromDomain(domain)))
+ if (!(dom = vzDomObjFromDomainRef(domain)))
goto cleanup;
+ if (vzDomainObjBeginJob(dom) < 0)
+ goto cleanup;
+ job = true;
+
if (!(vzuri = vzParseVzURI(miguri)))
goto cleanup;
@@ -2473,8 +2546,9 @@ vzDomainMigratePerformStep(virDomainPtr domain,
ret = 0;
a mistake here makes migrating disfuntional, here is tiny fix to squash in:
diff --git a/src/vz/vz_driver.c b/src/vz/vz_driver.c
index f427555..02ff2e0 100644
--- a/src/vz/vz_driver.c
+++ b/src/vz/vz_driver.c
@@ -2543,7 +2543,6 @@ vzDomainMigratePerformStep(virDomainPtr domain,
goto cleanup;
virDomainObjListRemove(privconn->driver->domains, dom);
- dom = NULL;
ret = 0;
diff --git a/src/vz/vz_utils.c b/src/vz/vz_utils.c
index 92af4da..82380ca 100644
--- a/src/vz/vz_utils.c
+++ b/src/vz/vz_utils.c
@@ -527,8 +527,12 @@ vzDomainObjBeginJob(virDomainObjPtr dom)
void
vzDomainObjEndJob(virDomainObjPtr dom)
{
- vzDomObjPtr pdom = dom->privateData;
+ vzDomObjPtr pdom;
+ if (!dom)
+ return;
+
+ pdom = dom->privateData;
pdom->job.active = false;
virCondSignal(&pdom->job.cond);
}