iscsid and iscsiuio changes to support integration with dracut and systemd
This commit is contained in:
parent
0e55d5ba8c
commit
6bbb925771
@ -0,0 +1,61 @@
|
|||||||
|
From b1799fe84ed94a19bba6bcd7284ce8b038be4ffe Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
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 <cleech@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
157
0032-iscsiadm-iscsid-newroot-command-to-survive-switch_ro.patch
Normal file
157
0032-iscsiadm-iscsid-newroot-command-to-survive-switch_ro.patch
Normal file
@ -0,0 +1,157 @@
|
|||||||
|
From ac3447ab680ef5319717fc6b85a4c5b22e652e5e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
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 <cleech@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
337
0033-iscsiadm-param-parsing-for-advanced-node-creation.patch
Normal file
337
0033-iscsiadm-param-parsing-for-advanced-node-creation.patch
Normal file
@ -0,0 +1,337 @@
|
|||||||
|
From a41a27cd9b910191a616706c4f473259909bc45d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
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 <cleech@redhat.com>
|
||||||
|
---
|
||||||
|
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 <string.h>
|
||||||
|
+#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
|
||||||
|
|
@ -0,0 +1,93 @@
|
|||||||
|
From 1c3b1d23e0b3f17399ffd4463cafad813b0444d5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
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 <cleech@redhat.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
@ -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 <cleech@redhat.com>
|
From: Chris Leech <cleech@redhat.com>
|
||||||
Date: Mon, 19 Nov 2012 16:37:13 -0800
|
Date: Mon, 19 Nov 2012 16:37:13 -0800
|
||||||
Subject: update initscripts and docs
|
Subject: update initscripts and docs
|
||||||
|
@ -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 <cleech@redhat.com>
|
From: Chris Leech <cleech@redhat.com>
|
||||||
Date: Mon, 19 Nov 2012 16:38:45 -0800
|
Date: Mon, 19 Nov 2012 16:38:45 -0800
|
||||||
Subject: use var for config
|
Subject: use var for config
|
||||||
|
@ -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 <cleech@redhat.com>
|
From: Chris Leech <cleech@redhat.com>
|
||||||
Date: Mon, 19 Nov 2012 16:40:04 -0800
|
Date: Mon, 19 Nov 2012 16:40:04 -0800
|
||||||
Subject: use red hat for name
|
Subject: use red hat for name
|
||||||
|
@ -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 <cleech@redhat.com>
|
From: Chris Leech <cleech@redhat.com>
|
||||||
Date: Mon, 19 Nov 2012 16:43:15 -0800
|
Date: Mon, 19 Nov 2012 16:43:15 -0800
|
||||||
Subject: add libiscsi
|
Subject: add libiscsi
|
||||||
|
@ -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 <cleech@redhat.com>
|
From: Chris Leech <cleech@redhat.com>
|
||||||
Date: Mon, 19 Nov 2012 17:04:29 -0800
|
Date: Mon, 19 Nov 2012 17:04:29 -0800
|
||||||
Subject: dont use static
|
Subject: dont use static
|
||||||
|
@ -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 <cleech@redhat.com>
|
From: Chris Leech <cleech@redhat.com>
|
||||||
Date: Mon, 19 Nov 2012 17:09:24 -0800
|
Date: Mon, 19 Nov 2012 17:09:24 -0800
|
||||||
Subject: remove the offload boot supported ifdef
|
Subject: remove the offload boot supported ifdef
|
||||||
|
@ -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 <cleech@redhat.com>
|
From: Chris Leech <cleech@redhat.com>
|
||||||
Date: Mon, 24 Dec 2012 13:37:53 -0800
|
Date: Mon, 24 Dec 2012 13:37:53 -0800
|
||||||
Subject: iscsid iscsiuio ipc interface
|
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 \
|
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 \
|
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 \
|
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)
|
||||||
+ initiator_common.o iscsi_err.o uip_mgmt_ipc.o \
|
+ initiator_common.o iscsi_err.o iscsi_param.o uip_mgmt_ipc.o \
|
||||||
+ $(IPC_OBJ) $(SYSDEPS_SRCS)
|
+ $(IPC_OBJ) $(SYSDEPS_SRCS)
|
||||||
# core initiator files
|
# core initiator files
|
||||||
INITIATOR_SRCS = initiator.o scsi.o actor.o event_poll.o mgmt_ipc.o kern_err_table.o
|
INITIATOR_SRCS = initiator.o scsi.o actor.o event_poll.o mgmt_ipc.o kern_err_table.o
|
||||||
|
122
0058-iscsiuio-IPC-newroot-command.patch
Normal file
122
0058-iscsiuio-IPC-newroot-command.patch
Normal file
@ -0,0 +1,122 @@
|
|||||||
|
From e74f511ba862195d909bba90091fd84bd7904914 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
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
|
||||||
|
|
53
0059-iscsiuio-systemd-unit-files.patch
Normal file
53
0059-iscsiuio-systemd-unit-files.patch
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
From 822b53e6c9ebb0fe7236ebd3b4c73b009100592d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
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
|
||||||
|
|
31
0073-iscsiuio-fix-long-options.patch
Normal file
31
0073-iscsiuio-fix-long-options.patch
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
From bff9048411c891d2eafab1e588077e4bfa56cb43 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
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
|
||||||
|
|
@ -0,0 +1,51 @@
|
|||||||
|
From fefc8e39129dbdeadf2a0b6ba7a28e9e47597e11 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
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
|
||||||
|
|
58
0075-iscsiuio-systemd-socket-activation-support.patch
Normal file
58
0075-iscsiuio-systemd-socket-activation-support.patch
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
From b923362bb847eab5856fa3593f053e670d90e0fd Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
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
|
||||||
|
|
62
0076-iscsiuio-iscsid-IPC-newroot-command.patch
Normal file
62
0076-iscsiuio-iscsid-IPC-newroot-command.patch
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
From 07bf3074ccdd9debe844fe1bae0244799d01fe58 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
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
|
||||||
|
|
32
0077-iscsiuio-document-pidfile-option.patch
Normal file
32
0077-iscsiuio-document-pidfile-option.patch
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
From 1453c612ce34c6d3722e0d83b5e2def5048421dc Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chris Leech <cleech@redhat.com>
|
||||||
|
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 <pidfile>
|
||||||
|
+Use pidfile (default /var/run/iscsiuio.pid )
|
||||||
|
+.PP
|
||||||
|
+.TP
|
||||||
|
+.BI -h
|
||||||
|
+Display this help and exit.
|
||||||
|
+
|
||||||
|
|
||||||
|
.\"
|
||||||
|
.\" AUTHOR part
|
||||||
|
--
|
||||||
|
1.7.11.7
|
||||||
|
|
@ -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 <cleech@redhat.com>
|
From: Chris Leech <cleech@redhat.com>
|
||||||
Date: Mon, 21 Jan 2013 15:43:36 -0800
|
Date: Mon, 21 Jan 2013 15:43:36 -0800
|
||||||
Subject: use Red Hat version string to match RPM package version
|
Subject: use Red Hat version string to match RPM package version
|
||||||
|
@ -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
|
Patch8: 0008-iscsid-implement-systemd-compatible-socket-activatio.patch
|
||||||
Patch9: 0009-iscsid-add-example-unit-files-for-systemd.patch
|
Patch9: 0009-iscsid-add-example-unit-files-for-systemd.patch
|
||||||
Patch10: 0010-iscsi-tools-fix-get_random_bytes-error-handling.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
|
# distro specific modifications
|
||||||
Patch51: 0051-update-initscripts-and-docs.patch
|
Patch51: 0051-update-initscripts-and-docs.patch
|
||||||
Patch52: 0052-use-var-for-config.patch
|
Patch52: 0052-use-var-for-config.patch
|
||||||
@ -33,9 +38,16 @@ Patch54: 0054-add-libiscsi.patch
|
|||||||
Patch55: 0055-dont-use-static.patch
|
Patch55: 0055-dont-use-static.patch
|
||||||
Patch56: 0056-remove-the-offload-boot-supported-ifdef.patch
|
Patch56: 0056-remove-the-offload-boot-supported-ifdef.patch
|
||||||
Patch57: 0057-iscsid-iscsiuio-ipc-interface.patch
|
Patch57: 0057-iscsid-iscsiuio-ipc-interface.patch
|
||||||
|
Patch58: 0058-iscsiuio-IPC-newroot-command.patch
|
||||||
|
Patch59: 0059-iscsiuio-systemd-unit-files.patch
|
||||||
# iscsiuio patches
|
# iscsiuio patches
|
||||||
Patch71: 0071-iscsiuio-0.7.4.3.patch
|
Patch71: 0071-iscsiuio-0.7.4.3.patch
|
||||||
Patch72: 0072-iscsiuio-0.7.6.1.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
|
# version string, needs to be updated with each build
|
||||||
Patch99: 0099-use-Red-Hat-version-string-to-match-RPM-package-vers.patch
|
Patch99: 0099-use-Red-Hat-version-string-to-match-RPM-package-vers.patch
|
||||||
|
|
||||||
@ -79,6 +91,11 @@ mv iscsiuio-%{iscsiuio_version} iscsiuio
|
|||||||
%patch8 -p1
|
%patch8 -p1
|
||||||
%patch9 -p1
|
%patch9 -p1
|
||||||
%patch10 -p1
|
%patch10 -p1
|
||||||
|
# pending upstream merge
|
||||||
|
%patch31 -p1
|
||||||
|
%patch32 -p1
|
||||||
|
%patch33 -p1
|
||||||
|
%patch34 -p1
|
||||||
# distro specific modifications
|
# distro specific modifications
|
||||||
%patch51 -p1
|
%patch51 -p1
|
||||||
%patch52 -p1
|
%patch52 -p1
|
||||||
@ -87,10 +104,17 @@ mv iscsiuio-%{iscsiuio_version} iscsiuio
|
|||||||
%patch55 -p1
|
%patch55 -p1
|
||||||
%patch56 -p1
|
%patch56 -p1
|
||||||
%patch57 -p1
|
%patch57 -p1
|
||||||
|
%patch58 -p1
|
||||||
|
%patch59 -p1
|
||||||
# iscsiuio patches
|
# iscsiuio patches
|
||||||
cd iscsiuio
|
cd iscsiuio
|
||||||
%patch71 -p1
|
%patch71 -p1
|
||||||
%patch72 -p1
|
%patch72 -p1
|
||||||
|
%patch73 -p1
|
||||||
|
%patch74 -p1
|
||||||
|
%patch75 -p1
|
||||||
|
%patch76 -p1
|
||||||
|
%patch77 -p1
|
||||||
cd ..
|
cd ..
|
||||||
# version string
|
# version string
|
||||||
%patch99 -p1
|
%patch99 -p1
|
||||||
|
Loading…
Reference in New Issue
Block a user