diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-11-13 22:25:38 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-11-13 22:25:38 -0500 |
commit | 0d522ee7499e4abe7189b2f1728e838959b8ddde (patch) | |
tree | 094f60e8bdb0083b58a43a0decbca59443a66e39 /include | |
parent | 5eea9be8b2478dbc2f9fb1cd6228a90e8dba804e (diff) | |
parent | 323f6226a816f0b01514d25fba5529e0e68636c3 (diff) |
Merge tag 'scsi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
Pull first round of SCSI updates from James Bottomley:
"This patch set is driver updates for qla4xxx, scsi_debug, pm80xx,
fcoe/libfc, eas2r, lpfc, be2iscsi and megaraid_sas plus some assorted
bug fixes and cleanups"
* tag 'scsi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (106 commits)
[SCSI] scsi_error: Escalate to LUN reset if abort fails
[SCSI] Add 'eh_deadline' to limit SCSI EH runtime
[SCSI] remove check for 'resetting'
[SCSI] dc395: Move 'last_reset' into internal host structure
[SCSI] tmscsim: Move 'last_reset' into host structure
[SCSI] advansys: Remove 'last_reset' references
[SCSI] dpt_i2o: return SCSI_MLQUEUE_HOST_BUSY when in reset
[SCSI] dpt_i2o: Remove DPTI_STATE_IOCTL
[SCSI] megaraid_sas: Fix synchronization problem between sysPD IO path and AEN path
[SCSI] lpfc: Fix typo on NULL assignment
[SCSI] scsi_dh_alua: ALUA handler attach should succeed while TPG is transitioning
[SCSI] scsi_dh_alua: ALUA check sense should retry device internal reset unit attention
[SCSI] esas2r: Cleanup snprinf formatting of firmware version
[SCSI] esas2r: Remove superfluous mask of pcie_cap_reg
[SCSI] esas2r: Fixes for big-endian platforms
[SCSI] esas2r: Directly call kernel functions for atomic bit operations
[SCSI] lpfc 8.3.43: Update lpfc version to driver version 8.3.43
[SCSI] lpfc 8.3.43: Fixed not processing task management IOCB response status
[SCSI] lpfc 8.3.43: Fixed spinlock hang.
[SCSI] lpfc 8.3.43: Fixed invalid Total_Data_Placed value received for els and ct command responses
...
Diffstat (limited to 'include')
-rw-r--r-- | include/scsi/fc/fc_fc2.h | 2 | ||||
-rw-r--r-- | include/scsi/iscsi_if.h | 17 | ||||
-rw-r--r-- | include/scsi/libfc.h | 9 | ||||
-rw-r--r-- | include/scsi/libfcoe.h | 7 | ||||
-rw-r--r-- | include/scsi/scsi_host.h | 5 | ||||
-rw-r--r-- | include/scsi/scsi_transport_iscsi.h | 1 |
6 files changed, 38 insertions, 3 deletions
diff --git a/include/scsi/fc/fc_fc2.h b/include/scsi/fc/fc_fc2.h index f87777d0d5bd..0b2671431305 100644 --- a/include/scsi/fc/fc_fc2.h +++ b/include/scsi/fc/fc_fc2.h | |||
@@ -104,7 +104,7 @@ struct fc_esb { | |||
104 | * esb_e_stat - flags from FC-FS-2 T11/1619-D Rev 0.90. | 104 | * esb_e_stat - flags from FC-FS-2 T11/1619-D Rev 0.90. |
105 | */ | 105 | */ |
106 | #define ESB_ST_RESP (1 << 31) /* responder to exchange */ | 106 | #define ESB_ST_RESP (1 << 31) /* responder to exchange */ |
107 | #define ESB_ST_SEQ_INIT (1 << 30) /* port holds sequence initiaive */ | 107 | #define ESB_ST_SEQ_INIT (1 << 30) /* port holds sequence initiative */ |
108 | #define ESB_ST_COMPLETE (1 << 29) /* exchange is complete */ | 108 | #define ESB_ST_COMPLETE (1 << 29) /* exchange is complete */ |
109 | #define ESB_ST_ABNORMAL (1 << 28) /* abnormal ending condition */ | 109 | #define ESB_ST_ABNORMAL (1 << 28) /* abnormal ending condition */ |
110 | #define ESB_ST_REC_QUAL (1 << 26) /* recovery qualifier active */ | 110 | #define ESB_ST_REC_QUAL (1 << 26) /* recovery qualifier active */ |
diff --git a/include/scsi/iscsi_if.h b/include/scsi/iscsi_if.h index 13d81c5c4ebf..5d6ed6cf12cc 100644 --- a/include/scsi/iscsi_if.h +++ b/include/scsi/iscsi_if.h | |||
@@ -69,6 +69,7 @@ enum iscsi_uevent_e { | |||
69 | ISCSI_UEVENT_LOGIN_FLASHNODE = UEVENT_BASE + 28, | 69 | ISCSI_UEVENT_LOGIN_FLASHNODE = UEVENT_BASE + 28, |
70 | ISCSI_UEVENT_LOGOUT_FLASHNODE = UEVENT_BASE + 29, | 70 | ISCSI_UEVENT_LOGOUT_FLASHNODE = UEVENT_BASE + 29, |
71 | ISCSI_UEVENT_LOGOUT_FLASHNODE_SID = UEVENT_BASE + 30, | 71 | ISCSI_UEVENT_LOGOUT_FLASHNODE_SID = UEVENT_BASE + 30, |
72 | ISCSI_UEVENT_SET_CHAP = UEVENT_BASE + 31, | ||
72 | 73 | ||
73 | /* up events */ | 74 | /* up events */ |
74 | ISCSI_KEVENT_RECV_PDU = KEVENT_BASE + 1, | 75 | ISCSI_KEVENT_RECV_PDU = KEVENT_BASE + 1, |
@@ -309,8 +310,16 @@ enum iscsi_param_type { | |||
309 | ISCSI_HOST_PARAM, /* iscsi_host_param */ | 310 | ISCSI_HOST_PARAM, /* iscsi_host_param */ |
310 | ISCSI_NET_PARAM, /* iscsi_net_param */ | 311 | ISCSI_NET_PARAM, /* iscsi_net_param */ |
311 | ISCSI_FLASHNODE_PARAM, /* iscsi_flashnode_param */ | 312 | ISCSI_FLASHNODE_PARAM, /* iscsi_flashnode_param */ |
313 | ISCSI_CHAP_PARAM, /* iscsi_chap_param */ | ||
312 | }; | 314 | }; |
313 | 315 | ||
316 | /* structure for minimalist usecase */ | ||
317 | struct iscsi_param_info { | ||
318 | uint32_t len; /* Actual length of the param value */ | ||
319 | uint16_t param; /* iscsi param */ | ||
320 | uint8_t value[0]; /* length sized value follows */ | ||
321 | } __packed; | ||
322 | |||
314 | struct iscsi_iface_param_info { | 323 | struct iscsi_iface_param_info { |
315 | uint32_t iface_num; /* iface number, 0 - n */ | 324 | uint32_t iface_num; /* iface number, 0 - n */ |
316 | uint32_t len; /* Actual length of the param */ | 325 | uint32_t len; /* Actual length of the param */ |
@@ -739,6 +748,14 @@ enum chap_type_e { | |||
739 | CHAP_TYPE_IN, | 748 | CHAP_TYPE_IN, |
740 | }; | 749 | }; |
741 | 750 | ||
751 | enum iscsi_chap_param { | ||
752 | ISCSI_CHAP_PARAM_INDEX, | ||
753 | ISCSI_CHAP_PARAM_CHAP_TYPE, | ||
754 | ISCSI_CHAP_PARAM_USERNAME, | ||
755 | ISCSI_CHAP_PARAM_PASSWORD, | ||
756 | ISCSI_CHAP_PARAM_PASSWORD_LEN | ||
757 | }; | ||
758 | |||
742 | #define ISCSI_CHAP_AUTH_NAME_MAX_LEN 256 | 759 | #define ISCSI_CHAP_AUTH_NAME_MAX_LEN 256 |
743 | #define ISCSI_CHAP_AUTH_SECRET_MAX_LEN 256 | 760 | #define ISCSI_CHAP_AUTH_SECRET_MAX_LEN 256 |
744 | struct iscsi_chap_rec { | 761 | struct iscsi_chap_rec { |
diff --git a/include/scsi/libfc.h b/include/scsi/libfc.h index e1379b4e8faf..52beadf9a29b 100644 --- a/include/scsi/libfc.h +++ b/include/scsi/libfc.h | |||
@@ -410,6 +410,12 @@ struct fc_seq { | |||
410 | * @fh_type: The frame type | 410 | * @fh_type: The frame type |
411 | * @class: The class of service | 411 | * @class: The class of service |
412 | * @seq: The sequence in use on this exchange | 412 | * @seq: The sequence in use on this exchange |
413 | * @resp_active: Number of tasks that are concurrently executing @resp(). | ||
414 | * @resp_task: If @resp_active > 0, either the task executing @resp(), the | ||
415 | * task that has been interrupted to execute the soft-IRQ | ||
416 | * executing @resp() or NULL if more than one task is executing | ||
417 | * @resp concurrently. | ||
418 | * @resp_wq: Waitqueue for the tasks waiting on @resp_active. | ||
413 | * @resp: Callback for responses on this exchange | 419 | * @resp: Callback for responses on this exchange |
414 | * @destructor: Called when destroying the exchange | 420 | * @destructor: Called when destroying the exchange |
415 | * @arg: Passed as a void pointer to the resp() callback | 421 | * @arg: Passed as a void pointer to the resp() callback |
@@ -441,6 +447,9 @@ struct fc_exch { | |||
441 | u32 r_a_tov; | 447 | u32 r_a_tov; |
442 | u32 f_ctl; | 448 | u32 f_ctl; |
443 | struct fc_seq seq; | 449 | struct fc_seq seq; |
450 | int resp_active; | ||
451 | struct task_struct *resp_task; | ||
452 | wait_queue_head_t resp_wq; | ||
444 | void (*resp)(struct fc_seq *, struct fc_frame *, void *); | 453 | void (*resp)(struct fc_seq *, struct fc_frame *, void *); |
445 | void *arg; | 454 | void *arg; |
446 | void (*destructor)(struct fc_seq *, void *); | 455 | void (*destructor)(struct fc_seq *, void *); |
diff --git a/include/scsi/libfcoe.h b/include/scsi/libfcoe.h index 4427393115ea..de7e3ee60f0c 100644 --- a/include/scsi/libfcoe.h +++ b/include/scsi/libfcoe.h | |||
@@ -90,6 +90,7 @@ enum fip_state { | |||
90 | * @lp: &fc_lport: libfc local port. | 90 | * @lp: &fc_lport: libfc local port. |
91 | * @sel_fcf: currently selected FCF, or NULL. | 91 | * @sel_fcf: currently selected FCF, or NULL. |
92 | * @fcfs: list of discovered FCFs. | 92 | * @fcfs: list of discovered FCFs. |
93 | * @cdev: (Optional) pointer to sysfs fcoe_ctlr_device. | ||
93 | * @fcf_count: number of discovered FCF entries. | 94 | * @fcf_count: number of discovered FCF entries. |
94 | * @sol_time: time when a multicast solicitation was last sent. | 95 | * @sol_time: time when a multicast solicitation was last sent. |
95 | * @sel_time: time after which to select an FCF. | 96 | * @sel_time: time after which to select an FCF. |
@@ -127,6 +128,7 @@ struct fcoe_ctlr { | |||
127 | struct fc_lport *lp; | 128 | struct fc_lport *lp; |
128 | struct fcoe_fcf *sel_fcf; | 129 | struct fcoe_fcf *sel_fcf; |
129 | struct list_head fcfs; | 130 | struct list_head fcfs; |
131 | struct fcoe_ctlr_device *cdev; | ||
130 | u16 fcf_count; | 132 | u16 fcf_count; |
131 | unsigned long sol_time; | 133 | unsigned long sol_time; |
132 | unsigned long sel_time; | 134 | unsigned long sel_time; |
@@ -168,8 +170,11 @@ static inline void *fcoe_ctlr_priv(const struct fcoe_ctlr *ctlr) | |||
168 | return (void *)(ctlr + 1); | 170 | return (void *)(ctlr + 1); |
169 | } | 171 | } |
170 | 172 | ||
173 | /* | ||
174 | * This assumes that the fcoe_ctlr (x) is allocated with the fcoe_ctlr_device. | ||
175 | */ | ||
171 | #define fcoe_ctlr_to_ctlr_dev(x) \ | 176 | #define fcoe_ctlr_to_ctlr_dev(x) \ |
172 | (struct fcoe_ctlr_device *)(((struct fcoe_ctlr_device *)(x)) - 1) | 177 | (x)->cdev |
173 | 178 | ||
174 | /** | 179 | /** |
175 | * struct fcoe_fcf - Fibre-Channel Forwarder | 180 | * struct fcoe_fcf - Fibre-Channel Forwarder |
diff --git a/include/scsi/scsi_host.h b/include/scsi/scsi_host.h index 755243572219..546084964d55 100644 --- a/include/scsi/scsi_host.h +++ b/include/scsi/scsi_host.h | |||
@@ -598,9 +598,12 @@ struct Scsi_Host { | |||
598 | unsigned int host_eh_scheduled; /* EH scheduled without command */ | 598 | unsigned int host_eh_scheduled; /* EH scheduled without command */ |
599 | 599 | ||
600 | unsigned int host_no; /* Used for IOCTL_GET_IDLUN, /proc/scsi et al. */ | 600 | unsigned int host_no; /* Used for IOCTL_GET_IDLUN, /proc/scsi et al. */ |
601 | int resetting; /* if set, it means that last_reset is a valid value */ | 601 | |
602 | /* next two fields are used to bound the time spent in error handling */ | ||
603 | int eh_deadline; | ||
602 | unsigned long last_reset; | 604 | unsigned long last_reset; |
603 | 605 | ||
606 | |||
604 | /* | 607 | /* |
605 | * These three parameters can be used to allow for wide scsi, | 608 | * These three parameters can be used to allow for wide scsi, |
606 | * and for host adapters that support multiple busses | 609 | * and for host adapters that support multiple busses |
diff --git a/include/scsi/scsi_transport_iscsi.h b/include/scsi/scsi_transport_iscsi.h index d0f1602985e7..fe7c8f3e93f8 100644 --- a/include/scsi/scsi_transport_iscsi.h +++ b/include/scsi/scsi_transport_iscsi.h | |||
@@ -152,6 +152,7 @@ struct iscsi_transport { | |||
152 | int (*get_chap) (struct Scsi_Host *shost, uint16_t chap_tbl_idx, | 152 | int (*get_chap) (struct Scsi_Host *shost, uint16_t chap_tbl_idx, |
153 | uint32_t *num_entries, char *buf); | 153 | uint32_t *num_entries, char *buf); |
154 | int (*delete_chap) (struct Scsi_Host *shost, uint16_t chap_tbl_idx); | 154 | int (*delete_chap) (struct Scsi_Host *shost, uint16_t chap_tbl_idx); |
155 | int (*set_chap) (struct Scsi_Host *shost, void *data, int len); | ||
155 | int (*get_flashnode_param) (struct iscsi_bus_flash_session *fnode_sess, | 156 | int (*get_flashnode_param) (struct iscsi_bus_flash_session *fnode_sess, |
156 | int param, char *buf); | 157 | int param, char *buf); |
157 | int (*set_flashnode_param) (struct iscsi_bus_flash_session *fnode_sess, | 158 | int (*set_flashnode_param) (struct iscsi_bus_flash_session *fnode_sess, |