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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 18.08.2016 14:57, Olga Krishtal wrote:
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@xxxxxxxxxxxxx>
---
  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;
+    }
+
I suggest to call prlsdkUpdateDomain from vzDomainDetachDeviceFlags and
vzDomainAttachDeviceFlags.

Example for vzDomainAttachDeviceFlags():

    if (vzEnsureDomainExists(dom) < 0)
        goto cleanup;

    if (prlsdkAttachDevice(driver, dom, dev) < 0)
        goto cleanup;

+    if (prlsdkUpdateDomain(driver, dom) < 0)
 +       goto cleanup;

    ret = 0;
 cleanup:
    virDomainDeviceDefFree(dev);
    if (job)
        vzDomainObjEndJob(dom);


      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;

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



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]