diff --git a/0031-iscsid-add-initrd-option-to-set-run-from-initrd-hint.patch b/0031-iscsid-add-initrd-option-to-set-run-from-initrd-hint.patch new file mode 100644 index 0000000..358b50c --- /dev/null +++ b/0031-iscsid-add-initrd-option-to-set-run-from-initrd-hint.patch @@ -0,0 +1,61 @@ +From b1799fe84ed94a19bba6bcd7284ce8b038be4ffe Mon Sep 17 00:00:00 2001 +From: Chris Leech +Date: Mon, 10 Dec 2012 13:20:47 -0800 +Subject: iscsid: add --initrd option to set run from initrd hint for systemd + +See http://www.freedesktop.org/wiki/Software/systemd/RootStorageDaemons + +Signed-off-by: Chris Leech +--- + usr/iscsid.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +diff --git a/usr/iscsid.c b/usr/iscsid.c +index b4bb65b..7d71085 100644 +--- a/usr/iscsid.c ++++ b/usr/iscsid.c +@@ -61,6 +61,7 @@ static pid_t log_pid; + static gid_t gid; + static int daemonize = 1; + static int mgmt_ipc_fd; ++static int initrd = 0; + + static struct option const long_options[] = { + {"config", required_argument, NULL, 'c'}, +@@ -73,6 +74,7 @@ static struct option const long_options[] = { + {"pid", required_argument, NULL, 'p'}, + {"help", no_argument, NULL, 'h'}, + {"version", no_argument, NULL, 'v'}, ++ {"initrd", no_argument, &initrd, 1}, + {NULL, 0, NULL, 0}, + }; + +@@ -95,6 +97,7 @@ Open-iSCSI initiator daemon.\n\ + -p, --pid=pidfile use pid file (default " PID_FILE ").\n\ + -h, --help display this help and exit\n\ + -v, --version display version and exit\n\ ++ --initrd run from initrd\n\ + "); + } + exit(status); +@@ -383,12 +386,17 @@ int main(int argc, char *argv[]) + case 'h': + usage(0); + break; ++ case 0: ++ break; + default: + usage(1); + break; + } + } + ++ if (initrd) ++ argv[0][0] = '@'; ++ + /* initialize logger */ + log_pid = log_init(program_name, DEFAULT_AREA_SIZE, + daemonize ? log_do_log_daemon : log_do_log_std, NULL); +-- +1.7.11.7 + diff --git a/0032-iscsiadm-iscsid-newroot-command-to-survive-switch_ro.patch b/0032-iscsiadm-iscsid-newroot-command-to-survive-switch_ro.patch new file mode 100644 index 0000000..be06f26 --- /dev/null +++ b/0032-iscsiadm-iscsid-newroot-command-to-survive-switch_ro.patch @@ -0,0 +1,157 @@ +From ac3447ab680ef5319717fc6b85a4c5b22e652e5e Mon Sep 17 00:00:00 2001 +From: Chris Leech +Date: Fri, 7 Dec 2012 17:01:42 -0800 +Subject: iscsiadm, iscsid: newroot command to survive switch_root + +When started from initramfs, iscsid needs to be able to chroot itself +to the runtime filesystem before the switch_root occurs. In the +initramfs "iscsiadm --newroot {root fs mount before switch}" should be +called before the switch_root. + +Signed-off-by: Chris Leech +--- + usr/iscsiadm.c | 30 ++++++++++++++++++++++++++++++ + usr/mgmt_ipc.c | 11 +++++++++++ + usr/mgmt_ipc.h | 6 +++++- + 3 files changed, 46 insertions(+), 1 deletion(-) + +diff --git a/usr/iscsiadm.c b/usr/iscsiadm.c +index 8f9de05..323d0a8 100644 +--- a/usr/iscsiadm.c ++++ b/usr/iscsiadm.c +@@ -111,6 +111,7 @@ static struct option const long_options[] = + {"packetsize", required_argument, NULL, 'b'}, + {"count", required_argument, NULL, 'c'}, + {"interval", required_argument, NULL, 'i'}, ++ {"newroot", required_argument, NULL, 0}, + {NULL, 0, NULL, 0}, + }; + static char *short_options = "RlDVhm:a:b:c:C:p:P:T:H:i:I:U:k:L:d:r:n:v:o:sSt:u"; +@@ -131,6 +132,7 @@ iscsiadm -m session [ -hV ] [ -d debug_level ] [ -P printlevel] [ -r sessionid + iscsiadm -m iface [ -hV ] [ -d debug_level ] [ -P printlevel ] [ -I ifacename | -H hostno|MAC ] [ [ -o operation ] [ -n name ] [ -v value ] ] [ -C ping [ -a ip ] [ -b packetsize ] [ -c count ] [ -i interval ] ]\n\ + iscsiadm -m fw [ -l ]\n\ + iscsiadm -m host [ -P printlevel ] [ -H hostno|MAC ] [ -C chap [ -o operation ] [ -v chap_tbl_idx ] ]\n\ ++iscsiadm --newroot switch_root_path\n\ + iscsiadm -k priority\n"); + } + exit(status); +@@ -251,6 +253,22 @@ static void kill_iscsid(int priority) + } + } + ++static void do_newroot(char *newroot) ++{ ++ iscsiadm_req_t req; ++ iscsiadm_rsp_t rsp; ++ int rc; ++ ++ memset(&req, 0, sizeof(req)); ++ req.command = MGMT_IPC_NEWROOT; ++ strncpy(req.u.newroot.path, newroot, PATH_MAX); ++ rc = iscsid_exec_req(&req, &rsp, 0); ++ if (rc) { ++ iscsi_err_print_msg(rc); ++ log_error("Could not send NEWROOT command"); ++ } ++} ++ + /* + * TODO: we can display how the ifaces are related to node records. + * And we can add a scsi_host mode which would display how +@@ -2397,6 +2415,7 @@ main(int argc, char **argv) + { + char *ip = NULL, *name = NULL, *value = NULL; + char *targetname = NULL, *group_session_mgmt_mode = NULL; ++ char *newroot = NULL; + int ch, longindex, mode=-1, port=-1, do_login=0, do_rescan=0; + int rc=0, sid=-1, op=OP_NOOP, type=-1, do_logout=0, do_stats=0; + int do_login_all=0, do_logout_all=0, info_level=-1, num_ifaces = 0; +@@ -2433,6 +2452,12 @@ main(int argc, char **argv) + while ((ch = getopt_long(argc, argv, short_options, + long_options, &longindex)) >= 0) { + switch (ch) { ++ case 0: ++ if (long_options[longindex].flag != 0) ++ break; ++ if (!strcmp(long_options[longindex].name, "newroot")) ++ newroot = optarg; ++ break; + case 'k': + killiscsid = atoi(optarg); + if (killiscsid < 0) { +@@ -2579,6 +2604,11 @@ main(int argc, char **argv) + goto free_ifaces; + } + ++ if (newroot) { ++ do_newroot(newroot); ++ goto free_ifaces; ++ } ++ + if (mode < 0) + usage(ISCSI_ERR_INVAL); + +diff --git a/usr/mgmt_ipc.c b/usr/mgmt_ipc.c +index 87bd346..5cb7143 100644 +--- a/usr/mgmt_ipc.c ++++ b/usr/mgmt_ipc.c +@@ -226,6 +226,16 @@ mgmt_ipc_immediate_stop(queue_task_t *qtask) + } + + static int ++mgmt_ipc_newroot(queue_task_t *qtask) ++{ ++ char *newroot = qtask->req.u.newroot.path; ++ if (chdir(newroot) || chroot(".") || chdir("/")) ++ return ISCSI_ERR; ++ mgmt_ipc_write_rsp(qtask, ISCSI_SUCCESS); ++ return ISCSI_SUCCESS; ++} ++ ++static int + mgmt_ipc_conn_remove(queue_task_t *qtask) + { + return ISCSI_ERR; +@@ -534,6 +544,7 @@ static mgmt_ipc_fn_t * mgmt_ipc_functions[__MGMT_IPC_MAX_COMMAND] = { + [MGMT_IPC_NOTIFY_DEL_NODE] = mgmt_ipc_notify_del_node, + [MGMT_IPC_NOTIFY_ADD_PORTAL] = mgmt_ipc_notify_add_portal, + [MGMT_IPC_NOTIFY_DEL_PORTAL] = mgmt_ipc_notify_del_portal, ++[MGMT_IPC_NEWROOT] = mgmt_ipc_newroot, + }; + + void mgmt_ipc_handle(int accept_fd) +diff --git a/usr/mgmt_ipc.h b/usr/mgmt_ipc.h +index 55972ed..102ffff 100644 +--- a/usr/mgmt_ipc.h ++++ b/usr/mgmt_ipc.h +@@ -22,6 +22,7 @@ + #include "types.h" + #include "iscsi_if.h" + #include "config.h" ++#include "limits.h" + + #define ISCSIADM_NAMESPACE "ISCSIADM_ABSTRACT_NAMESPACE" + #define PEERUSER_MAX 64 +@@ -46,6 +47,7 @@ typedef enum iscsiadm_cmd { + MGMT_IPC_NOTIFY_DEL_NODE = 17, + MGMT_IPC_NOTIFY_ADD_PORTAL = 18, + MGMT_IPC_NOTIFY_DEL_PORTAL = 19, ++ MGMT_IPC_NEWROOT = 20, + + __MGMT_IPC_MAX_COMMAND + } iscsiadm_cmd_e; +@@ -75,8 +77,10 @@ typedef struct iscsiadm_req { + int param; + /* TODO: make this variable len to support */ + char value[IFNAMSIZ + 1]; +- + } set_host_param; ++ struct ipc_msg_newroot { ++ char path[PATH_MAX + 1]; ++ } newroot; + } u; + } iscsiadm_req_t; + +-- +1.7.11.7 + diff --git a/0033-iscsiadm-param-parsing-for-advanced-node-creation.patch b/0033-iscsiadm-param-parsing-for-advanced-node-creation.patch new file mode 100644 index 0000000..6ab8f35 --- /dev/null +++ b/0033-iscsiadm-param-parsing-for-advanced-node-creation.patch @@ -0,0 +1,337 @@ +From a41a27cd9b910191a616706c4f473259909bc45d Mon Sep 17 00:00:00 2001 +From: Chris Leech +Date: Tue, 18 Dec 2012 11:27:00 -0800 +Subject: iscsiadm: --param parsing for advanced node creation + +Share parse_param and apply_param code from iscsistart, allow using multiple +--param options to set arbitrary fields in node mode. + +Signed-off-by: Chris Leech +--- + usr/Makefile | 2 +- + usr/iscsi_param.c | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ + usr/iscsi_param.h | 7 ++++ + usr/iscsiadm.c | 16 ++++++++-- + usr/iscsistart.c | 91 ++-------------------------------------------------- + 5 files changed, 120 insertions(+), 91 deletions(-) + create mode 100644 usr/iscsi_param.c + create mode 100644 usr/iscsi_param.h + +diff --git a/usr/Makefile b/usr/Makefile +index 673b7f1..1506111 100644 +--- a/usr/Makefile ++++ b/usr/Makefile +@@ -40,7 +40,7 @@ SYSDEPS_SRCS = $(wildcard ../utils/sysdeps/*.o) + ISCSI_LIB_SRCS = iscsi_util.o io.o auth.o iscsi_timer.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 iscsid_req.o transport.o iser.o cxgbi.o be2iscsi.o \ +- initiator_common.o iscsi_err.o $(IPC_OBJ) $(SYSDEPS_SRCS) ++ initiator_common.o iscsi_err.o iscsi_param.o $(IPC_OBJ) $(SYSDEPS_SRCS) + # core initiator files + INITIATOR_SRCS = initiator.o scsi.o actor.o event_poll.o mgmt_ipc.o kern_err_table.o + +diff --git a/usr/iscsi_param.c b/usr/iscsi_param.c +new file mode 100644 +index 0000000..c075e8f +--- /dev/null ++++ b/usr/iscsi_param.c +@@ -0,0 +1,95 @@ ++#include ++#include "log.h" ++#include "config.h" ++#include "idbm.h" ++#include "list.h" ++#include "iface.h" ++#include "idbm_fields.h" ++#include "iscsi_err.h" ++ ++int apply_params(struct list_head *user_params, struct node_rec *rec) ++{ ++ struct user_param *param; ++ int rc; ++ ++ /* Must init this so we can check if user overrode them */ ++ rec->session.initial_login_retry_max = -1; ++ rec->conn[0].timeo.noop_out_interval = -1; ++ rec->conn[0].timeo.noop_out_timeout = -1; ++ ++ list_for_each_entry(param, user_params, list) { ++ /* ++ * user may not have passed in all params that were set by ++ * ibft/iscsi_boot, so clear out values that might conflict ++ * with user overrides ++ */ ++ if (!strcmp(param->name, IFACE_NETNAME)) { ++ /* overriding netname so MAC will be for old netdev */ ++ memset(rec->iface.hwaddress, 0, ++ sizeof(rec->iface.hwaddress)); ++ } else if (!strcmp(param->name, IFACE_HWADDR)) { ++ /* overriding MAC so netdev will be for old MAC */ ++ memset(rec->iface.netdev, 0, sizeof(rec->iface.netdev)); ++ } else if (!strcmp(param->name, IFACE_TRANSPORTNAME)) { ++ /* ++ * switching drivers so all old binding info is no ++ * longer valid. Old values were either for offload ++ * and we are switching to software or the reverse, ++ * or switching types of cards (bnx2i to cxgb3i). ++ */ ++ memset(&rec->iface, 0, sizeof(rec->iface)); ++ iface_setup_defaults(&rec->iface); ++ } ++ } ++ ++ rc = idbm_node_set_rec_from_param(user_params, rec, 0); ++ if (rc) ++ return rc; ++ ++ /* ++ * For root boot we could not change this in older versions so ++ * if user did not override then use the defaults. ++ * ++ * Increase to account for boot using static setup. ++ */ ++ if (rec->session.initial_login_retry_max == -1) ++ rec->session.initial_login_retry_max = 30; ++ /* we used to not be able to answer so turn off */ ++ if (rec->conn[0].timeo.noop_out_interval == -1) ++ rec->conn[0].timeo.noop_out_interval = 0; ++ if (rec->conn[0].timeo.noop_out_timeout == -1) ++ rec->conn[0].timeo.noop_out_timeout = 0; ++ ++ return 0; ++} ++ ++int parse_param(struct list_head *user_params, char *param_str) ++{ ++ struct user_param *param; ++ char *name, *value; ++ ++ name = param_str; ++ ++ value = strchr(param_str, '='); ++ if (!value) { ++ log_error("Invalid --param %s. Missing value.", param_str); ++ return ISCSI_ERR_INVAL; ++ } ++ *value = '\0'; ++ ++ value++; ++ if (!strlen(value)) { ++ log_error("Invalid --param %s. Missing value.", param_str); ++ return ISCSI_ERR_INVAL; ++ } ++ ++ param = idbm_alloc_user_param(name, value); ++ if (!param) { ++ log_error("Could not allocate memory for param."); ++ return ISCSI_ERR_NOMEM; ++ } ++ ++ list_add(¶m->list, user_params); ++ return 0; ++} ++ +diff --git a/usr/iscsi_param.h b/usr/iscsi_param.h +new file mode 100644 +index 0000000..8b7956c +--- /dev/null ++++ b/usr/iscsi_param.h +@@ -0,0 +1,7 @@ ++#ifndef ISCSI_PARAM_H ++#define ISCSI_PARAM_H ++ ++extern int parse_param(struct list_head *user_params, char *param_str); ++extern int apply_params(struct list_head *user_params, struct node_rec *rec); ++ ++#endif +diff --git a/usr/iscsiadm.c b/usr/iscsiadm.c +index 323d0a8..ef866ae 100644 +--- a/usr/iscsiadm.c ++++ b/usr/iscsiadm.c +@@ -53,6 +53,7 @@ + #include "iscsi_err.h" + #include "iscsi_ipc.h" + #include "iscsi_timer.h" ++#include "iscsi_param.h" + + static char program_name[] = "iscsiadm"; + static char config_file[TARGET_NAME_MAXLEN]; +@@ -112,6 +113,7 @@ static struct option const long_options[] = + {"count", required_argument, NULL, 'c'}, + {"interval", required_argument, NULL, 'i'}, + {"newroot", required_argument, NULL, 0}, ++ {"param", required_argument, NULL, 0}, + {NULL, 0, NULL, 0}, + }; + static char *short_options = "RlDVhm:a:b:c:C:p:P:T:H:i:I:U:k:L:d:r:n:v:o:sSt:u"; +@@ -127,7 +129,7 @@ iscsiadm -m discoverydb [ -hV ] [ -d debug_level ] [-P printlevel] [ -t type -p + [ -o operation ] [ -n name ] [ -v value ] [ -lD ] ] \n\ + iscsiadm -m discovery [ -hV ] [ -d debug_level ] [-P printlevel] [ -t type -p ip:port -I ifaceN ... [ -l ] ] | [ [ -p ip:port ] [ -l | -D ] ] \n\ + iscsiadm -m node [ -hV ] [ -d debug_level ] [ -P printlevel ] [ -L all,manual,automatic ] [ -U all,manual,automatic ] [ -S ] [ [ -T targetname -p ip:port -I ifaceN ] [ -l | -u | -R | -s] ] \ +-[ [ -o operation ] [ -n name ] [ -v value ] ]\n\ ++[ [ -o operation ] [ -n name ] [ -v value ] ] [ --param=NAME=VALUE ]\n\ + iscsiadm -m session [ -hV ] [ -d debug_level ] [ -P printlevel] [ -r sessionid | sysfsdir [ -R | -u | -s ] [ -o operation ] [ -n name ] [ -v value ] ]\n\ + iscsiadm -m iface [ -hV ] [ -d debug_level ] [ -P printlevel ] [ -I ifacename | -H hostno|MAC ] [ [ -o operation ] [ -n name ] [ -v value ] ] [ -C ping [ -a ip ] [ -b packetsize ] [ -c count ] [ -i interval ] ]\n\ + iscsiadm -m fw [ -l ]\n\ +@@ -2430,9 +2432,11 @@ main(int argc, char **argv) + uint32_t host_no = -1; + struct user_param *param; + struct list_head params; ++ struct list_head user_params; + + INIT_LIST_HEAD(¶ms); + INIT_LIST_HEAD(&ifaces); ++ INIT_LIST_HEAD(&user_params); + /* do not allow ctrl-c for now... */ + memset(&sa_old, 0, sizeof(struct sigaction)); + memset(&sa_new, 0, sizeof(struct sigaction)); +@@ -2455,8 +2459,14 @@ main(int argc, char **argv) + case 0: + if (long_options[longindex].flag != 0) + break; +- if (!strcmp(long_options[longindex].name, "newroot")) ++ if (!strcmp(long_options[longindex].name, "newroot")) { + newroot = optarg; ++ break; ++ } ++ if (!strcmp(long_options[longindex].name, "param")) { ++ parse_param(&user_params, optarg); ++ break; ++ } + break; + case 'k': + killiscsid = atoi(optarg); +@@ -2748,6 +2758,8 @@ main(int argc, char **argv) + goto out; + } + ++ apply_params(&user_params, rec); ++ + rc = exec_node_op(op, do_login, do_logout, do_show, + do_rescan, do_stats, info_level, rec, + ¶ms); +diff --git a/usr/iscsistart.c b/usr/iscsistart.c +index 6924d49..85be35b 100644 +--- a/usr/iscsistart.c ++++ b/usr/iscsistart.c +@@ -50,6 +50,7 @@ + #include "iscsid_req.h" + #include "iscsi_err.h" + #include "iface.h" ++#include "iscsi_param.h" + + /* global config info */ + /* initiator needs initiator name/alias */ +@@ -131,99 +132,13 @@ static int stop_event_loop(void) + return rc; + } + +-static int apply_params(struct node_rec *rec) +-{ +- struct user_param *param; +- int rc; +- +- /* Must init this so we can check if user overrode them */ +- rec->session.initial_login_retry_max = -1; +- rec->conn[0].timeo.noop_out_interval = -1; +- rec->conn[0].timeo.noop_out_timeout = -1; +- +- list_for_each_entry(param, &user_params, list) { +- /* +- * user may not have passed in all params that were set by +- * ibft/iscsi_boot, so clear out values that might conflict +- * with user overrides +- */ +- if (!strcmp(param->name, IFACE_NETNAME)) { +- /* overriding netname so MAC will be for old netdev */ +- memset(rec->iface.hwaddress, 0, +- sizeof(rec->iface.hwaddress)); +- } else if (!strcmp(param->name, IFACE_HWADDR)) { +- /* overriding MAC so netdev will be for old MAC */ +- memset(rec->iface.netdev, 0, sizeof(rec->iface.netdev)); +- } else if (!strcmp(param->name, IFACE_TRANSPORTNAME)) { +- /* +- * switching drivers so all old binding info is no +- * longer valid. Old values were either for offload +- * and we are switching to software or the reverse, +- * or switching types of cards (bnx2i to cxgb3i). +- */ +- memset(&rec->iface, 0, sizeof(rec->iface)); +- iface_setup_defaults(&rec->iface); +- } +- } +- +- rc = idbm_node_set_rec_from_param(&user_params, rec, 0); +- if (rc) +- return rc; +- +- /* +- * For root boot we could not change this in older versions so +- * if user did not override then use the defaults. +- * +- * Increase to account for boot using static setup. +- */ +- if (rec->session.initial_login_retry_max == -1) +- rec->session.initial_login_retry_max = 30; +- /* we used to not be able to answer so turn off */ +- if (rec->conn[0].timeo.noop_out_interval == -1) +- rec->conn[0].timeo.noop_out_interval = 0; +- if (rec->conn[0].timeo.noop_out_timeout == -1) +- rec->conn[0].timeo.noop_out_timeout = 0; +- +- return 0; +-} +- +-static int parse_param(char *param_str) +-{ +- struct user_param *param; +- char *name, *value; +- +- name = param_str; +- +- value = strchr(param_str, '='); +- if (!value) { +- log_error("Invalid --param %s. Missing value.", param_str); +- return ISCSI_ERR_INVAL; +- } +- *value = '\0'; +- +- value++; +- if (!strlen(value)) { +- log_error("Invalid --param %s. Missing value.", param_str); +- return ISCSI_ERR_INVAL; +- } +- +- param = idbm_alloc_user_param(name, value); +- if (!param) { +- log_error("Could not allocate memory for param."); +- return ISCSI_ERR_NOMEM; +- } +- +- list_add(¶m->list, &user_params); +- return 0; +-} +- + static int login_session(struct node_rec *rec) + { + iscsiadm_req_t req; + iscsiadm_rsp_t rsp; + int rc, retries = 0; + +- rc = apply_params(rec); ++ rc = apply_params(&user_params, rec); + if (rc) + return rc; + +@@ -426,7 +341,7 @@ int main(int argc, char *argv[]) + fw_free_targets(&targets); + exit(0); + case 'P': +- err = parse_param(optarg); ++ err = parse_param(&user_params, optarg); + if (err) + exit(err); + break; +-- +1.7.11.7 + diff --git a/0034-update-systemd-service-files-add-iscsi.service-for-s.patch b/0034-update-systemd-service-files-add-iscsi.service-for-s.patch new file mode 100644 index 0000000..966bb9f --- /dev/null +++ b/0034-update-systemd-service-files-add-iscsi.service-for-s.patch @@ -0,0 +1,93 @@ +From 1c3b1d23e0b3f17399ffd4463cafad813b0444d5 Mon Sep 17 00:00:00 2001 +From: Chris Leech +Date: Wed, 19 Dec 2012 15:07:36 -0800 +Subject: update systemd service files, add iscsi.service for starting + sessions on boot + +Signed-off-by: Chris Leech +--- + etc/systemd/iscsi.service | 19 +++++++++++++++++++ + etc/systemd/iscsi_mark_root_nodes | 14 ++++++++++++++ + etc/systemd/iscsid.service | 7 +++++-- + etc/systemd/iscsid.socket | 2 +- + 4 files changed, 39 insertions(+), 3 deletions(-) + create mode 100644 etc/systemd/iscsi.service + create mode 100755 etc/systemd/iscsi_mark_root_nodes + +diff --git a/etc/systemd/iscsi.service b/etc/systemd/iscsi.service +new file mode 100644 +index 0000000..bbd52fd +--- /dev/null ++++ b/etc/systemd/iscsi.service +@@ -0,0 +1,19 @@ ++[Unit] ++Description=Login and scanning of iSCSI devices ++Documentation=man:iscsid(8) man:iscsiadm(8) ++DefaultDependencies=no ++Conflicts=shutdown.target ++After=systemd-remount-fs.service network.target iscsid.service iscsiuio.service ++Before=remote-fs-pre.target ++ConditionPathExists=/etc/iscsi/initiatorname.iscsi ++ ++[Service] ++Type=oneshot ++RemainAfterExit=true ++ExecStart=/usr/libexec/iscsi_mark_root_nodes ++ExecStart=/sbin/iscsiadm -m node --loginall=automatic ++ExecStop=/bin/sync ++ExecStop=/sbin/iscsiadm -m node --logoutall=automatic ++ ++[Install] ++WantedBy=sysinit.target +diff --git a/etc/systemd/iscsi_mark_root_nodes b/etc/systemd/iscsi_mark_root_nodes +new file mode 100755 +index 0000000..c68475c +--- /dev/null ++++ b/etc/systemd/iscsi_mark_root_nodes +@@ -0,0 +1,14 @@ ++#!/bin/bash ++ ++ISCSIADM=/sbin/iscsiadm ++SESSION_FILE=/run/initramfs/iscsi.sessions ++ ++if [ ! -f $SESSION_FILE ] ; then ++ exit 0 ++fi ++ ++while read t num i target; do ++ ip=${i%:*} ++ $ISCSIADM -m node -p $ip -T $target -o update -n node.startup -v onboot ++done < $SESSION_FILE ++ +diff --git a/etc/systemd/iscsid.service b/etc/systemd/iscsid.service +index 028e0b3..653dd08 100644 +--- a/etc/systemd/iscsid.service ++++ b/etc/systemd/iscsid.service +@@ -1,7 +1,10 @@ + [Unit] + Description=Open-iSCSI +-Documentation=man:iscsid(8) man:iscsiuio(8) man:iscsiadm(8) +-After=network.target NetworkManager-wait-online.service iscsiuio.service tgtd.service targetcli.service ++Documentation=man:iscsid(8) man:iscsiadm(8) ++DefaultDependencies=no ++Conflicts=shutdown.target ++After=network.target iscsiuio.service ++Before=remote-fs-pre.target + + [Service] + Type=forking +diff --git a/etc/systemd/iscsid.socket b/etc/systemd/iscsid.socket +index 832451d..58a8d12 100644 +--- a/etc/systemd/iscsid.socket ++++ b/etc/systemd/iscsid.socket +@@ -1,6 +1,6 @@ + [Unit] + Description=Open-iSCSI iscsid Socket +-Documentation=man:iscsid(8) man:iscsiuio(8) man:iscsiadm(8) ++Documentation=man:iscsid(8) man:iscsiadm(8) + + [Socket] + ListenStream=@ISCSIADM_ABSTRACT_NAMESPACE +-- +1.7.11.7 + diff --git a/0051-update-initscripts-and-docs.patch b/0051-update-initscripts-and-docs.patch index dc42844..e2d4cdc 100644 --- a/0051-update-initscripts-and-docs.patch +++ b/0051-update-initscripts-and-docs.patch @@ -1,4 +1,4 @@ -From 9e68a86626e9085af1d7a457bf28d2347c0d9356 Mon Sep 17 00:00:00 2001 +From c255c2cd43afeaefa428237a3200f02fb238d89e Mon Sep 17 00:00:00 2001 From: Chris Leech Date: Mon, 19 Nov 2012 16:37:13 -0800 Subject: update initscripts and docs diff --git a/0052-use-var-for-config.patch b/0052-use-var-for-config.patch index 83d6938..1a76c11 100644 --- a/0052-use-var-for-config.patch +++ b/0052-use-var-for-config.patch @@ -1,4 +1,4 @@ -From d77d9e1ffb1775c3602d8cc9ae56c701aa7c476a Mon Sep 17 00:00:00 2001 +From aaf2b26eae472e5fd596f9bd23f9bf5886b1eb98 Mon Sep 17 00:00:00 2001 From: Chris Leech Date: Mon, 19 Nov 2012 16:38:45 -0800 Subject: use var for config diff --git a/0053-use-red-hat-for-name.patch b/0053-use-red-hat-for-name.patch index 9d36619..8888200 100644 --- a/0053-use-red-hat-for-name.patch +++ b/0053-use-red-hat-for-name.patch @@ -1,4 +1,4 @@ -From 88d864140cacdc1727091ee0ce61fcbd90cae472 Mon Sep 17 00:00:00 2001 +From bf7f9118ab2f1a5302dafa198d3351f6f977b7bd Mon Sep 17 00:00:00 2001 From: Chris Leech Date: Mon, 19 Nov 2012 16:40:04 -0800 Subject: use red hat for name diff --git a/0054-add-libiscsi.patch b/0054-add-libiscsi.patch index 9eb9c6c..44fcf4a 100644 --- a/0054-add-libiscsi.patch +++ b/0054-add-libiscsi.patch @@ -1,4 +1,4 @@ -From 8f94617e1b332031b01a0363a6757bfb5a039d89 Mon Sep 17 00:00:00 2001 +From ce1f29f2049320af18eeffd3aefccf840c442ce0 Mon Sep 17 00:00:00 2001 From: Chris Leech Date: Mon, 19 Nov 2012 16:43:15 -0800 Subject: add libiscsi diff --git a/0055-dont-use-static.patch b/0055-dont-use-static.patch index c469e38..9e43b7b 100644 --- a/0055-dont-use-static.patch +++ b/0055-dont-use-static.patch @@ -1,4 +1,4 @@ -From 82f3ef30850bb433725b60927969721bcca1df79 Mon Sep 17 00:00:00 2001 +From ff224a16d409c4b479b3ac1ff662093cb067e281 Mon Sep 17 00:00:00 2001 From: Chris Leech Date: Mon, 19 Nov 2012 17:04:29 -0800 Subject: dont use static diff --git a/0056-remove-the-offload-boot-supported-ifdef.patch b/0056-remove-the-offload-boot-supported-ifdef.patch index bdd2463..a1ccdc7 100644 --- a/0056-remove-the-offload-boot-supported-ifdef.patch +++ b/0056-remove-the-offload-boot-supported-ifdef.patch @@ -1,4 +1,4 @@ -From 55c5640e2571b3e4b8a1b33f0076971b5c865711 Mon Sep 17 00:00:00 2001 +From aa58a042ec20575143c1a5c813c9552a286aeb0e Mon Sep 17 00:00:00 2001 From: Chris Leech Date: Mon, 19 Nov 2012 17:09:24 -0800 Subject: remove the offload boot supported ifdef diff --git a/0057-iscsid-iscsiuio-ipc-interface.patch b/0057-iscsid-iscsiuio-ipc-interface.patch index 98d1b45..2335aa3 100644 --- a/0057-iscsid-iscsiuio-ipc-interface.patch +++ b/0057-iscsid-iscsiuio-ipc-interface.patch @@ -1,4 +1,4 @@ -From 5753a2f838fcb532ad56dc4c4657b36cdea88bba Mon Sep 17 00:00:00 2001 +From 59b5b828b2a763f47fb205aedf202990d64e748c Mon Sep 17 00:00:00 2001 From: Chris Leech Date: Mon, 24 Dec 2012 13:37:53 -0800 Subject: iscsid iscsiuio ipc interface @@ -41,8 +41,8 @@ index 1669890..5bf5f83 100644 ISCSI_LIB_SRCS = iscsi_util.o io.o auth.o iscsi_timer.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 iscsid_req.o transport.o iser.o cxgbi.o be2iscsi.o \ -- initiator_common.o iscsi_err.o $(IPC_OBJ) $(SYSDEPS_SRCS) -+ initiator_common.o iscsi_err.o uip_mgmt_ipc.o \ +- initiator_common.o iscsi_err.o iscsi_param.o $(IPC_OBJ) $(SYSDEPS_SRCS) ++ initiator_common.o iscsi_err.o iscsi_param.o uip_mgmt_ipc.o \ + $(IPC_OBJ) $(SYSDEPS_SRCS) # core initiator files INITIATOR_SRCS = initiator.o scsi.o actor.o event_poll.o mgmt_ipc.o kern_err_table.o diff --git a/0058-iscsiuio-IPC-newroot-command.patch b/0058-iscsiuio-IPC-newroot-command.patch new file mode 100644 index 0000000..2680f22 --- /dev/null +++ b/0058-iscsiuio-IPC-newroot-command.patch @@ -0,0 +1,122 @@ +From e74f511ba862195d909bba90091fd84bd7904914 Mon Sep 17 00:00:00 2001 +From: Chris Leech +Date: Wed, 2 Jan 2013 14:45:05 -0800 +Subject: iscsiuio IPC newroot command + +--- + usr/mgmt_ipc.c | 11 +++++++++++ + usr/transport.c | 1 + + usr/transport.h | 1 + + usr/uip_mgmt_ipc.c | 14 ++++++++++++++ + usr/uip_mgmt_ipc.h | 5 +++++ + 5 files changed, 32 insertions(+) + +diff --git a/usr/mgmt_ipc.c b/usr/mgmt_ipc.c +index 5cb7143..a8f8473 100644 +--- a/usr/mgmt_ipc.c ++++ b/usr/mgmt_ipc.c +@@ -36,6 +36,7 @@ + #include "sysdeps.h" + #include "iscsi_ipc.h" + #include "iscsi_err.h" ++#include "iscsi_sysfs.h" + + #define PEERUSER_MAX 64 + #define EXTMSG_MAX (64 * 1024) +@@ -229,8 +230,18 @@ static int + mgmt_ipc_newroot(queue_task_t *qtask) + { + char *newroot = qtask->req.u.newroot.path; ++ struct iscsi_transport *t; ++ + if (chdir(newroot) || chroot(".") || chdir("/")) + return ISCSI_ERR; ++ ++ /* if a registered transport has a separate userspace process, ++ * notify it of the root change as well */ ++ list_for_each_entry(t, &transports, list) { ++ if (t->template->newroot) ++ t->template->newroot(t, newroot); ++ } ++ + mgmt_ipc_write_rsp(qtask, ISCSI_SUCCESS); + return ISCSI_SUCCESS; + } +diff --git a/usr/transport.c b/usr/transport.c +index 10212af..02ad717 100644 +--- a/usr/transport.c ++++ b/usr/transport.c +@@ -81,6 +81,7 @@ struct iscsi_transport_template bnx2i = { + .ep_poll = ktransport_ep_poll, + .ep_disconnect = ktransport_ep_disconnect, + .set_net_config = uip_broadcast_params, ++ .newroot = uip_broadcast_newroot, + }; + + struct iscsi_transport_template be2iscsi = { +diff --git a/usr/transport.h b/usr/transport.h +index 5dcf872..eb3a946 100644 +--- a/usr/transport.h ++++ b/usr/transport.h +@@ -38,6 +38,7 @@ struct iscsi_transport_template { + int (*set_net_config) (struct iscsi_transport *t, + struct iface_rec *iface, + struct iscsi_session *session); ++ void (*newroot) (struct iscsi_transport *t, char *path); + }; + + /* represents data path provider */ +diff --git a/usr/uip_mgmt_ipc.c b/usr/uip_mgmt_ipc.c +index 73b1632..9fa5398 100644 +--- a/usr/uip_mgmt_ipc.c ++++ b/usr/uip_mgmt_ipc.c +@@ -39,3 +39,17 @@ int uip_broadcast_params(struct iscsi_transport *t, + sizeof(iscsid_uip_broadcast_header_t) + + sizeof(*iface)); + } ++ ++int uip_broadcast_newroot(struct iscsi_transport *t, char *newroot) ++{ ++ struct iscsid_uip_broadcast broadcast; ++ ++ memset(&broadcast, 0, sizeof(broadcast)); ++ ++ broadcast.header.command = ISCSID_UIP_NEWROOT; ++ strncpy(broadcast.u.newroot.path, newroot, PATH_MAX); ++ ++ return uip_broadcast(&broadcast, ++ sizeof(iscsid_uip_broadcast_header_t) + ++ PATH_MAX + 1); ++} +diff --git a/usr/uip_mgmt_ipc.h b/usr/uip_mgmt_ipc.h +index 3859688..9de88c2 100644 +--- a/usr/uip_mgmt_ipc.h ++++ b/usr/uip_mgmt_ipc.h +@@ -29,6 +29,7 @@ + typedef enum iscsid_uip_cmd { + ISCSID_UIP_IPC_UNKNOWN = 0, + ISCSID_UIP_IPC_GET_IFACE = 1, ++ ISCSID_UIP_NEWROOT = 2, + + __ISCSID_UIP_IPC_MAX_COMMAND + } iscsid_uip_cmd_e; +@@ -47,6 +48,9 @@ typedef struct iscsid_uip_broadcast { + struct ipc_broadcast_iface_rec { + struct iface_rec rec; + } iface_rec; ++ struct ipc_broadcast_newroot { ++ char path[PATH_MAX + 1]; ++ } newroot; + } u; + } iscsid_uip_broadcast_t; + +@@ -69,5 +73,6 @@ extern int uip_broadcast_params(struct iscsi_transport *t, + struct iface_rec *iface, + struct iscsi_session *session); + ++extern int uip_broadcast_newroot(struct iscsi_transport *t, char *path); + + #endif /* UIP_MGMT_IPC_H */ +-- +1.7.11.7 + diff --git a/0059-iscsiuio-systemd-unit-files.patch b/0059-iscsiuio-systemd-unit-files.patch new file mode 100644 index 0000000..2d0e213 --- /dev/null +++ b/0059-iscsiuio-systemd-unit-files.patch @@ -0,0 +1,53 @@ +From 822b53e6c9ebb0fe7236ebd3b4c73b009100592d Mon Sep 17 00:00:00 2001 +From: Chris Leech +Date: Tue, 22 Jan 2013 14:27:12 -0800 +Subject: iscsiuio systemd unit files + +--- + etc/systemd/iscsiuio.service | 17 +++++++++++++++++ + etc/systemd/iscsiuio.socket | 9 +++++++++ + 2 files changed, 26 insertions(+) + create mode 100644 etc/systemd/iscsiuio.service + create mode 100644 etc/systemd/iscsiuio.socket + +diff --git a/etc/systemd/iscsiuio.service b/etc/systemd/iscsiuio.service +new file mode 100644 +index 0000000..f0410b7 +--- /dev/null ++++ b/etc/systemd/iscsiuio.service +@@ -0,0 +1,17 @@ ++[Unit] ++Description=iSCSI UserSpace I/O driver ++Documentation=man:iscsiuio(8) ++DefaultDependencies=no ++Conflicts=shutdown.target ++Requires=iscsid.service ++BindTo=iscsid.service ++After=network.target ++Before=remote-fs-pre.target iscsid.service ++ ++[Service] ++Type=forking ++PIDFile=/var/run/iscsiuio.pid ++ExecStart=/usr/sbin/iscsiuio ++ ++[Install] ++WantedBy=multi-user.target +diff --git a/etc/systemd/iscsiuio.socket b/etc/systemd/iscsiuio.socket +new file mode 100644 +index 0000000..d42cedc +--- /dev/null ++++ b/etc/systemd/iscsiuio.socket +@@ -0,0 +1,9 @@ ++[Unit] ++Description=Open-iSCSI iscsiuio Socket ++Documentation=man:iscsiuio(8) ++ ++[Socket] ++ListenStream=@ISCSID_UIP_ABSTRACT_NAMESPACE ++ ++[Install] ++WantedBy=sockets.target +-- +1.7.11.7 + diff --git a/0073-iscsiuio-fix-long-options.patch b/0073-iscsiuio-fix-long-options.patch new file mode 100644 index 0000000..13711fe --- /dev/null +++ b/0073-iscsiuio-fix-long-options.patch @@ -0,0 +1,31 @@ +From bff9048411c891d2eafab1e588077e4bfa56cb43 Mon Sep 17 00:00:00 2001 +From: Chris Leech +Date: Wed, 19 Dec 2012 21:32:44 -0800 +Subject: iscsiuio fix long options + +--- + src/unix/main.c | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +diff --git a/src/unix/main.c b/src/unix/main.c +index 2008913..ef9e069 100644 +--- a/src/unix/main.c ++++ b/src/unix/main.c +@@ -83,9 +83,11 @@ static char default_pid_filepath[] = "/var/run/iscsiuio.pid"; + * Global Variables + ******************************************************************************/ + static const struct option long_options[] = { +- {"debug", 0, 0, 0}, +- {"version", 0, 0, 0}, +- {"help", 0, 0, 0}, ++ {"foreground", no_argument, NULL, 'f'}, ++ {"debug", required_argument, NULL, 'd'}, ++ {"pid", required_argument, NULL, 'p'}, ++ {"version", no_argument, NULL, 'v'}, ++ {"help", no_argument, NULL, 'h'}, + {0, 0, 0, 0} + }; + +-- +1.7.11.7 + diff --git a/0074-iscsiuio-add-initrd-option-to-set-run-from-initrd-hi.patch b/0074-iscsiuio-add-initrd-option-to-set-run-from-initrd-hi.patch new file mode 100644 index 0000000..1c4dc4a --- /dev/null +++ b/0074-iscsiuio-add-initrd-option-to-set-run-from-initrd-hi.patch @@ -0,0 +1,51 @@ +From fefc8e39129dbdeadf2a0b6ba7a28e9e47597e11 Mon Sep 17 00:00:00 2001 +From: Chris Leech +Date: Wed, 19 Dec 2012 21:37:18 -0800 +Subject: iscsiuio add --initrd option to set run from initrd hint for systemd + +See http://www.freedesktop.org/wiki/Software/systemd/RootStorageDaemons +--- + src/unix/main.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/src/unix/main.c b/src/unix/main.c +index ef9e069..c5fb5ab 100644 +--- a/src/unix/main.c ++++ b/src/unix/main.c +@@ -82,12 +82,15 @@ static char default_pid_filepath[] = "/var/run/iscsiuio.pid"; + /******************************************************************************* + * Global Variables + ******************************************************************************/ ++static int initrd = 0; ++ + static const struct option long_options[] = { + {"foreground", no_argument, NULL, 'f'}, + {"debug", required_argument, NULL, 'd'}, + {"pid", required_argument, NULL, 'p'}, + {"version", no_argument, NULL, 'v'}, + {"help", no_argument, NULL, 'h'}, ++ {"initrd", no_argument, &initrd, 1}, + {0, 0, 0, 0} + }; + +@@ -176,6 +179,7 @@ iscsiuio daemon.\n\ + -f, --foreground make the program run in the foreground\n\ + -d, --debug debuglevel print debugging information\n\ + -p, --pid=pidfile use pid file (default %s).\n\ ++ --initrd systemd initrd hint\n\ + -h, --help display this help and exit\n\ + -v, --version display version and exit\n\ + ", default_pid_filepath); +@@ -279,6 +283,9 @@ int main(int argc, char *argv[]) + } + } + ++ if (initrd) ++ argv[0][0] = '@'; ++ + if (main_log.enabled == LOGGER_ENABLED) { + /* initialize the logger */ + rc = init_logger(main_log.log_file); +-- +1.7.11.7 + diff --git a/0075-iscsiuio-systemd-socket-activation-support.patch b/0075-iscsiuio-systemd-socket-activation-support.patch new file mode 100644 index 0000000..eb8b1b9 --- /dev/null +++ b/0075-iscsiuio-systemd-socket-activation-support.patch @@ -0,0 +1,58 @@ +From b923362bb847eab5856fa3593f053e670d90e0fd Mon Sep 17 00:00:00 2001 +From: Chris Leech +Date: Wed, 19 Dec 2012 21:39:06 -0800 +Subject: iscsiuio systemd socket activation support + +--- + src/unix/iscsid_ipc.c | 28 ++++++++++++++++++++++++++++ + 1 file changed, 28 insertions(+) + +diff --git a/src/unix/iscsid_ipc.c b/src/unix/iscsid_ipc.c +index d7372fc..1c28822 100644 +--- a/src/unix/iscsid_ipc.c ++++ b/src/unix/iscsid_ipc.c +@@ -948,6 +948,30 @@ static void *iscsid_loop(void *arg) + pthread_exit(NULL); + } + ++#define SD_SOCKET_FDS_START 3 ++ ++static int ipc_systemd(void) ++{ ++ char *env; ++ ++ env = getenv("LISTEN_PID"); ++ ++ if (!env || (strtoul(env, NULL, 10) != getpid())) ++ return -EINVAL; ++ ++ env = getenv("LISTEN_FDS"); ++ ++ if (!env) ++ return -EINVAL; ++ ++ if (strtoul(env, NULL, 10) != 1) { ++ LOG_ERR("Did not receive exactly one IPC socket from systemd"); ++ return -EINVAL; ++ } ++ ++ return SD_SOCKET_FDS_START; ++} ++ + /****************************************************************************** + * Initialize/Cleanup routines + ******************************************************************************/ +@@ -961,6 +985,10 @@ int iscsid_init() + int rc; + struct sockaddr_un addr; + ++ iscsid_opts.fd = ipc_systemd(); ++ if (iscsid_opts.fd >= 0) ++ return 0; ++ + iscsid_opts.fd = socket(AF_LOCAL, SOCK_STREAM, 0); + if (iscsid_opts.fd < 0) { + LOG_ERR(PFX "Can not create IPC socket"); +-- +1.7.11.7 + diff --git a/0076-iscsiuio-iscsid-IPC-newroot-command.patch b/0076-iscsiuio-iscsid-IPC-newroot-command.patch new file mode 100644 index 0000000..fa40de3 --- /dev/null +++ b/0076-iscsiuio-iscsid-IPC-newroot-command.patch @@ -0,0 +1,62 @@ +From 07bf3074ccdd9debe844fe1bae0244799d01fe58 Mon Sep 17 00:00:00 2001 +From: Chris Leech +Date: Wed, 2 Jan 2013 14:46:14 -0800 +Subject: iscsiuio: iscsid IPC newroot command + +--- + include/uip_mgmt_ipc.h | 4 ++++ + src/unix/iscsid_ipc.c | 9 +++++++++ + 2 files changed, 13 insertions(+) + +diff --git a/include/uip_mgmt_ipc.h b/include/uip_mgmt_ipc.h +index 7054df5..db87b2b 100644 +--- a/include/uip_mgmt_ipc.h ++++ b/include/uip_mgmt_ipc.h +@@ -26,6 +26,7 @@ + typedef enum iscsid_uip_cmd { + ISCSID_UIP_IPC_UNKNOWN = 0, + ISCSID_UIP_IPC_GET_IFACE = 1, ++ ISCSID_UIP_NEWROOT = 2, + + __ISCSID_UIP_IPC_MAX_COMMAND + } iscsid_uip_cmd_e; +@@ -45,6 +46,9 @@ typedef struct iscsid_uip_broadcast { + struct ipc_broadcast_iface_rec { + struct iface_rec rec; + } iface_rec; ++ struct ipc_broadcast_newroot { ++ char path[PATH_MAX + 1]; ++ } newroot; + } u; + } iscsid_uip_broadcast_t; + +diff --git a/src/unix/iscsid_ipc.c b/src/unix/iscsid_ipc.c +index 1c28822..dcbeb4c 100644 +--- a/src/unix/iscsid_ipc.c ++++ b/src/unix/iscsid_ipc.c +@@ -801,6 +801,7 @@ int process_iscsid_broadcast(int s2) + size_t size; + iscsid_uip_cmd_e cmd; + uint32_t payload_len; ++ char *newroot; + + fd = fdopen(s2, "r+"); + if (fd == NULL) { +@@ -857,6 +858,14 @@ int process_iscsid_broadcast(int s2) + } + + break; ++ case ISCSID_UIP_NEWROOT: ++ rsp.command = cmd; ++ newroot = data->u.newroot.path; ++ if (chdir(newroot) || chroot(".") || chdir("/")) ++ rsp.err = ISCSID_UIP_MGMT_IPC_ERR; ++ else ++ rsp.err = ISCSID_UIP_MGMT_IPC_OK; ++ break; + default: + LOG_WARN(PFX "Unknown iscsid broadcast command: %x", + data->header.command); +-- +1.7.11.7 + diff --git a/0077-iscsiuio-document-pidfile-option.patch b/0077-iscsiuio-document-pidfile-option.patch new file mode 100644 index 0000000..1dd2458 --- /dev/null +++ b/0077-iscsiuio-document-pidfile-option.patch @@ -0,0 +1,32 @@ +From 1453c612ce34c6d3722e0d83b5e2def5048421dc Mon Sep 17 00:00:00 2001 +From: Chris Leech +Date: Mon, 21 Jan 2013 15:49:02 -0800 +Subject: iscsiuio document pidfile option + +--- + docs/iscsiuio.8 | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/docs/iscsiuio.8 b/docs/iscsiuio.8 +index d107327..6d79108 100644 +--- a/docs/iscsiuio.8 ++++ b/docs/iscsiuio.8 +@@ -67,6 +67,15 @@ into the background. + .TP + .BI -v + This is to print the version. ++.PP ++.TP ++.BI -p ++Use pidfile (default /var/run/iscsiuio.pid ) ++.PP ++.TP ++.BI -h ++Display this help and exit. ++ + + .\" + .\" AUTHOR part +-- +1.7.11.7 + diff --git a/0099-use-Red-Hat-version-string-to-match-RPM-package-vers.patch b/0099-use-Red-Hat-version-string-to-match-RPM-package-vers.patch index 17718c0..3c219bc 100644 --- a/0099-use-Red-Hat-version-string-to-match-RPM-package-vers.patch +++ b/0099-use-Red-Hat-version-string-to-match-RPM-package-vers.patch @@ -1,4 +1,4 @@ -From 2c05e5731fdbe21c3a44f9c62963a838bf74ec5b Mon Sep 17 00:00:00 2001 +From 1483a176fdbb22bbfecf06eea57d1aa200f30561 Mon Sep 17 00:00:00 2001 From: Chris Leech Date: Mon, 21 Jan 2013 15:43:36 -0800 Subject: use Red Hat version string to match RPM package version diff --git a/iscsi-initiator-utils.spec b/iscsi-initiator-utils.spec index dc4f3a6..2c11880 100644 --- a/iscsi-initiator-utils.spec +++ b/iscsi-initiator-utils.spec @@ -25,6 +25,11 @@ Patch7: 0007-iscsid-iscsiadm-fix-abstract-socket-length-in-bind-c.patch Patch8: 0008-iscsid-implement-systemd-compatible-socket-activatio.patch Patch9: 0009-iscsid-add-example-unit-files-for-systemd.patch Patch10: 0010-iscsi-tools-fix-get_random_bytes-error-handling.patch +# pending upstream merge +Patch31: 0031-iscsid-add-initrd-option-to-set-run-from-initrd-hint.patch +Patch32: 0032-iscsiadm-iscsid-newroot-command-to-survive-switch_ro.patch +Patch33: 0033-iscsiadm-param-parsing-for-advanced-node-creation.patch +Patch34: 0034-update-systemd-service-files-add-iscsi.service-for-s.patch # distro specific modifications Patch51: 0051-update-initscripts-and-docs.patch Patch52: 0052-use-var-for-config.patch @@ -33,9 +38,16 @@ Patch54: 0054-add-libiscsi.patch Patch55: 0055-dont-use-static.patch Patch56: 0056-remove-the-offload-boot-supported-ifdef.patch Patch57: 0057-iscsid-iscsiuio-ipc-interface.patch +Patch58: 0058-iscsiuio-IPC-newroot-command.patch +Patch59: 0059-iscsiuio-systemd-unit-files.patch # iscsiuio patches Patch71: 0071-iscsiuio-0.7.4.3.patch Patch72: 0072-iscsiuio-0.7.6.1.patch +Patch73: 0073-iscsiuio-fix-long-options.patch +Patch74: 0074-iscsiuio-add-initrd-option-to-set-run-from-initrd-hi.patch +Patch75: 0075-iscsiuio-systemd-socket-activation-support.patch +Patch76: 0076-iscsiuio-iscsid-IPC-newroot-command.patch +Patch77: 0077-iscsiuio-document-pidfile-option.patch # version string, needs to be updated with each build Patch99: 0099-use-Red-Hat-version-string-to-match-RPM-package-vers.patch @@ -79,6 +91,11 @@ mv iscsiuio-%{iscsiuio_version} iscsiuio %patch8 -p1 %patch9 -p1 %patch10 -p1 +# pending upstream merge +%patch31 -p1 +%patch32 -p1 +%patch33 -p1 +%patch34 -p1 # distro specific modifications %patch51 -p1 %patch52 -p1 @@ -87,10 +104,17 @@ mv iscsiuio-%{iscsiuio_version} iscsiuio %patch55 -p1 %patch56 -p1 %patch57 -p1 +%patch58 -p1 +%patch59 -p1 # iscsiuio patches cd iscsiuio %patch71 -p1 %patch72 -p1 +%patch73 -p1 +%patch74 -p1 +%patch75 -p1 +%patch76 -p1 +%patch77 -p1 cd .. # version string %patch99 -p1