diff options
author | Mike Christie <michaelc@cs.wisc.edu> | 2007-05-30 13:57:11 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.(none)> | 2007-06-01 12:51:03 -0400 |
commit | 1d9bf13a9cf91f8faf221e98a64dd1157bcf5fa9 (patch) | |
tree | 25b38eae693498c3085bd9727785c5eed2f1d5f1 /drivers/scsi | |
parent | 2174a04ee7d8304a270de183fbc58b36dd05b395 (diff) |
[SCSI] iscsi class: add iscsi host set param event
The iscsi class uses the set_param event to set session
and connection params. This patch adds a set_host_param
so we can set host level values.
Signed-off-by: Mike Christie <michaelc@cs.wisc.edu>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi')
-rw-r--r-- | drivers/scsi/scsi_transport_iscsi.c | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/drivers/scsi/scsi_transport_iscsi.c b/drivers/scsi/scsi_transport_iscsi.c index 59287601bd41..3fd2da451fe1 100644 --- a/drivers/scsi/scsi_transport_iscsi.c +++ b/drivers/scsi/scsi_transport_iscsi.c | |||
@@ -968,6 +968,30 @@ iscsi_tgt_dscvr(struct iscsi_transport *transport, | |||
968 | } | 968 | } |
969 | 969 | ||
970 | static int | 970 | static int |
971 | iscsi_set_host_param(struct iscsi_transport *transport, | ||
972 | struct iscsi_uevent *ev) | ||
973 | { | ||
974 | char *data = (char*)ev + sizeof(*ev); | ||
975 | struct Scsi_Host *shost; | ||
976 | int err; | ||
977 | |||
978 | if (!transport->set_host_param) | ||
979 | return -ENOSYS; | ||
980 | |||
981 | shost = scsi_host_lookup(ev->u.set_host_param.host_no); | ||
982 | if (IS_ERR(shost)) { | ||
983 | printk(KERN_ERR "set_host_param could not find host no %u\n", | ||
984 | ev->u.set_host_param.host_no); | ||
985 | return -ENODEV; | ||
986 | } | ||
987 | |||
988 | err = transport->set_host_param(shost, ev->u.set_host_param.param, | ||
989 | data, ev->u.set_host_param.len); | ||
990 | scsi_host_put(shost); | ||
991 | return err; | ||
992 | } | ||
993 | |||
994 | static int | ||
971 | iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh) | 995 | iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh) |
972 | { | 996 | { |
973 | int err = 0; | 997 | int err = 0; |
@@ -1058,8 +1082,11 @@ iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh) | |||
1058 | case ISCSI_UEVENT_TGT_DSCVR: | 1082 | case ISCSI_UEVENT_TGT_DSCVR: |
1059 | err = iscsi_tgt_dscvr(transport, ev); | 1083 | err = iscsi_tgt_dscvr(transport, ev); |
1060 | break; | 1084 | break; |
1085 | case ISCSI_UEVENT_SET_HOST_PARAM: | ||
1086 | err = iscsi_set_host_param(transport, ev); | ||
1087 | break; | ||
1061 | default: | 1088 | default: |
1062 | err = -EINVAL; | 1089 | err = -ENOSYS; |
1063 | break; | 1090 | break; |
1064 | } | 1091 | } |
1065 | 1092 | ||