mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
Make autostart of virtlockd actually work
The virnetsocket.c API is hardcoded to pass --timeout=30 to any daemon it auto-starts. For inexplicable reasons the virtlockd daemon did not implement the --timeout option, so it would immediately exit on autostart with an error. Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
This commit is contained in:
parent
e18a80a3a0
commit
727efb9696
@ -1143,6 +1143,7 @@ virLockDaemonUsage(const char *argv0, bool privileged)
|
||||
" -h | --help Display program help:\n"
|
||||
" -v | --verbose Verbose messages.\n"
|
||||
" -d | --daemon Run as a daemon & write PID file.\n"
|
||||
" -t | --timeout <secs> Exit after timeout period.\n"
|
||||
" -f | --config <file> Configuration file.\n"
|
||||
" -V | --version Display version information.\n"
|
||||
" -p | --pid-file <file> Change name of PID file.\n"
|
||||
@ -1195,6 +1196,7 @@ int main(int argc, char **argv) {
|
||||
char *pid_file = NULL;
|
||||
int pid_file_fd = -1;
|
||||
char *sock_file = NULL;
|
||||
int timeout = -1; /* -t: Shutdown timeout */
|
||||
char *state_file = NULL;
|
||||
bool implicit_conf = false;
|
||||
mode_t old_umask;
|
||||
@ -1206,6 +1208,7 @@ int main(int argc, char **argv) {
|
||||
{ "verbose", no_argument, &verbose, 'v'},
|
||||
{ "daemon", no_argument, &godaemon, 'd'},
|
||||
{ "config", required_argument, NULL, 'f'},
|
||||
{ "timeout", required_argument, NULL, 't'},
|
||||
{ "pid-file", required_argument, NULL, 'p'},
|
||||
{ "version", no_argument, NULL, 'V' },
|
||||
{ "help", no_argument, NULL, 'h' },
|
||||
@ -1226,6 +1229,7 @@ int main(int argc, char **argv) {
|
||||
while (1) {
|
||||
int optidx = 0;
|
||||
int c;
|
||||
char *tmp;
|
||||
|
||||
c = getopt_long(argc, argv, "ldf:p:t:vVh", opts, &optidx);
|
||||
|
||||
@ -1244,6 +1248,16 @@ int main(int argc, char **argv) {
|
||||
godaemon = 1;
|
||||
break;
|
||||
|
||||
case 't':
|
||||
if (virStrToLong_i(optarg, &tmp, 10, &timeout) != 0
|
||||
|| timeout <= 0
|
||||
/* Ensure that we can multiply by 1000 without overflowing. */
|
||||
|| timeout > INT_MAX / 1000) {
|
||||
VIR_ERROR(_("Invalid value for timeout"));
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
break;
|
||||
|
||||
case 'p':
|
||||
VIR_FREE(pid_file);
|
||||
if (VIR_STRDUP_QUIET(pid_file, optarg) < 0)
|
||||
@ -1407,6 +1421,12 @@ int main(int argc, char **argv) {
|
||||
}
|
||||
}
|
||||
|
||||
if (timeout != -1) {
|
||||
VIR_DEBUG("Registering shutdown timeout %d", timeout);
|
||||
virNetServerAutoShutdown(lockDaemon->srv,
|
||||
timeout);
|
||||
}
|
||||
|
||||
if ((virLockDaemonSetupSignals(lockDaemon->srv)) < 0) {
|
||||
ret = VIR_LOCK_DAEMON_ERR_SIGNAL;
|
||||
goto cleanup;
|
||||
|
Loading…
x
Reference in New Issue
Block a user