diff options
author | Mike Christie <michaelc@cs.wisc.edu> | 2010-01-29 17:46:54 -0600 |
---|---|---|
committer | Mike Christie <michaelc@cs.wisc.edu> | 2010-03-22 17:32:06 -0500 |
commit | ac9070ddffbea0e8cce6ba68f6ea1378215591ee (patch) | |
tree | e128cb07a5731c2e5c34a6edf57fab2e55bb2722 | |
parent | 8c24522b2ce48136d4eac0d1137685327bd3a212 (diff) | |
download | open-iscsi-ac9070ddffbea0e8cce6ba68f6ea1378215591ee.tar.gz |
iscsi tools: mv iscsid request helpers to its own file
This patch just moves the iscsid request helpers to its
own file iscsid_req.c/iscsid_req.h.
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
-rw-r--r-- | usr/Makefile | 2 | ||||
-rw-r--r-- | usr/config.h | 1 | ||||
-rw-r--r-- | usr/discovery.c | 8 | ||||
-rw-r--r-- | usr/iscsiadm.c | 9 | ||||
-rw-r--r-- | usr/iscsid.c | 3 | ||||
-rw-r--r-- | usr/iscsid_req.c | 219 | ||||
-rw-r--r-- | usr/iscsid_req.h | 37 | ||||
-rw-r--r-- | usr/iscsistart.c | 5 | ||||
-rw-r--r-- | usr/session_info.c | 4 | ||||
-rw-r--r-- | usr/session_mgmt.c | 1 | ||||
-rw-r--r-- | usr/util.c | 219 | ||||
-rw-r--r-- | usr/util.h | 14 |
12 files changed, 295 insertions, 227 deletions
diff --git a/usr/Makefile b/usr/Makefile index 4bde4be..f533177 100644 --- a/usr/Makefile +++ b/usr/Makefile @@ -38,7 +38,7 @@ SYSDEPS_SRCS = $(wildcard ../utils/sysdeps/*.o) # sources shared between iscsid, iscsiadm and iscsistart ISCSI_LIB_SRCS = util.o io.o auth.o login.o log.o md5.o sha1.o iface.o idbm.o \ sysfs.o host.o session_info.o iscsi_sysfs.o iscsi_net_util.o \ - $(SYSDEPS_SRCS) + iscsid_req.o $(SYSDEPS_SRCS) # core initiator files INITIATOR_SRCS = initiator.o scsi.o actor.o event_poll.o mgmt_ipc.o isns.o \ transport.o cxgb3i.o be2iscsi.o diff --git a/usr/config.h b/usr/config.h index 8fd1f77..2ade266 100644 --- a/usr/config.h +++ b/usr/config.h @@ -26,6 +26,7 @@ #include "types.h" #include "auth.h" /* for the username and password sizes */ #include "list.h" +#include "iscsi_proto.h" #include "iscsi_net_util.h" /* ISIDs now have a typed naming authority in them. We use an OUI */ diff --git a/usr/discovery.c b/usr/discovery.c index 473b839..ccb4f13 100644 --- a/usr/discovery.c +++ b/usr/discovery.c @@ -39,9 +39,9 @@ #include "log.h" #include "idbm.h" #include "iscsi_settings.h" -#include "util.h" #include "sysdeps.h" #include "fw_context.h" +#include "iscsid_req.h" #ifdef SLP_ENABLE #include "iscsi-slp-discovery.h" @@ -129,7 +129,7 @@ int discovery_offload_sendtargets(int host_no, int do_login, * and get back the results. We should do this since it would * allows us to then process the results like software iscsi. */ - rc = do_iscsid(&req, &rsp, 1); + rc = iscsid_exec_req(&req, &rsp, 1); if (rc) { log_error("Could not offload sendtargets to %s.\n", drec->address); @@ -563,7 +563,7 @@ static int request_initiator_name(void) memset(&req, 0, sizeof(req)); req.command = MGMT_IPC_CONFIG_INAME; - rc = do_iscsid(&req, &rsp, 1); + rc = iscsid_exec_req(&req, &rsp, 1); if (rc) return EIO; @@ -573,7 +573,7 @@ static int request_initiator_name(void) memset(&req, 0, sizeof(req)); req.command = MGMT_IPC_CONFIG_IALIAS; - rc = do_iscsid(&req, &rsp, 0); + rc = iscsid_exec_req(&req, &rsp, 0); if (rc) /* alias is optional so return ok */ return 0; diff --git a/usr/iscsiadm.c b/usr/iscsiadm.c index 3a141f5..09b6bad 100644 --- a/usr/iscsiadm.c +++ b/usr/iscsiadm.c @@ -46,6 +46,7 @@ #include "sysdeps.h" #include "idbm_fields.h" #include "session_mgmt.h" +#include "iscsid_req.h" struct iscsi_ipc *ipc = NULL; /* dummy */ static char program_name[] = "iscsiadm"; @@ -203,7 +204,7 @@ static void kill_iscsid(int priority) memset(&req, 0, sizeof(req)); req.command = MGMT_IPC_IMMEDIATE_STOP; - rc = do_iscsid(&req, &rsp, 0); + rc = iscsid_exec_req(&req, &rsp, 0); if (rc) { iscsid_handle_error(rc); log_error("Could not stop iscsid. Trying sending iscsid " @@ -537,7 +538,7 @@ static char *get_config_file(void) memset(&req, 0, sizeof(req)); req.command = MGMT_IPC_CONFIG_FILE; - rc = do_iscsid(&req, &rsp, 1); + rc = iscsid_exec_req(&req, &rsp, 1); if (rc) return NULL; @@ -587,7 +588,7 @@ session_stats(void *data, struct session_info *info) req.command = MGMT_IPC_SESSION_STATS; req.u.session.sid = info->sid; - rc = do_iscsid(&req, &rsp, 1); + rc = iscsid_exec_req(&req, &rsp, 1); if (rc) return EIO; @@ -1006,7 +1007,7 @@ static int isns_dev_attr_query(discovery_rec_t *drec, memset(&req, 0, sizeof(iscsiadm_req_t)); req.command = MGMT_IPC_ISNS_DEV_ATTR_QUERY; - err = do_iscsid(&req, &rsp, 1); + err = iscsid_exec_req(&req, &rsp, 1); if (err) { iscsid_handle_error(err); return EIO; diff --git a/usr/iscsid.c b/usr/iscsid.c index c939119..29fcc9e 100644 --- a/usr/iscsid.c +++ b/usr/iscsid.c @@ -47,6 +47,7 @@ #include "session_info.h" #include "sysdeps.h" #include "discoveryd.h" +#include "iscsid_req.h" /* global config info */ struct iscsi_daemon_config daemon_config; @@ -269,7 +270,7 @@ static int sync_session(void *data, struct session_info *info) memcpy(&req.u.session.rec, &rec, sizeof(node_rec_t)); retry: - rc = do_iscsid(&req, &rsp, 0); + rc = iscsid_exec_req(&req, &rsp, 0); if (rc == MGMT_IPC_ERR_ISCSID_NOTCONN && retries < 30) { retries++; sleep(1); diff --git a/usr/iscsid_req.c b/usr/iscsid_req.c new file mode 100644 index 0000000..4f3b439 --- /dev/null +++ b/usr/iscsid_req.c @@ -0,0 +1,219 @@ +/* + * iscsid communication helpers + * + * Copyright (C) 2004 Dmitry Yusupov, Alex Aizman + * Copyright (C) 2006 - 2010 Mike Christie + * Copyright (C) 2006 - 2010 Red Hat, Inc. All rights reserved. + * maintained by open-iscsi@googlegroups.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * See the file COPYING included with this distribution for more details. + */ +#include <unistd.h> +#include <stdlib.h> +#include <string.h> +#include <errno.h> +#include <sys/un.h> +#include <sys/types.h> +#include <sys/socket.h> + +#include "initiator.h" +#include "log.h" +#include "mgmt_ipc.h" +#include "util.h" +#include "config.h" + +static void iscsid_startup(void) +{ + char *startup_cmd; + + startup_cmd = cfg_get_string_param(CONFIG_FILE, "iscsid.startup"); + if (!startup_cmd) { + log_error("iscsid is not running. Could not start it up " + "automatically using the startup command in the " + "/etc/iscsi/iscsid.conf iscsid.startup setting. " + "Please check that the file exists or that your " + "init scripts have started iscsid."); + return; + } + + system(startup_cmd); +} + +#define MAXSLEEP 128 + +static mgmt_ipc_err_e iscsid_connect(int *fd, int start_iscsid) +{ + int nsec; + struct sockaddr_un addr; + + *fd = socket(AF_LOCAL, SOCK_STREAM, 0); + if (*fd < 0) { + log_error("can not create IPC socket (%d)!", errno); + return MGMT_IPC_ERR_ISCSID_NOTCONN; + } + + memset(&addr, 0, sizeof(addr)); + addr.sun_family = AF_LOCAL; + memcpy((char *) &addr.sun_path + 1, ISCSIADM_NAMESPACE, + strlen(ISCSIADM_NAMESPACE)); + /* + * Trying to connect with exponential backoff + */ + for (nsec = 1; nsec <= MAXSLEEP; nsec <<= 1) { + if (connect(*fd, (struct sockaddr *) &addr, sizeof(addr)) == 0) + /* Connection established */ + return MGMT_IPC_OK; + + /* If iscsid isn't there, there's no sense + * in retrying. */ + if (errno == ECONNREFUSED) { + if (start_iscsid && nsec == 1) + iscsid_startup(); + else + break; + } + + /* + * Delay before trying again + */ + if (nsec <= MAXSLEEP/2) + sleep(nsec); + } + log_error("can not connect to iSCSI daemon (%d)!", errno); + return MGMT_IPC_ERR_ISCSID_NOTCONN; +} + +mgmt_ipc_err_e iscsid_request(int *fd, iscsiadm_req_t *req, int start_iscsid) +{ + int err; + + err = iscsid_connect(fd, start_iscsid); + if (err) + return err; + + if ((err = write(*fd, req, sizeof(*req))) != sizeof(*req)) { + log_error("got write error (%d/%d) on cmd %d, daemon died?", + err, errno, req->command); + close(*fd); + return MGMT_IPC_ERR_ISCSID_COMM_ERR; + } + return MGMT_IPC_OK; +} + +mgmt_ipc_err_e iscsid_response(int fd, iscsiadm_cmd_e cmd, iscsiadm_rsp_t *rsp) +{ + mgmt_ipc_err_e iscsi_err; + int err; + + if ((err = recv(fd, rsp, sizeof(*rsp), MSG_WAITALL)) != sizeof(*rsp)) { + log_error("got read error (%d/%d), daemon died?", err, errno); + iscsi_err = MGMT_IPC_ERR_ISCSID_COMM_ERR; + } else + iscsi_err = rsp->err; + close(fd); + + if (!iscsi_err && cmd != rsp->command) + iscsi_err = MGMT_IPC_ERR_ISCSID_COMM_ERR; + return iscsi_err; +} + +mgmt_ipc_err_e iscsid_exec_req(iscsiadm_req_t *req, iscsiadm_rsp_t *rsp, + int start_iscsid) +{ + int fd; + mgmt_ipc_err_e err; + + err = iscsid_request(&fd, req, start_iscsid); + if (err) + return err; + + return iscsid_response(fd, req->command, rsp); +} + +int iscsid_req_wait(iscsiadm_cmd_e cmd, int fd) +{ + iscsiadm_rsp_t rsp; + + memset(&rsp, 0, sizeof(iscsiadm_rsp_t)); + return iscsid_response(fd, cmd, &rsp); +} + +int iscsid_req_by_rec_async(iscsiadm_cmd_e cmd, node_rec_t *rec, int *fd) +{ + iscsiadm_req_t req; + + memset(&req, 0, sizeof(iscsiadm_req_t)); + req.command = cmd; + memcpy(&req.u.session.rec, rec, sizeof(node_rec_t)); + + return iscsid_request(fd, &req, 1); +} + +int iscsid_req_by_rec(iscsiadm_cmd_e cmd, node_rec_t *rec) +{ + int err, fd; + + err = iscsid_req_by_rec_async(cmd, rec, &fd); + if (err) + return err; + return iscsid_req_wait(cmd, fd); +} + +int iscsid_req_by_sid_async(iscsiadm_cmd_e cmd, int sid, int *fd) +{ + iscsiadm_req_t req; + + memset(&req, 0, sizeof(iscsiadm_req_t)); + req.command = cmd; + req.u.session.sid = sid; + + return iscsid_request(fd, &req, 1); +} + +int iscsid_req_by_sid(iscsiadm_cmd_e cmd, int sid) +{ + int err, fd; + + err = iscsid_req_by_sid_async(cmd, sid, &fd); + if (err) + return err; + return iscsid_req_wait(cmd, fd); +} + +void iscsid_handle_error(mgmt_ipc_err_e err) +{ + static char *err_msgs[] = { + /* 0 */ "", + /* 1 */ "unknown error", + /* 2 */ "not found", + /* 3 */ "no available memory", + /* 4 */ "encountered connection failure", + /* 5 */ "encountered iSCSI login failure", + /* 6 */ "encountered iSCSI database failure", + /* 7 */ "invalid parameter", + /* 8 */ "connection timed out", + /* 9 */ "internal error", + /* 10 */ "encountered iSCSI logout failure", + /* 11 */ "iSCSI PDU timed out", + /* 12 */ "iSCSI driver not found. Please make sure it is loaded, and retry the operation", + /* 13 */ "daemon access denied", + /* 14 */ "iSCSI driver does not support requested capability.", + /* 15 */ "already exists", + /* 16 */ "Unknown request", + /* 17 */ "encountered iSNS failure", + /* 18 */ "could not communicate to iscsid", + /* 19 */ "encountered non-retryable iSCSI login failure", + /* 20 */ "could not connect to iscsid", + }; + log_error("initiator reported error (%d - %s)", err, err_msgs[err]); +} diff --git a/usr/iscsid_req.h b/usr/iscsid_req.h new file mode 100644 index 0000000..3bba2f4 --- /dev/null +++ b/usr/iscsid_req.h @@ -0,0 +1,37 @@ +/* + * iscsid communication helpers + * + * Copyright (C) 2010 Mike Christie + * Copyright (C) 2010 Red Hat, Inc. All rights reserved. + * maintained by open-iscsi@googlegroups.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * See the file COPYING included with this distribution for more details. + */ + +#ifndef ISCSID_REQ_H_ +#define ISCSID_REQ_H + +struct iscsiadm_req; +struct iscsiadm_rsp; +struct node_rec; + +extern int iscsid_exec_req(struct iscsiadm_req *req, struct iscsiadm_rsp *rsp, + int iscsid_start); +extern void iscsid_handle_error(int err); +extern int iscsid_req_wait(int cmd, int fd); +extern int iscsid_req_by_rec_async(int cmd, struct node_rec *rec, int *fd); +extern int iscsid_req_by_rec(int cmd, struct node_rec *rec); +extern int iscsid_req_by_sid_async(int cmd, int sid, int *fd); +extern int iscsid_req_by_sid(int cmd, int sid); + +#endif diff --git a/usr/iscsistart.c b/usr/iscsistart.c index 2080066..63d3e5f 100644 --- a/usr/iscsistart.c +++ b/usr/iscsistart.c @@ -46,6 +46,7 @@ #include "fw_context.h" #include "iface.h" #include "sysdeps.h" +#include "iscsid_req.h" /* global config info */ /* initiator needs initiator name/alias */ @@ -118,7 +119,7 @@ static int stop_event_loop(void) memset(&req, 0, sizeof(req)); req.command = MGMT_IPC_IMMEDIATE_STOP; - rc = do_iscsid(&req, &rsp, 0); + rc = iscsid_exec_req(&req, &rsp, 0); if (rc) { iscsid_handle_error(rc); log_error("Could not stop event_loop\n"); @@ -149,7 +150,7 @@ static int login_session(struct node_rec *rec) memcpy(&req.u.session.rec, rec, sizeof(*rec)); retry: - rc = do_iscsid(&req, &rsp, 0); + rc = iscsid_exec_req(&req, &rsp, 0); /* * handle race where iscsid proc is starting up while we are * trying to connect. diff --git a/usr/session_info.c b/usr/session_info.c index 1124a06..cecd8e8 100644 --- a/usr/session_info.c +++ b/usr/session_info.c @@ -3,7 +3,6 @@ #include <errno.h> #include "list.h" -#include "util.h" #include "log.h" #include "iscsi_sysfs.h" #include "version.h" @@ -13,6 +12,7 @@ #include "transport.h" #include "initiator.h" #include "iface.h" +#include "iscsid_req.h" int session_info_create_list(void *data, struct session_info *info) { @@ -107,7 +107,7 @@ static int print_iscsi_state(int sid, char *prefix) req.command = MGMT_IPC_SESSION_INFO; req.u.session.sid = sid; - err = do_iscsid(&req, &rsp, 1); + err = iscsid_exec_req(&req, &rsp, 1); /* * for drivers like qla4xxx, iscsid does not display * anything here since it does not know about it. diff --git a/usr/session_mgmt.c b/usr/session_mgmt.c index 547e7eb..2ff974e 100644 --- a/usr/session_mgmt.c +++ b/usr/session_mgmt.c @@ -30,6 +30,7 @@ #include "session_info.h" #include "iscsi_sysfs.h" #include "log.h" +#include "iscsid_req.h" static void log_login_msg(struct node_rec *rec, int rc) { @@ -1,3 +1,23 @@ +/* + * Misc helpers + * + * Copyright (C) 2004 Dmitry Yusupov, Alex Aizman + * Copyright (C) 2006 - 2010 Mike Christie + * Copyright (C) 2006 - 2010 Red Hat, Inc. All rights reserved. + * maintained by open-iscsi@googlegroups.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * See the file COPYING included with this distribution for more details. + */ #include <fcntl.h> #include <unistd.h> #include <stdlib.h> @@ -5,22 +25,10 @@ #include <string.h> #include <errno.h> #include <ctype.h> -#include <sys/un.h> -#include <sys/time.h> #include <sys/resource.h> #include "log.h" -#include "actor.h" -#include "iscsi_ipc.h" -#include "mgmt_ipc.h" -#include "config.h" -#include "initiator.h" -#include "version.h" #include "iscsi_settings.h" -#include "iscsi_sysfs.h" -#include "iscsi_proto.h" -#include "transport.h" -#include "idbm.h" #include "iface.h" #include "session_info.h" @@ -210,193 +218,6 @@ char *cfg_get_string_param(char *pathname, const char *key) return value; } -/* TODO: move iscsid client helpers to file */ -static void iscsid_startup(void) -{ - char *startup_cmd; - - startup_cmd = cfg_get_string_param(CONFIG_FILE, "iscsid.startup"); - if (!startup_cmd) { - log_error("iscsid is not running. Could not start it up " - "automatically using the startup command in the " - "/etc/iscsi/iscsid.conf iscsid.startup setting. " - "Please check that the file exists or that your " - "init scripts have started iscsid."); - return; - } - - system(startup_cmd); -} - -#define MAXSLEEP 128 - -static mgmt_ipc_err_e iscsid_connect(int *fd, int start_iscsid) -{ - int nsec; - struct sockaddr_un addr; - - *fd = socket(AF_LOCAL, SOCK_STREAM, 0); - if (*fd < 0) { - log_error("can not create IPC socket (%d)!", errno); - return MGMT_IPC_ERR_ISCSID_NOTCONN; - } - - memset(&addr, 0, sizeof(addr)); - addr.sun_family = AF_LOCAL; - memcpy((char *) &addr.sun_path + 1, ISCSIADM_NAMESPACE, - strlen(ISCSIADM_NAMESPACE)); - /* - * Trying to connect with exponential backoff - */ - for (nsec = 1; nsec <= MAXSLEEP; nsec <<= 1) { - if (connect(*fd, (struct sockaddr *) &addr, sizeof(addr)) == 0) - /* Connection established */ - return MGMT_IPC_OK; - - /* If iscsid isn't there, there's no sense - * in retrying. */ - if (errno == ECONNREFUSED) { - if (start_iscsid && nsec == 1) - iscsid_startup(); - else - break; - } - - /* - * Delay before trying again - */ - if (nsec <= MAXSLEEP/2) - sleep(nsec); - } - log_error("can not connect to iSCSI daemon (%d)!", errno); - return MGMT_IPC_ERR_ISCSID_NOTCONN; -} - -mgmt_ipc_err_e iscsid_request(int *fd, iscsiadm_req_t *req, int start_iscsid) -{ - int err; - - err = iscsid_connect(fd, start_iscsid); - if (err) - return err; - - if ((err = write(*fd, req, sizeof(*req))) != sizeof(*req)) { - log_error("got write error (%d/%d) on cmd %d, daemon died?", - err, errno, req->command); - close(*fd); - return MGMT_IPC_ERR_ISCSID_COMM_ERR; - } - return MGMT_IPC_OK; -} - -mgmt_ipc_err_e iscsid_response(int fd, iscsiadm_cmd_e cmd, iscsiadm_rsp_t *rsp) -{ - mgmt_ipc_err_e iscsi_err; - int err; - - if ((err = recv(fd, rsp, sizeof(*rsp), MSG_WAITALL)) != sizeof(*rsp)) { - log_error("got read error (%d/%d), daemon died?", err, errno); - iscsi_err = MGMT_IPC_ERR_ISCSID_COMM_ERR; - } else - iscsi_err = rsp->err; - close(fd); - - if (!iscsi_err && cmd != rsp->command) - iscsi_err = MGMT_IPC_ERR_ISCSID_COMM_ERR; - return iscsi_err; -} - -mgmt_ipc_err_e do_iscsid(iscsiadm_req_t *req, iscsiadm_rsp_t *rsp, - int start_iscsid) -{ - int fd; - mgmt_ipc_err_e err; - - err = iscsid_request(&fd, req, start_iscsid); - if (err) - return err; - - return iscsid_response(fd, req->command, rsp); -} - -int iscsid_req_wait(iscsiadm_cmd_e cmd, int fd) -{ - iscsiadm_rsp_t rsp; - - memset(&rsp, 0, sizeof(iscsiadm_rsp_t)); - return iscsid_response(fd, cmd, &rsp); -} - -int iscsid_req_by_rec_async(iscsiadm_cmd_e cmd, node_rec_t *rec, int *fd) -{ - iscsiadm_req_t req; - - memset(&req, 0, sizeof(iscsiadm_req_t)); - req.command = cmd; - memcpy(&req.u.session.rec, rec, sizeof(node_rec_t)); - - return iscsid_request(fd, &req, 1); -} - -int iscsid_req_by_rec(iscsiadm_cmd_e cmd, node_rec_t *rec) -{ - int err, fd; - - err = iscsid_req_by_rec_async(cmd, rec, &fd); - if (err) - return err; - return iscsid_req_wait(cmd, fd); -} - -int iscsid_req_by_sid_async(iscsiadm_cmd_e cmd, int sid, int *fd) -{ - iscsiadm_req_t req; - - memset(&req, 0, sizeof(iscsiadm_req_t)); - req.command = cmd; - req.u.session.sid = sid; - - return iscsid_request(fd, &req, 1); -} - -int iscsid_req_by_sid(iscsiadm_cmd_e cmd, int sid) -{ - int err, fd; - - err = iscsid_req_by_sid_async(cmd, sid, &fd); - if (err) - return err; - return iscsid_req_wait(cmd, fd); -} - -void iscsid_handle_error(mgmt_ipc_err_e err) -{ - static char *err_msgs[] = { - /* 0 */ "", - /* 1 */ "unknown error", - /* 2 */ "not found", - /* 3 */ "no available memory", - /* 4 */ "encountered connection failure", - /* 5 */ "encountered iSCSI login failure", - /* 6 */ "encountered iSCSI database failure", - /* 7 */ "invalid parameter", - /* 8 */ "connection timed out", - /* 9 */ "internal error", - /* 10 */ "encountered iSCSI logout failure", - /* 11 */ "iSCSI PDU timed out", - /* 12 */ "iSCSI driver not found. Please make sure it is loaded, and retry the operation", - /* 13 */ "daemon access denied", - /* 14 */ "iSCSI driver does not support requested capability.", - /* 15 */ "already exists", - /* 16 */ "Unknown request", - /* 17 */ "encountered iSNS failure", - /* 18 */ "could not communicate to iscsid", - /* 19 */ "encountered non-retryable iSCSI login failure", - /* 20 */ "could not connect to iscsid", - }; - log_error("initiator reported error (%d - %s)", err, err_msgs[err]); -} - int __iscsi_match_session(node_rec_t *rec, char *targetname, char *address, int port, struct iface_rec *iface) { @@ -3,8 +3,6 @@ #include <stdint.h> -struct iscsiadm_req; -struct iscsiadm_rsp; struct node_rec; struct iface_rec; struct session_info; @@ -13,18 +11,6 @@ extern int oom_adjust(void); extern void daemon_init(void); extern int increase_max_files(void); -extern int do_iscsid(struct iscsiadm_req *req, struct iscsiadm_rsp *rsp, - int iscsid_start); -extern void iscsid_handle_error(int err); -extern int iscsid_request(int *fd, struct iscsiadm_req *req, - int iscsid_start); -extern int iscsid_response(int fd, int cmd, struct iscsiadm_rsp *rsp); -extern int iscsid_req_wait(int cmd, int fd); -extern int iscsid_req_by_rec_async(int cmd, struct node_rec *rec, int *fd); -extern int iscsid_req_by_rec(int cmd, struct node_rec *rec); -extern int iscsid_req_by_sid_async(int cmd, int sid, int *fd); -extern int iscsid_req_by_sid(int cmd, int sid); - extern char *str_to_ipport(char *str, int *port, int *tgpt); extern int iscsi_match_session(void *data, struct session_info *info); |