aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi
diff options
context:
space:
mode:
authorMike Christie <michaelc@cs.wisc.edu>2007-05-30 13:57:11 -0400
committerJames Bottomley <jejb@mulgrave.(none)>2007-06-01 12:51:03 -0400
commit1d9bf13a9cf91f8faf221e98a64dd1157bcf5fa9 (patch)
tree25b38eae693498c3085bd9727785c5eed2f1d5f1 /drivers/scsi
parent2174a04ee7d8304a270de183fbc58b36dd05b395 (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.c29
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
970static int 970static int
971iscsi_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
994static int
971iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh) 995iscsi_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