Follow up to the safe_logout feature patch.
Cache the safe_logout setting when iscsid is started.

Signed-off-by: Chris Leech <[email protected]>
---
 usr/initiator.c | 6 +-----
 usr/iscsid.c    | 6 ++++++
 usr/iscsid.h    | 1 +
 3 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/usr/initiator.c b/usr/initiator.c
index bedc4a8..d396750 100644
--- a/usr/initiator.c
+++ b/usr/initiator.c
@@ -2334,7 +2334,6 @@ int session_logout_task(int sid, queue_task_t *qtask)
        iscsi_session_t *session;
        iscsi_conn_t *conn;
        int rc = ISCSI_SUCCESS;
-       char *safe;
 
        session = session_find_by_sid(sid);
        if (!session) {
@@ -2357,14 +2356,11 @@ invalid_state:
                return ISCSI_ERR_INTERNAL;
        }
 
-       safe = cfg_get_string_param(dconfig->config_file, "iscsid.safe_logout");
-       if (safe && !strcmp(safe, "Yes") && session_in_use(sid)) {
+       if (dconfig->safe_logout && session_in_use(sid)) {
                log_error("Session is actively in use for mounted storage, "
                          "and iscsid.safe_logout is configured.\n");
-               free(safe);
                return ISCSI_ERR_BUSY;
        }
-       free(safe);
 
        /* FIXME: logout all active connections */
        conn = &session->conn[0];
diff --git a/usr/iscsid.c b/usr/iscsid.c
index f4f4f38..033a71f 100644
--- a/usr/iscsid.c
+++ b/usr/iscsid.c
@@ -341,6 +341,7 @@ int main(int argc, char *argv[])
        char *config_file = CONFIG_FILE;
        char *initiatorname_file = INITIATOR_NAME_FILE;
        char *pid_file = PID_FILE;
+       char *safe_logout;
        int ch, longindex;
        uid_t uid = 0;
        struct sigaction sa_old;
@@ -520,6 +521,11 @@ int main(int argc, char *argv[])
                 daemon_config.initiator_name : "NOT SET");
        log_debug(1, "InitiatorAlias=%s", daemon_config.initiator_alias);
 
+       safe_logout = cfg_get_string_param(config_file, "iscsid.safe_logout");
+       if (safe_logout && !strcmp(safe_logout, "Yes"))
+               daemon_config.safe_logout = 1;
+       free(safe_logout);
+
        pid = fork();
        if (pid == 0) {
                int nr_found = 0;
diff --git a/usr/iscsid.h b/usr/iscsid.h
index 15f264f..b9f3d54 100644
--- a/usr/iscsid.h
+++ b/usr/iscsid.h
@@ -29,6 +29,7 @@ struct iscsi_daemon_config {
        char *pid_file;
        char *initiator_name;
        char *initiator_alias;
+       int safe_logout;
 };
 extern struct iscsi_daemon_config *dconfig;
 
-- 
2.1.0

-- 
You received this message because you are subscribed to the Google Groups 
"open-iscsi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/open-iscsi.
For more options, visit https://groups.google.com/d/optout.

Reply via email to