This commit is contained in:
parent
25d20c595d
commit
ec3573e69b
362
open-iscsi-cxgb3i-support
Normal file
362
open-iscsi-cxgb3i-support
Normal file
@ -0,0 +1,362 @@
|
|||||||
|
commit 86b865b61d530188e3d6a59773ca7edbc8d30767
|
||||||
|
Author: Hannes Reinecke <hare@suse.de>
|
||||||
|
Date: Thu Nov 20 15:45:02 2008 +0100
|
||||||
|
|
||||||
|
cxgb3 iSCSI TOE support
|
||||||
|
|
||||||
|
This patch enable cxgb3i iSCSI TOE support for open-iscsi.
|
||||||
|
|
||||||
|
References: bnc#433500, FATE#304154
|
||||||
|
|
||||||
|
Signed-off-by: Karen Xie <kxie@chelsio.com>
|
||||||
|
Signed-off-by: Chandra Seetharaman <sekharan@us.ibm.com>
|
||||||
|
Signed-off-by: Hannes Reinecke <hare@suse.de>
|
||||||
|
|
||||||
|
diff --git a/doc/iscsiadm.8 b/doc/iscsiadm.8
|
||||||
|
index b488ad5..8fe14d4 100644
|
||||||
|
--- a/doc/iscsiadm.8
|
||||||
|
+++ b/doc/iscsiadm.8
|
||||||
|
@@ -63,10 +63,10 @@ specific hardware resource and instead allow the network or infinniband layer
|
||||||
|
to decide what to do. There is no need to create a iface config with the default
|
||||||
|
behavior. If you do not specify a iface, then the default behavior is used.
|
||||||
|
|
||||||
|
-As mentioned above there is a special iface name default. There are two others
|
||||||
|
-bnx2i and iser, which does not bind the session to a specific card, but
|
||||||
|
-will bind the session to either the bnx2i or iser transport. These are
|
||||||
|
-experimental and the use is not supported as a stable interface yet.
|
||||||
|
+As mentioned above there is a special iface name default. There are three
|
||||||
|
+others -- cxgb3i, bnx2i and iser, which does not bind the session to a specific
|
||||||
|
+card, but will bind the session to the cxgb3i, bnx2i or iser transport. These
|
||||||
|
+are experimental and the use is not supported as a stable interface yet.
|
||||||
|
|
||||||
|
In discovery mode multiple interfaces can be specific by passing in multiple
|
||||||
|
-I/--interface instances. For example,
|
||||||
|
diff --git a/etc/iface.example b/etc/iface.example
|
||||||
|
index 7fb7951..020b002 100644
|
||||||
|
--- a/etc/iface.example
|
||||||
|
+++ b/etc/iface.example
|
||||||
|
@@ -20,6 +20,7 @@
|
||||||
|
# - iser (Software iSCSI over infinniband
|
||||||
|
# - qla4xxx (Qlogic QLA4XXX HBAs)
|
||||||
|
# - bnx2i (Broadcom bnx iSCSI HBAs);
|
||||||
|
+# - cxgb3i (Chelsio cxgb S3 iSCSI HBAs);
|
||||||
|
#
|
||||||
|
#OPTIONAL: iface.initiatorname
|
||||||
|
# To use a initiator name other than the one set in
|
||||||
|
@@ -51,3 +52,13 @@
|
||||||
|
|
||||||
|
# Note you can only bind using one value. If you set multiple values
|
||||||
|
# the bahavior is not defined.
|
||||||
|
+
|
||||||
|
+# For some transport (cxgb3i), a user could to set the private ip address for
|
||||||
|
+# the iscsi traffic for an network interface:
|
||||||
|
+# example:
|
||||||
|
+# - set iscsi ip on eth0 to be 102.50.50.101, eth0 needs to be up and be on
|
||||||
|
+# the same subnet.
|
||||||
|
+# iface.net_ifacename = eth0
|
||||||
|
+# iface.ipaddress = 102.50.50.101
|
||||||
|
+~
|
||||||
|
+
|
||||||
|
diff --git a/usr/idbm.c b/usr/idbm.c
|
||||||
|
index a7a1072..6f4ed12 100644
|
||||||
|
--- a/usr/idbm.c
|
||||||
|
+++ b/usr/idbm.c
|
||||||
|
@@ -274,8 +274,8 @@ idbm_recinfo_node(node_rec_t *r, recinfo_t *ri)
|
||||||
|
*/
|
||||||
|
__recinfo_str("iface.hwaddress", ri, r, iface.hwaddress, IDBM_SHOW,
|
||||||
|
num, 1);
|
||||||
|
-// __recinfo_str("iface.ipaddress", ri, r, iface.ipaddress,
|
||||||
|
-// IDBM_SHOW, num);
|
||||||
|
+ __recinfo_str("iface.ipaddress", ri, r, iface.ipaddress, IDBM_SHOW,
|
||||||
|
+ num, 1);
|
||||||
|
__recinfo_str("iface.iscsi_ifacename", ri, r, iface.name, IDBM_SHOW,
|
||||||
|
num, 1);
|
||||||
|
__recinfo_str("iface.net_ifacename", ri, r, iface.netdev, IDBM_SHOW,
|
||||||
|
@@ -413,7 +413,7 @@ void idbm_recinfo_iface(iface_rec_t *r, recinfo_t *ri)
|
||||||
|
|
||||||
|
__recinfo_str("iface.iscsi_ifacename", ri, r, name, IDBM_SHOW, num, 0);
|
||||||
|
__recinfo_str("iface.net_ifacename", ri, r, netdev, IDBM_SHOW, num, 1);
|
||||||
|
-// __recinfo_str("iface.ipaddress", ri, r, ipaddress, IDBM_SHOW, num, 1);
|
||||||
|
+ __recinfo_str("iface.ipaddress", ri, r, ipaddress, IDBM_SHOW, num, 1);
|
||||||
|
__recinfo_str("iface.hwaddress", ri, r, hwaddress, IDBM_SHOW, num, 1);
|
||||||
|
__recinfo_str("iface.transport_name", ri, r, transport_name,
|
||||||
|
IDBM_SHOW, num, 1);
|
||||||
|
diff --git a/usr/iface.c b/usr/iface.c
|
||||||
|
index 01b87da..3273197 100644
|
||||||
|
--- a/usr/iface.c
|
||||||
|
+++ b/usr/iface.c
|
||||||
|
@@ -104,7 +104,7 @@ static void iface_init(struct iface_rec *iface)
|
||||||
|
void iface_setup_defaults(struct iface_rec *iface)
|
||||||
|
{
|
||||||
|
sprintf(iface->netdev, DEFAULT_NETDEV);
|
||||||
|
-// sprintf(iface->ipaddress, DEFAULT_IPADDRESS);
|
||||||
|
+ sprintf(iface->ipaddress, DEFAULT_IPADDRESS);
|
||||||
|
sprintf(iface->hwaddress, DEFAULT_HWADDRESS);
|
||||||
|
sprintf(iface->transport_name, DEFAULT_TRANSPORT);
|
||||||
|
iface_init(iface);
|
||||||
|
@@ -494,8 +494,8 @@ void iface_copy(struct iface_rec *dst, struct iface_rec *src)
|
||||||
|
strcpy(dst->name, src->name);
|
||||||
|
if (strlen(src->netdev))
|
||||||
|
strcpy(dst->netdev, src->netdev);
|
||||||
|
-// if (strlen(src->ipaddress))
|
||||||
|
-// strcpy(dst->ipaddress, src->ipaddress);
|
||||||
|
+ if (strlen(src->ipaddress))
|
||||||
|
+ strcpy(dst->ipaddress, src->ipaddress);
|
||||||
|
if (strlen(src->hwaddress))
|
||||||
|
strcpy(dst->hwaddress, src->hwaddress);
|
||||||
|
if (strlen(src->transport_name))
|
||||||
|
@@ -594,6 +594,8 @@ int iface_print_tree(void *data, struct iface_rec *iface)
|
||||||
|
UNKNOWN_VALUE);
|
||||||
|
printf("\tHW Address: %s\n",
|
||||||
|
strlen(iface->hwaddress) ? iface->hwaddress : UNKNOWN_VALUE);
|
||||||
|
+ printf("\tIP Address: %s\n",
|
||||||
|
+ strlen(iface->ipaddress) ? iface->ipaddress : UNKNOWN_VALUE);
|
||||||
|
printf("\tNetdev: %s\n",
|
||||||
|
strlen(iface->netdev) ? iface->netdev : UNKNOWN_VALUE);
|
||||||
|
printf("\tInitiator Name: %s\n",
|
||||||
|
@@ -603,11 +605,12 @@ int iface_print_tree(void *data, struct iface_rec *iface)
|
||||||
|
|
||||||
|
int iface_print_flat(void *data, struct iface_rec *iface)
|
||||||
|
{
|
||||||
|
- printf("%s %s,%s,%s,%s\n",
|
||||||
|
+ printf("%s %s,%s,%s,%s,%s\n",
|
||||||
|
strlen(iface->name) ? iface->name : UNKNOWN_VALUE,
|
||||||
|
strlen(iface->transport_name) ? iface->transport_name :
|
||||||
|
UNKNOWN_VALUE,
|
||||||
|
strlen(iface->hwaddress) ? iface->hwaddress : UNKNOWN_VALUE,
|
||||||
|
+ strlen(iface->ipaddress) ? iface->ipaddress : UNKNOWN_VALUE,
|
||||||
|
strlen(iface->netdev) ? iface->netdev : UNKNOWN_VALUE,
|
||||||
|
strlen(iface->iname) ? iface->iname : UNKNOWN_VALUE);
|
||||||
|
return 0;
|
||||||
|
diff --git a/usr/initiator.c b/usr/initiator.c
|
||||||
|
index 10cf050..8e95841 100644
|
||||||
|
--- a/usr/initiator.c
|
||||||
|
+++ b/usr/initiator.c
|
||||||
|
@@ -1176,7 +1176,7 @@ mgmt_ipc_err_e iscsi_host_set_param(int host_no, int param, char *value)
|
||||||
|
return MGMT_IPC_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
-#define MAX_SESSION_PARAMS 30
|
||||||
|
+#define MAX_SESSION_PARAMS 31
|
||||||
|
#define MAX_HOST_PARAMS 3
|
||||||
|
|
||||||
|
static void
|
||||||
|
@@ -1360,6 +1360,10 @@ setup_full_feature_phase(iscsi_conn_t *conn)
|
||||||
|
.param = ISCSI_PARAM_IFACE_NAME,
|
||||||
|
.value = session->nrec.iface.name,
|
||||||
|
.type = ISCSI_STRING,
|
||||||
|
+ }, {
|
||||||
|
+ .param = ISCSI_PARAM_INITIATOR_NAME,
|
||||||
|
+ .value = session->initiator_name,
|
||||||
|
+ .type = ISCSI_STRING,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
@@ -1946,6 +1950,54 @@ int session_is_running(node_rec_t *rec)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
+static int iface_set_param(struct iscsi_transport *t, iface_rec_t *iface,
|
||||||
|
+ iscsi_session_t *session)
|
||||||
|
+{
|
||||||
|
+ int rc = 0;
|
||||||
|
+ int netdev_set = strcasecmp(iface->netdev, DEFAULT_NETDEV);
|
||||||
|
+ int ipaddr_set = strcasecmp(iface->ipaddress, DEFAULT_IPADDRESS);
|
||||||
|
+ int hwaddr_set = strcasecmp(iface->hwaddress, DEFAULT_HWADDRESS);
|
||||||
|
+ int hostno;
|
||||||
|
+ iface_rec_t *iface_tmp;
|
||||||
|
+
|
||||||
|
+ log_debug(3, "iface %s, dev %s, set ip %s, hw %s, tranport %s.\n",
|
||||||
|
+ iface->name, iface->netdev, iface->ipaddress,
|
||||||
|
+ iface->hwaddress, iface->transport_name);
|
||||||
|
+
|
||||||
|
+ /* proceed only when netdev and either ipaddress or hwaddress is set */
|
||||||
|
+ if (!netdev_set || (!ipaddr_set && !hwaddr_set))
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ /* find out hostno via netdev */
|
||||||
|
+ iface_tmp = calloc(1, sizeof(*iface_tmp));
|
||||||
|
+ strcpy(iface_tmp->netdev, iface->netdev);
|
||||||
|
+ hostno = iscsi_sysfs_get_host_no_from_iface(iface_tmp, &rc);
|
||||||
|
+ free(iface_tmp);
|
||||||
|
+ if (rc)
|
||||||
|
+ return rc;
|
||||||
|
+ session->hostno = hostno;
|
||||||
|
+
|
||||||
|
+ if (ipaddr_set) {
|
||||||
|
+ rc = __iscsi_host_set_param(t, session->hostno,
|
||||||
|
+ ISCSI_HOST_PARAM_IPADDRESS,
|
||||||
|
+ iface->ipaddress,
|
||||||
|
+ ISCSI_STRING);
|
||||||
|
+ if (rc)
|
||||||
|
+ return rc;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (hwaddr_set) {
|
||||||
|
+ rc = __iscsi_host_set_param(t, session->hostno,
|
||||||
|
+ ISCSI_HOST_PARAM_HWADDRESS,
|
||||||
|
+ iface->hwaddress,
|
||||||
|
+ ISCSI_STRING);
|
||||||
|
+ if (rc)
|
||||||
|
+ return rc;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
int
|
||||||
|
session_login_task(node_rec_t *rec, queue_task_t *qtask)
|
||||||
|
{
|
||||||
|
@@ -2028,6 +2080,11 @@ session_login_task(node_rec_t *rec, queue_task_t *qtask)
|
||||||
|
conn = &session->conn[0];
|
||||||
|
qtask->conn = conn;
|
||||||
|
|
||||||
|
+ if (iface_set_param(t, &rec->iface, session)) {
|
||||||
|
+ __session_destroy(session);
|
||||||
|
+ return MGMT_IPC_ERR_LOGIN_FAILURE;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
conn->state = STATE_XPT_WAIT;
|
||||||
|
if (iscsi_conn_connect(conn, qtask)) {
|
||||||
|
__session_destroy(session);
|
||||||
|
diff --git a/usr/iscsi_sysfs.c b/usr/iscsi_sysfs.c
|
||||||
|
index cab3ec1..54b6ee6 100644
|
||||||
|
--- a/usr/iscsi_sysfs.c
|
||||||
|
+++ b/usr/iscsi_sysfs.c
|
||||||
|
@@ -531,7 +531,7 @@ uint32_t iscsi_sysfs_get_host_no_from_iface(struct iface_rec *iface, int *rc)
|
||||||
|
else if (strlen(iface->ipaddress) &&
|
||||||
|
strcasecmp(iface->ipaddress, DEFAULT_IPADDRESS))
|
||||||
|
host_no = get_host_no_from_ipaddress(iface->ipaddress, &tmp_rc);
|
||||||
|
- else if(strlen(iface->netdev) &&
|
||||||
|
+ else if (strlen(iface->netdev) &&
|
||||||
|
strcasecmp(iface->netdev, DEFAULT_NETDEV))
|
||||||
|
host_no = get_host_no_from_netdev(iface->netdev, &tmp_rc);
|
||||||
|
else
|
||||||
|
@@ -582,35 +582,78 @@ static int sysfs_read_iface(struct iface_rec *iface, int host_no, int sid)
|
||||||
|
log_debug(7, "could not read netdev for host%d\n", host_no);
|
||||||
|
}
|
||||||
|
|
||||||
|
- ret = iscsi_sysfs_get_iscsi_host_param(host_no, "initiatorname",
|
||||||
|
- iface->iname, "%s\n");
|
||||||
|
- if (ret)
|
||||||
|
- /* default iname is picked up later from initiatorname.iscsi */
|
||||||
|
- log_debug(7, "Could not read initiatorname for host%d\n",
|
||||||
|
- host_no);
|
||||||
|
-
|
||||||
|
/*
|
||||||
|
- * this is on the session, because we support multiple bindings
|
||||||
|
- * per device.
|
||||||
|
+ * If we are looping over the hosts then we want to read the
|
||||||
|
+ * initiator name set at that level instead of the session
|
||||||
|
+ * level one, because if we created a iscsi port with a different
|
||||||
|
+ * iname then they will not match.
|
||||||
|
*/
|
||||||
|
- memset(iface->name, 0, sizeof(iface->name));
|
||||||
|
- /*
|
||||||
|
- * this was added after 2.0.869 so we could be doing iscsi_tcp
|
||||||
|
- * session binding, but there may not be a ifacename set
|
||||||
|
- */
|
||||||
|
- ret = iscsi_sysfs_get_session_param(sid, "ifacename", iface->name,
|
||||||
|
- "%s\n");
|
||||||
|
+ ret = 1;
|
||||||
|
+ if (sid != -1) {
|
||||||
|
+ /*
|
||||||
|
+ * this is on the session, because we support multiple bindings
|
||||||
|
+ * per device.
|
||||||
|
+ */
|
||||||
|
+ memset(iface->name, 0, sizeof(iface->name));
|
||||||
|
+ /*
|
||||||
|
+ * this was added after 2.0.869 so we could be doing iscsi_tcp
|
||||||
|
+ * session binding, but there may not be a ifacename set
|
||||||
|
+ */
|
||||||
|
+ ret = iscsi_sysfs_get_session_param(sid, "ifacename",
|
||||||
|
+ iface->name, "%s\n");
|
||||||
|
+ /* if failed then look ifacename through binding tuple */
|
||||||
|
+ if (ret)
|
||||||
|
+ log_debug(7, "could not read iface name for sid %u\n",
|
||||||
|
+ sid);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
if (ret) {
|
||||||
|
- log_debug(7, "could not read iface name for sid %u\n", sid);
|
||||||
|
/*
|
||||||
|
- * if the ifacename file is not there then we are using a older
|
||||||
|
- * kernel and can try to find the binding by the net info
|
||||||
|
- * which was used on these older kernels.
|
||||||
|
- */
|
||||||
|
+ * if the ifacename file (will always not be for qla4xxx)
|
||||||
|
+ * is not there then we are using a older kernel and can
|
||||||
|
+ * try to find the binding by the net info which was
|
||||||
|
+ * used on these older kernels. If scanning hosts then
|
||||||
|
+ * we must go this route currently because we do not
|
||||||
|
+ * store the ifacename on the host for qla4xxx.
|
||||||
|
+ */
|
||||||
|
if (iface_get_by_net_binding(iface, iface))
|
||||||
|
- log_debug(7, "Could not find iface for session bound "
|
||||||
|
- "to:" iface_fmt "\n", iface_str(iface));
|
||||||
|
+ log_debug(7, "Could not find iface for "
|
||||||
|
+ "session bound to:" iface_fmt "\n",
|
||||||
|
+ iface_str(iface));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ ret = 1;
|
||||||
|
+ if (sid != 1) {
|
||||||
|
+ /*
|
||||||
|
+ * 2.0.870 we added the two inames to distinguish
|
||||||
|
+ * between one that may be set at the hba level
|
||||||
|
+ * as the default and one that we set for the iface
|
||||||
|
+ * so we could create a virtual initiator port.
|
||||||
|
+ */
|
||||||
|
+ ret = iscsi_sysfs_get_session_param(sid, "initiatorname",
|
||||||
|
+ iface->iname, "%s\n");
|
||||||
|
+ if (ret)
|
||||||
|
+ /*
|
||||||
|
+ * default iname is picked up later from
|
||||||
|
+ * initiatorname.iscsi
|
||||||
|
+ */
|
||||||
|
+ log_debug(7, "Could not read initiatorname for "
|
||||||
|
+ "host%d\n", host_no);
|
||||||
|
+ /* drop through to older iface iname */
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ if (ret) {
|
||||||
|
+ ret = iscsi_sysfs_get_iscsi_host_param(host_no, "initiatorname",
|
||||||
|
+ iface->iname, "%s\n");
|
||||||
|
+ if (ret)
|
||||||
|
+ /*
|
||||||
|
+ * default iname is picked up later from
|
||||||
|
+ * initiatorname.iscsi
|
||||||
|
+ */
|
||||||
|
+ log_debug(7, "Could not read initiatorname for "
|
||||||
|
+ "host%d\n", host_no);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/usr/transport.c b/usr/transport.c
|
||||||
|
index c2edbcc..07b61db 100644
|
||||||
|
--- a/usr/transport.c
|
||||||
|
+++ b/usr/transport.c
|
||||||
|
@@ -41,6 +41,13 @@ struct iscsi_transport_template iscsi_iser = {
|
||||||
|
.ep_disconnect = ktransport_ep_disconnect,
|
||||||
|
};
|
||||||
|
|
||||||
|
+struct iscsi_transport_template cxgb3i = {
|
||||||
|
+ .name = "cxgb3i",
|
||||||
|
+ .ep_connect = ktransport_ep_connect,
|
||||||
|
+ .ep_poll = ktransport_ep_poll,
|
||||||
|
+ .ep_disconnect = ktransport_ep_disconnect,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
struct iscsi_transport_template bnx2i = {
|
||||||
|
.name = "bnx2i",
|
||||||
|
.ep_connect = ktransport_ep_connect,
|
||||||
|
@@ -55,6 +62,7 @@ struct iscsi_transport_template qla4xxx = {
|
||||||
|
static struct iscsi_transport_template *iscsi_transport_templates[] = {
|
||||||
|
&iscsi_tcp,
|
||||||
|
&iscsi_iser,
|
||||||
|
+ &cxgb3i,
|
||||||
|
&bnx2i,
|
||||||
|
&qla4xxx,
|
||||||
|
NULL
|
68
open-iscsi-no-pid-file
Normal file
68
open-iscsi-no-pid-file
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
commit 9d9425eb31ecc3d1501da83e8e9becaec441b4c7
|
||||||
|
Author: Hannes Reinecke <hare@suse.de>
|
||||||
|
Date: Thu Nov 20 15:40:10 2008 +0100
|
||||||
|
|
||||||
|
Do not use a pid file for start scripts
|
||||||
|
|
||||||
|
open-iscsi works perfectly without a pid file. So don't create one.
|
||||||
|
|
||||||
|
Signed-off-by: Hannes Reinecke <hare@suse.de>
|
||||||
|
|
||||||
|
diff --git a/etc/initd/boot.suse b/etc/initd/boot.suse
|
||||||
|
index 3e93cad..83875e2 100644
|
||||||
|
--- a/etc/initd/boot.suse
|
||||||
|
+++ b/etc/initd/boot.suse
|
||||||
|
@@ -17,10 +17,9 @@
|
||||||
|
### END INIT INFO
|
||||||
|
|
||||||
|
ISCSIADM=/sbin/iscsiadm
|
||||||
|
-PID_FILE=/var/run/iscsi.pid
|
||||||
|
CONFIG_FILE=/etc/iscsid.conf
|
||||||
|
DAEMON=/sbin/iscsid
|
||||||
|
-ARGS="-c $CONFIG_FILE -p $PID_FILE"
|
||||||
|
+ARGS="-c $CONFIG_FILE"
|
||||||
|
|
||||||
|
# Source LSB init functions
|
||||||
|
. /etc/rc.status
|
||||||
|
diff --git a/etc/initd/initd.suse b/etc/initd/initd.suse
|
||||||
|
index 69b681b..11ee4d2 100644
|
||||||
|
--- a/etc/initd/initd.suse
|
||||||
|
+++ b/etc/initd/initd.suse
|
||||||
|
@@ -16,11 +16,10 @@
|
||||||
|
#
|
||||||
|
### END INIT INFO
|
||||||
|
|
||||||
|
-PID_FILE=/var/run/iscsi.pid
|
||||||
|
CONFIG_FILE=/etc/iscsi/iscsid.conf
|
||||||
|
DAEMON=/sbin/iscsid
|
||||||
|
ISCSIADM=/sbin/iscsiadm
|
||||||
|
-ARGS="-c $CONFIG_FILE -p $PID_FILE"
|
||||||
|
+ARGS="-c $CONFIG_FILE -n"
|
||||||
|
|
||||||
|
# Source LSB init functions
|
||||||
|
. /etc/rc.status
|
||||||
|
@@ -105,7 +104,6 @@ iscsi_list_all_nodes()
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
start)
|
||||||
|
- [ ! -d /var/lib/iscsi ] && mkdir -p /var/lib/iscsi
|
||||||
|
if checkproc $DAEMON ; then
|
||||||
|
RETVAL=0
|
||||||
|
else
|
||||||
|
@@ -122,15 +120,14 @@ case "$1" in
|
||||||
|
;;
|
||||||
|
stop)
|
||||||
|
iscsi_umount_all_luns
|
||||||
|
+ echo -n "Stopping iSCSI initiator service: "
|
||||||
|
if iscsi_logout_all_nodes ; then
|
||||||
|
killproc -KILL $DAEMON
|
||||||
|
RETVAL=$?
|
||||||
|
else
|
||||||
|
RETVAL=1
|
||||||
|
fi
|
||||||
|
- echo -n "Stopping iSCSI initiator service: "
|
||||||
|
if [ "$RETVAL" == "0" ]; then
|
||||||
|
- rm -f $PID_FILE
|
||||||
|
status=0
|
||||||
|
modprobe -r iscsi_tcp
|
||||||
|
if [ "$?" -ne "0" -a "$?" -ne "1" ]; then
|
@ -1,3 +1,9 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Nov 20 15:48:55 CET 2008 - hare@suse.de
|
||||||
|
|
||||||
|
- Add cxgb3i support (bnc#433500, FATE#304154)
|
||||||
|
- No pid file from init scripts
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Nov 13 11:38:30 CET 2008 - hare@suse.de
|
Thu Nov 13 11:38:30 CET 2008 - hare@suse.de
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ Group: Productivity/Networking/Other
|
|||||||
PreReq: %fillup_prereq %insserv_prereq
|
PreReq: %fillup_prereq %insserv_prereq
|
||||||
AutoReqProv: on
|
AutoReqProv: on
|
||||||
Version: 2.0.870
|
Version: 2.0.870
|
||||||
Release: 19
|
Release: 20
|
||||||
Provides: linux-iscsi
|
Provides: linux-iscsi
|
||||||
Obsoletes: linux-iscsi
|
Obsoletes: linux-iscsi
|
||||||
%define iscsi_release 865
|
%define iscsi_release 865
|
||||||
@ -54,6 +54,8 @@ Patch18: %{name}-update-suse-init-scripts
|
|||||||
Patch19: %{name}-set-LOCK_DIR-during-compilation
|
Patch19: %{name}-set-LOCK_DIR-during-compilation
|
||||||
Patch20: %{name}-add-mkinitrd-scriptlets
|
Patch20: %{name}-add-mkinitrd-scriptlets
|
||||||
Patch21: %{name}-install-mkinitrd-scriptlets
|
Patch21: %{name}-install-mkinitrd-scriptlets
|
||||||
|
Patch22: %{name}-no-pid-file
|
||||||
|
Patch23: %{name}-cxgb3i-support
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
|
|
||||||
%description
|
%description
|
||||||
@ -104,6 +106,8 @@ Authors:
|
|||||||
%patch19 -p1
|
%patch19 -p1
|
||||||
%patch20 -p1
|
%patch20 -p1
|
||||||
%patch21 -p1
|
%patch21 -p1
|
||||||
|
%patch22 -p1
|
||||||
|
%patch23 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%{__make} OPTFLAGS="${RPM_OPT_FLAGS} -DLOCK_DIR=\\\"/etc/iscsi\\\""
|
%{__make} OPTFLAGS="${RPM_OPT_FLAGS} -DLOCK_DIR=\\\"/etc/iscsi\\\""
|
||||||
@ -151,6 +155,9 @@ fi
|
|||||||
%doc %{_mandir}/man8/*
|
%doc %{_mandir}/man8/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Nov 20 2008 hare@suse.de
|
||||||
|
- Add cxgb3i support (bnc#433500, FATE#304154)
|
||||||
|
- No pid file from init scripts
|
||||||
* Thu Nov 13 2008 hare@suse.de
|
* Thu Nov 13 2008 hare@suse.de
|
||||||
- Update iscsi-gen-initiatorname to work with newer kernels
|
- Update iscsi-gen-initiatorname to work with newer kernels
|
||||||
(bnc#443509)
|
(bnc#443509)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user