mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-10 23:07:44 +00:00
locking: relax PID requirement
Some hypervisors like Xen do not have PIDs associated with domains. Relax the requirement for PID != 0 in the locking code so it can be used by hypervisors that do not represent domains as a process running on the host. Signed-off-by: Jim Fehlig <jfehlig@suse.com>
This commit is contained in:
parent
fa19aca168
commit
ee3eddb332
@ -678,7 +678,7 @@ virLockDaemonClientFree(void *opaque)
|
||||
signum = SIGKILL;
|
||||
else
|
||||
signum = 0;
|
||||
if (virProcessKill(priv->clientPid, signum) < 0) {
|
||||
if (priv->clientPid != 0 && virProcessKill(priv->clientPid, signum) < 0) {
|
||||
if (errno == ESRCH)
|
||||
break;
|
||||
|
||||
|
@ -62,7 +62,7 @@ virLockSpaceProtocolDispatchAcquireResource(virNetServerPtr server ATTRIBUTE_UNU
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!priv->ownerPid) {
|
||||
if (!priv->ownerId) {
|
||||
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
|
||||
_("lock owner details have not been registered"));
|
||||
goto cleanup;
|
||||
@ -120,7 +120,7 @@ virLockSpaceProtocolDispatchCreateResource(virNetServerPtr server ATTRIBUTE_UNUS
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!priv->ownerPid) {
|
||||
if (!priv->ownerId) {
|
||||
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
|
||||
_("lock owner details have not been registered"));
|
||||
goto cleanup;
|
||||
@ -169,7 +169,7 @@ virLockSpaceProtocolDispatchDeleteResource(virNetServerPtr server ATTRIBUTE_UNUS
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!priv->ownerPid) {
|
||||
if (!priv->ownerId) {
|
||||
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
|
||||
_("lock owner details have not been registered"));
|
||||
goto cleanup;
|
||||
@ -218,7 +218,7 @@ virLockSpaceProtocolDispatchNew(virNetServerPtr server ATTRIBUTE_UNUSED,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!priv->ownerPid) {
|
||||
if (!priv->ownerId) {
|
||||
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
|
||||
_("lock owner details have not been registered"));
|
||||
goto cleanup;
|
||||
@ -273,9 +273,9 @@ virLockSpaceProtocolDispatchRegister(virNetServerPtr server ATTRIBUTE_UNUSED,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (priv->ownerPid) {
|
||||
if (!args->owner.id) {
|
||||
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
|
||||
_("lock owner details have already been registered"));
|
||||
_("lock owner details have not been registered"));
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
@ -320,7 +320,7 @@ virLockSpaceProtocolDispatchReleaseResource(virNetServerPtr server ATTRIBUTE_UNU
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!priv->ownerPid) {
|
||||
if (!priv->ownerId) {
|
||||
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
|
||||
_("lock owner details have not been registered"));
|
||||
goto cleanup;
|
||||
@ -370,7 +370,7 @@ virLockSpaceProtocolDispatchRestrict(virNetServerPtr server ATTRIBUTE_UNUSED,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (!priv->ownerPid) {
|
||||
if (!priv->ownerId) {
|
||||
virReportError(VIR_ERR_OPERATION_INVALID, "%s",
|
||||
_("lock owner details have not been registered"));
|
||||
goto cleanup;
|
||||
|
@ -466,11 +466,8 @@ static int virLockManagerLockDaemonNew(virLockManagerPtr lock,
|
||||
_("Missing ID parameter for domain object"));
|
||||
return -1;
|
||||
}
|
||||
if (priv->pid == 0) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("Missing PID parameter for domain object"));
|
||||
return -1;
|
||||
}
|
||||
if (priv->pid == 0)
|
||||
VIR_DEBUG("Missing PID parameter for domain object");
|
||||
if (!priv->name) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("Missing name parameter for domain object"));
|
||||
|
Loading…
Reference in New Issue
Block a user