diff options
Diffstat (limited to 'drivers')
-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 | ||