提交 37e02f68 编写于 作者: E Erik Skultety

nodedev: udev: Remove driver locks from stateInitialize and stateCleanup

The driver locks are unnecessary here, since currently the cleanup is
only called from the main daemon thread, so we can't race here. Moreover
@devs and @privateData are self-lockable objects, so no problem there
either.
Signed-off-by: NErik Skultety <eskultet@redhat.com>
上级 36555364
...@@ -1619,13 +1619,10 @@ nodeStateCleanup(void) ...@@ -1619,13 +1619,10 @@ nodeStateCleanup(void)
if (!driver) if (!driver)
return -1; return -1;
nodeDeviceLock();
virObjectUnref(driver->privateData); virObjectUnref(driver->privateData);
virObjectUnref(driver->nodeDeviceEventState); virObjectUnref(driver->nodeDeviceEventState);
virNodeDeviceObjListFree(driver->devs); virNodeDeviceObjListFree(driver->devs);
nodeDeviceUnlock();
virMutexDestroy(&driver->lock); virMutexDestroy(&driver->lock);
VIR_FREE(driver); VIR_FREE(driver);
...@@ -1846,23 +1843,21 @@ nodeStateInitialize(bool privileged, ...@@ -1846,23 +1843,21 @@ nodeStateInitialize(bool privileged,
return -1; return -1;
} }
nodeDeviceLock();
if (!(driver->devs = virNodeDeviceObjListNew()) || if (!(driver->devs = virNodeDeviceObjListNew()) ||
!(priv = udevEventDataNew())) !(priv = udevEventDataNew()))
goto unlock; goto cleanup;
driver->privateData = priv; driver->privateData = priv;
driver->nodeDeviceEventState = virObjectEventStateNew(); driver->nodeDeviceEventState = virObjectEventStateNew();
if (udevPCITranslateInit(privileged) < 0) if (udevPCITranslateInit(privileged) < 0)
goto unlock; goto cleanup;
udev = udev_new(); udev = udev_new();
if (!udev) { if (!udev) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s", virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("failed to create udev context")); _("failed to create udev context"));
goto unlock; goto cleanup;
} }
#if HAVE_UDEV_LOGGING #if HAVE_UDEV_LOGGING
/* cast to get rid of missing-format-attribute warning */ /* cast to get rid of missing-format-attribute warning */
...@@ -1908,7 +1903,6 @@ nodeStateInitialize(bool privileged, ...@@ -1908,7 +1903,6 @@ nodeStateInitialize(bool privileged,
goto unlock; goto unlock;
virObjectUnlock(priv); virObjectUnlock(priv);
nodeDeviceUnlock();
/* Populate with known devices */ /* Populate with known devices */
if (udevEnumerateDevices(udev) != 0) if (udevEnumerateDevices(udev) != 0)
...@@ -1921,9 +1915,7 @@ nodeStateInitialize(bool privileged, ...@@ -1921,9 +1915,7 @@ nodeStateInitialize(bool privileged,
return -1; return -1;
unlock: unlock:
if (priv) virObjectUnlock(priv);
virObjectUnlock(priv);
nodeDeviceUnlock();
goto cleanup; goto cleanup;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册