Rework the way we enable CTL iSCSI port. Previously conf_apply()

needed it to be already enabled, because listening in proxy mode
requires it; however, it's conf_apply() that opens pidfiles,
so it resulted in port being enabled before pidfile was opened.
This was not so bad, but it was also disabled when pidfile couldn't
be opened due to ctld already running; this means that starting
second ctld instance screwed up the first.

Sponsored by:	The FreeBSD Foundation
This commit is contained in:
Edward Tomasz Napierala 2014-04-16 10:43:12 +00:00
parent 6e4f347cd6
commit a113ac0506
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=264528
3 changed files with 16 additions and 8 deletions

View File

@ -1209,6 +1209,19 @@ conf_apply(struct conf *oldconf, struct conf *newconf)
}
}
if (oldconf->conf_kernel_port_on != newconf->conf_kernel_port_on) {
if (newconf->conf_kernel_port_on == true) {
log_debugx("enabling CTL iSCSI port");
error = kernel_port_on();
if (error != 0)
log_errx(1, "failed to enable CTL iSCSI port, exiting");
} else {
error = kernel_port_off();
if (error != 0)
log_warnx("failed to disable CTL iSCSI port");
}
}
TAILQ_FOREACH_SAFE(oldtarg, &oldconf->conf_targets, t_next, tmptarg) {
/*
* First, remove any targets present in the old configuration
@ -1837,11 +1850,6 @@ main(int argc, char **argv)
newconf->conf_debug = debug;
}
log_debugx("enabling CTL iSCSI port");
error = kernel_port_on();
if (error != 0)
log_errx(1, "failed to enable CTL iSCSI port, exiting");
error = conf_apply(oldconf, newconf);
if (error != 0)
log_errx(1, "failed to apply configuration, exiting");
@ -1886,9 +1894,6 @@ main(int argc, char **argv)
log_debugx("disabling CTL iSCSI port "
"and terminating all connections");
error = kernel_port_off();
if (error != 0)
log_warnx("failed to disable CTL iSCSI port");
oldconf = newconf;
newconf = conf_new();

View File

@ -156,6 +156,7 @@ struct conf {
bool conf_default_pg_defined;
bool conf_default_ag_defined;
bool conf_kernel_port_on;
};
#define CONN_SESSION_TYPE_NONE 0

View File

@ -773,6 +773,8 @@ conf_new_from_file(const char *path)
portal_group_add_listen(pg, "[::]:3260", false);
}
conf->conf_kernel_port_on = true;
error = conf_verify(conf);
if (error != 0) {
conf_delete(conf);