mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 13:45:38 +00:00
sanlock: Forbid VIR_DOMAIN_LOCK_FAILURE_RESTART
https://bugzilla.redhat.com/show_bug.cgi?id=905282 https://bugzilla.redhat.com/show_bug.cgi?id=967494 When lock failure is detected by sanlock, our sanlock_helper kill script will try to restart (shutdown followed by start) the affected domain when RESTART action is configured for it. While shutting down kills QEMU and removes all its leases (which is what sanlock wants to happen), trying to start it again just hangs because libvirt tries reacquire the locks in the failed lock space. Hence, this action cannot be supported by sanlock driver. Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
This commit is contained in:
parent
e3dd35e881
commit
2cc27c34be
@ -786,10 +786,10 @@ virLockManagerSanlockRegisterKillscript(int sock,
|
||||
return 0;
|
||||
|
||||
case VIR_DOMAIN_LOCK_FAILURE_POWEROFF:
|
||||
case VIR_DOMAIN_LOCK_FAILURE_RESTART:
|
||||
case VIR_DOMAIN_LOCK_FAILURE_PAUSE:
|
||||
break;
|
||||
|
||||
case VIR_DOMAIN_LOCK_FAILURE_RESTART:
|
||||
case VIR_DOMAIN_LOCK_FAILURE_IGNORE:
|
||||
case VIR_DOMAIN_LOCK_FAILURE_LAST:
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
|
@ -91,33 +91,13 @@ main(int argc, char **argv)
|
||||
ret = EXIT_SUCCESS;
|
||||
break;
|
||||
|
||||
case VIR_DOMAIN_LOCK_FAILURE_RESTART:
|
||||
if (virDomainIsPersistent(dom)) {
|
||||
if ((virDomainDestroy(dom) == 0 ||
|
||||
virDomainIsActive(dom) == 0) &&
|
||||
virDomainCreate(dom) == 0)
|
||||
ret = EXIT_SUCCESS;
|
||||
} else {
|
||||
xml = virDomainGetXMLDesc(dom,
|
||||
VIR_DOMAIN_XML_SECURE |
|
||||
VIR_DOMAIN_XML_INACTIVE);
|
||||
|
||||
if (!xml ||
|
||||
(virDomainDestroy(dom) < 0 &&
|
||||
virDomainIsActive(dom) != 0))
|
||||
goto cleanup;
|
||||
virDomainFree(dom);
|
||||
if ((dom = virDomainCreateXML(conn, xml, 0)))
|
||||
ret = EXIT_SUCCESS;
|
||||
}
|
||||
break;
|
||||
|
||||
case VIR_DOMAIN_LOCK_FAILURE_PAUSE:
|
||||
if (virDomainSuspend(dom) == 0)
|
||||
ret = EXIT_SUCCESS;
|
||||
break;
|
||||
|
||||
case VIR_DOMAIN_LOCK_FAILURE_DEFAULT:
|
||||
case VIR_DOMAIN_LOCK_FAILURE_RESTART:
|
||||
case VIR_DOMAIN_LOCK_FAILURE_IGNORE:
|
||||
case VIR_DOMAIN_LOCK_FAILURE_LAST:
|
||||
fprintf(stderr, _("unsupported failure action: '%s'\n"),
|
||||
|
Loading…
Reference in New Issue
Block a user