提交 6ffcab65 编写于 作者: D Daniel P. Berrange

Use atomic ops to increment nextvmid

Use atomic ops to increment nextvmid and encapsulate it in a
method to prevent accidental non-atomic access
上级 582c445a
......@@ -52,6 +52,7 @@
#include "domain_nwfilter.h"
#include "virfile.h"
#include "virstring.h"
#include "viratomic.h"
#include "configmake.h"
#define VIR_FROM_THIS VIR_FROM_QEMU
......@@ -782,3 +783,8 @@ qemuRemoveSharedDisk(virHashTablePtr sharedDisks,
VIR_FREE(key);
return 0;
}
int qemuDriverAllocateID(virQEMUDriverPtr driver)
{
return virAtomicIntInc(&driver->nextvmid);
}
......@@ -260,4 +260,6 @@ int qemuRemoveSharedDisk(virHashTablePtr sharedDisks,
char * qemuGetSharedDiskKey(const char *disk_path)
ATTRIBUTE_NONNULL(1);
int qemuDriverAllocateID(virQEMUDriverPtr driver);
#endif /* __QEMUD_CONF_H */
......@@ -3586,7 +3586,7 @@ int qemuProcessStart(virConnectPtr conn,
if (virDomainObjSetDefTransient(driver->caps, vm, true) < 0)
goto cleanup;
vm->def->id = driver->nextvmid++;
vm->def->id = qemuDriverAllocateID(driver);
qemuDomainSetFakeReboot(driver, vm, false);
virDomainObjSetState(vm, VIR_DOMAIN_SHUTOFF, VIR_DOMAIN_SHUTOFF_UNKNOWN);
......@@ -4438,7 +4438,7 @@ int qemuProcessAttach(virConnectPtr conn ATTRIBUTE_UNUSED,
if (virDomainObjSetDefTransient(driver->caps, vm, true) < 0)
goto cleanup;
vm->def->id = driver->nextvmid++;
vm->def->id = qemuDriverAllocateID(driver);
if (!driver->nactive && driver->inhibitCallback)
driver->inhibitCallback(true, driver->inhibitOpaque);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册