[libvirt] [PATCH] vz: fixed race in vzDomainAttach/DettachDevice

Olga Krishtal okrishtal at virtuozzo.com
Thu Aug 18 11:57:14 UTC 2016


While dettaching/attaching device in OpenStack, nova
calls vzDomainDettachDevice twice, because the update of the internal
configuration of the ct comes a bit latter than the update event.
As the result, we suffer from the second call to dettach the same device.

Signed-off-by: Olga Krishtal <okrishtal at virtuozzo.com>
---
 src/vz/vz_sdk.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/vz/vz_sdk.c b/src/vz/vz_sdk.c
index 68dd5b5..9fbf968 100644
--- a/src/vz/vz_sdk.c
+++ b/src/vz/vz_sdk.c
@@ -3594,6 +3594,12 @@ prlsdkAttachDevice(vzDriverPtr driver,
         return -1;
     }
 
+    if (prlsdkUpdateDomain(driver, dom) < 0) {
+        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+                        _("Failed to save new config"));
+        return -1;
+    }
+
     job = PrlVm_CommitEx(privdom->sdkdom, PVCF_DETACH_HDD_BUNDLE);
     if (PRL_FAILED(waitDomainJob(job, dom)))
         return -1;
@@ -3661,6 +3667,12 @@ prlsdkDetachDevice(vzDriverPtr driver,
         goto cleanup;
     }
 
+    if (prlsdkUpdateDomain(driver, dom) < 0) {
+        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+                        _("Failed to save new config"));
+        goto cleanup;
+    }
+
     job = PrlVm_CommitEx(privdom->sdkdom, PVCF_DETACH_HDD_BUNDLE);
     if (PRL_FAILED(waitDomainJob(job, dom)))
         goto cleanup;
-- 
1.8.3.1




More information about the libvir-list mailing list