[SCSI] libiscsi, iscsi_tcp, ib_iser : add sw iscsi host get/set params helpers
iscsid and udev need to key off the hw address being used so add some helpers for iser and iscsi tcp. Also convert them Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> Cc: Roland Dreier <rdreier@cisco.com> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
parent
1d9bf13a9c
commit
0801c242a3
|
@ -576,6 +576,7 @@ static struct iscsi_transport iscsi_iser_transport = {
|
||||||
ISCSI_PERSISTENT_ADDRESS |
|
ISCSI_PERSISTENT_ADDRESS |
|
||||||
ISCSI_TARGET_NAME |
|
ISCSI_TARGET_NAME |
|
||||||
ISCSI_TPGT,
|
ISCSI_TPGT,
|
||||||
|
.host_param_mask = ISCSI_HOST_HWADDRESS,
|
||||||
.host_template = &iscsi_iser_sht,
|
.host_template = &iscsi_iser_sht,
|
||||||
.conndata_size = sizeof(struct iscsi_conn),
|
.conndata_size = sizeof(struct iscsi_conn),
|
||||||
.max_lun = ISCSI_ISER_MAX_LUN,
|
.max_lun = ISCSI_ISER_MAX_LUN,
|
||||||
|
@ -592,6 +593,9 @@ static struct iscsi_transport iscsi_iser_transport = {
|
||||||
.get_session_param = iscsi_session_get_param,
|
.get_session_param = iscsi_session_get_param,
|
||||||
.start_conn = iscsi_iser_conn_start,
|
.start_conn = iscsi_iser_conn_start,
|
||||||
.stop_conn = iscsi_conn_stop,
|
.stop_conn = iscsi_conn_stop,
|
||||||
|
/* iscsi host params */
|
||||||
|
.get_host_param = iscsi_host_get_param,
|
||||||
|
.set_host_param = iscsi_host_set_param,
|
||||||
/* IO */
|
/* IO */
|
||||||
.send_pdu = iscsi_conn_send_pdu,
|
.send_pdu = iscsi_conn_send_pdu,
|
||||||
.get_stats = iscsi_iser_conn_get_stats,
|
.get_stats = iscsi_iser_conn_get_stats,
|
||||||
|
|
|
@ -2181,6 +2181,7 @@ static struct iscsi_transport iscsi_tcp_transport = {
|
||||||
ISCSI_PERSISTENT_ADDRESS |
|
ISCSI_PERSISTENT_ADDRESS |
|
||||||
ISCSI_TARGET_NAME |
|
ISCSI_TARGET_NAME |
|
||||||
ISCSI_TPGT,
|
ISCSI_TPGT,
|
||||||
|
.host_param_mask = ISCSI_HOST_HWADDRESS,
|
||||||
.host_template = &iscsi_sht,
|
.host_template = &iscsi_sht,
|
||||||
.conndata_size = sizeof(struct iscsi_conn),
|
.conndata_size = sizeof(struct iscsi_conn),
|
||||||
.max_conn = 1,
|
.max_conn = 1,
|
||||||
|
@ -2197,6 +2198,9 @@ static struct iscsi_transport iscsi_tcp_transport = {
|
||||||
.get_session_param = iscsi_session_get_param,
|
.get_session_param = iscsi_session_get_param,
|
||||||
.start_conn = iscsi_conn_start,
|
.start_conn = iscsi_conn_start,
|
||||||
.stop_conn = iscsi_tcp_conn_stop,
|
.stop_conn = iscsi_tcp_conn_stop,
|
||||||
|
/* iscsi host params */
|
||||||
|
.get_host_param = iscsi_host_get_param,
|
||||||
|
.set_host_param = iscsi_host_set_param,
|
||||||
/* IO */
|
/* IO */
|
||||||
.send_pdu = iscsi_conn_send_pdu,
|
.send_pdu = iscsi_conn_send_pdu,
|
||||||
.get_stats = iscsi_conn_get_stats,
|
.get_stats = iscsi_conn_get_stats,
|
||||||
|
|
|
@ -1462,6 +1462,7 @@ void iscsi_session_teardown(struct iscsi_cls_session *cls_session)
|
||||||
iscsi_pool_free(&session->cmdpool, (void**)session->cmds);
|
iscsi_pool_free(&session->cmdpool, (void**)session->cmds);
|
||||||
|
|
||||||
kfree(session->targetname);
|
kfree(session->targetname);
|
||||||
|
kfree(session->hwaddress);
|
||||||
|
|
||||||
iscsi_destroy_session(cls_session);
|
iscsi_destroy_session(cls_session);
|
||||||
scsi_host_put(shost);
|
scsi_host_put(shost);
|
||||||
|
@ -1990,6 +1991,45 @@ int iscsi_conn_get_param(struct iscsi_cls_conn *cls_conn,
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(iscsi_conn_get_param);
|
EXPORT_SYMBOL_GPL(iscsi_conn_get_param);
|
||||||
|
|
||||||
|
int iscsi_host_get_param(struct Scsi_Host *shost, enum iscsi_host_param param,
|
||||||
|
char *buf)
|
||||||
|
{
|
||||||
|
struct iscsi_session *session = iscsi_hostdata(shost->hostdata);
|
||||||
|
int len;
|
||||||
|
|
||||||
|
switch (param) {
|
||||||
|
case ISCSI_HOST_PARAM_HWADDRESS:
|
||||||
|
if (!session->hwaddress)
|
||||||
|
len = sprintf(buf, "%s\n", "default");
|
||||||
|
else
|
||||||
|
len = sprintf(buf, "%s\n", session->hwaddress);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return -ENOSYS;
|
||||||
|
}
|
||||||
|
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(iscsi_host_get_param);
|
||||||
|
|
||||||
|
int iscsi_host_set_param(struct Scsi_Host *shost, enum iscsi_host_param param,
|
||||||
|
char *buf, int buflen)
|
||||||
|
{
|
||||||
|
struct iscsi_session *session = iscsi_hostdata(shost->hostdata);
|
||||||
|
|
||||||
|
switch (param) {
|
||||||
|
case ISCSI_HOST_PARAM_HWADDRESS:
|
||||||
|
if (!session->hwaddress)
|
||||||
|
session->hwaddress = kstrdup(buf, GFP_KERNEL);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return -ENOSYS;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(iscsi_host_set_param);
|
||||||
|
|
||||||
MODULE_AUTHOR("Mike Christie");
|
MODULE_AUTHOR("Mike Christie");
|
||||||
MODULE_DESCRIPTION("iSCSI library functions");
|
MODULE_DESCRIPTION("iSCSI library functions");
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
|
|
|
@ -224,7 +224,8 @@ struct iscsi_session {
|
||||||
int erl;
|
int erl;
|
||||||
int tpgt;
|
int tpgt;
|
||||||
char *targetname;
|
char *targetname;
|
||||||
|
/* hw address being used for iscsi connection */
|
||||||
|
char *hwaddress;
|
||||||
/* control data */
|
/* control data */
|
||||||
struct iscsi_transport *tt;
|
struct iscsi_transport *tt;
|
||||||
struct Scsi_Host *host;
|
struct Scsi_Host *host;
|
||||||
|
@ -255,6 +256,16 @@ extern int iscsi_eh_host_reset(struct scsi_cmnd *sc);
|
||||||
extern int iscsi_queuecommand(struct scsi_cmnd *sc,
|
extern int iscsi_queuecommand(struct scsi_cmnd *sc,
|
||||||
void (*done)(struct scsi_cmnd *));
|
void (*done)(struct scsi_cmnd *));
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* iSCSI host helpers.
|
||||||
|
*/
|
||||||
|
extern int iscsi_host_set_param(struct Scsi_Host *shost,
|
||||||
|
enum iscsi_host_param param, char *buf,
|
||||||
|
int buflen);
|
||||||
|
extern int iscsi_host_get_param(struct Scsi_Host *shost,
|
||||||
|
enum iscsi_host_param param, char *buf);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* session management
|
* session management
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue