diff options
author | Mike Christie <michaelc@cs.wisc.edu> | 2008-04-20 12:51:20 -0500 |
---|---|---|
committer | Mike Christie <michaelc@cs.wisc.edu> | 2008-04-20 14:36:05 -0500 |
commit | b14f05d07ebb01ff6e871ea93e5f40b9f9c047d3 (patch) | |
tree | a467dacf49b82bfba74c35ab952e166cb9bc5da8 /kernel | |
parent | 04be6f64c3f96daccbef93c2d316d7cb63cf6ef3 (diff) | |
download | open-iscsi-b14f05d07ebb01ff6e871ea93e5f40b9f9c047d3.tar.gz |
iscsi class/if kernel: add ifacename attr
This adds a attr that userspace can use to set a id for
the session similar to setting a network inteface's name.
It is used for binding hba and port attrs to a session.
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/iscsi_tcp.c | 3 | ||||
-rw-r--r-- | kernel/libiscsi.c | 9 | ||||
-rw-r--r-- | kernel/libiscsi.h | 1 | ||||
-rw-r--r-- | kernel/scsi_transport_iscsi.c | 4 |
4 files changed, 14 insertions, 3 deletions
diff --git a/kernel/iscsi_tcp.c b/kernel/iscsi_tcp.c index 0d21d87..daabd46 100644 --- a/kernel/iscsi_tcp.c +++ b/kernel/iscsi_tcp.c @@ -1968,7 +1968,8 @@ static struct iscsi_transport iscsi_tcp_transport = { ISCSI_USERNAME_IN | ISCSI_PASSWORD_IN | ISCSI_FAST_ABORT | ISCSI_ABORT_TMO | ISCSI_LU_RESET_TMO | - ISCSI_PING_TMO | ISCSI_RECV_TMO, + ISCSI_PING_TMO | ISCSI_RECV_TMO | + ISCSI_IFACE_NAME, .host_param_mask = ISCSI_HOST_HWADDRESS | ISCSI_HOST_IPADDRESS | ISCSI_HOST_INITIATOR_NAME | ISCSI_HOST_NETDEV_NAME, diff --git a/kernel/libiscsi.c b/kernel/libiscsi.c index 31b6477..30ea61a 100644 --- a/kernel/libiscsi.c +++ b/kernel/libiscsi.c @@ -1840,6 +1840,7 @@ void iscsi_session_teardown(struct iscsi_cls_session *cls_session) kfree(session->netdev); kfree(session->hwaddress); kfree(session->initiatorname); + kfree(session->ifacename); iscsi_free_session(cls_session); scsi_host_put(shost); @@ -2298,6 +2299,10 @@ int iscsi_set_param(struct iscsi_cls_conn *cls_conn, if (!conn->persistent_address) return -ENOMEM; break; + case ISCSI_PARAM_IFACE_NAME: + if (!session->ifacename) + session->ifacename = kstrdup(buf, GFP_KERNEL); + break; default: return -ENOSYS; } @@ -2365,6 +2370,9 @@ int iscsi_session_get_param(struct iscsi_cls_session *cls_session, case ISCSI_PARAM_PASSWORD_IN: len = sprintf(buf, "%s\n", session->password_in); break; + case ISCSI_PARAM_IFACE_NAME: + len = sprintf(buf, "%s\n", session->ifacename); + break; default: return -ENOSYS; } @@ -2446,7 +2454,6 @@ int iscsi_host_get_param(struct Scsi_Host *shost, enum iscsi_host_param param, else len = sprintf(buf, "%s\n", session->initiatorname); break; - default: return -ENOSYS; } diff --git a/kernel/libiscsi.h b/kernel/libiscsi.h index 6f10518..a409e3a 100644 --- a/kernel/libiscsi.h +++ b/kernel/libiscsi.h @@ -284,6 +284,7 @@ struct iscsi_session { /* hw address or netdev iscsi connection is bound to */ char *hwaddress; char *netdev; + char *ifacename; /* control data */ struct iscsi_transport *tt; struct Scsi_Host *host; diff --git a/kernel/scsi_transport_iscsi.c b/kernel/scsi_transport_iscsi.c index e8f8cf1..1b232ee 100644 --- a/kernel/scsi_transport_iscsi.c +++ b/kernel/scsi_transport_iscsi.c @@ -30,7 +30,7 @@ #include "scsi_transport_iscsi.h" #include "iscsi_if.h" -#define ISCSI_SESSION_ATTRS 19 +#define ISCSI_SESSION_ATTRS 20 #define ISCSI_CONN_ATTRS 13 #define ISCSI_HOST_ATTRS 4 #define ISCSI_TRANSPORT_VERSION "2.0-869" @@ -1415,6 +1415,7 @@ iscsi_session_attr(password_in, ISCSI_PARAM_PASSWORD_IN, 1); iscsi_session_attr(fast_abort, ISCSI_PARAM_FAST_ABORT, 0); iscsi_session_attr(abort_tmo, ISCSI_PARAM_ABORT_TMO, 0); iscsi_session_attr(lu_reset_tmo, ISCSI_PARAM_LU_RESET_TMO, 0); +iscsi_session_attr(ifacename, ISCSI_PARAM_IFACE_NAME, 0); static ssize_t show_priv_session_state(struct class_device *cdev, char *buf) @@ -1650,6 +1651,7 @@ iscsi_register_transport(struct iscsi_transport *tt) SETUP_SESSION_RD_ATTR(fast_abort, ISCSI_FAST_ABORT); SETUP_SESSION_RD_ATTR(abort_tmo, ISCSI_ABORT_TMO); SETUP_SESSION_RD_ATTR(lu_reset_tmo,ISCSI_LU_RESET_TMO); + SETUP_SESSION_RD_ATTR(ifacename, ISCSI_IFACE_NAME); SETUP_PRIV_SESSION_RD_ATTR(recovery_tmo); SETUP_PRIV_SESSION_RD_ATTR(state); |