diff options
author | Bart Van Assche <bart.vanassche@sandisk.com> | 2015-05-18 07:27:14 -0400 |
---|---|---|
committer | Doug Ledford <dledford@redhat.com> | 2015-05-18 13:35:56 -0400 |
commit | 985aa49556a576416d3f960f8fc1c6513863e33e (patch) | |
tree | a634502c13bc4ce98c7e6f78774ebf2d5c5b624a /include/scsi | |
parent | bbac5ccff43cdcb5fc9346669ec67ea47fca3de0 (diff) |
IB/srp: Add 64-bit LUN support
The SCSI standard defines 64-bit values for LUNs. Large arrays
employing large or hierarchical LUN numbers become more and more
common. So update the SRP initiator to use 64-bit LUN numbers.
See also Hannes Reinecke, commit 9cb78c16f5da ("scsi: use 64-bit LUNs"),
June 2014.
The largest LUN number that has been tested is 0xd2003fff00000000.
Checked the following structure sizes with gdb:
* sizeof(struct srp_cmd) = 48
* sizeof(struct srp_tsk_mgmt) = 48
* sizeof(struct srp_aer_req) = 36
The ibmvscsi changes have been compile tested only (on a PPC system).
Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
Reviewed-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Sagi Grimberg <sagig@mellanox.com>
Reviewed-by: Yann Droneaud <ydroneaud@opteya.com>
Cc: Sebastian Parschauer <sebastian.riemer@profitbricks.com>
Cc: Brian King <brking@linux.vnet.ibm.com>
Cc: Nathan Fontenot <nfont@linux.vnet.ibm.com>
Cc: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'include/scsi')
-rw-r--r-- | include/scsi/srp.h | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/include/scsi/srp.h b/include/scsi/srp.h index 1ae84db4c9fb..5be834de491a 100644 --- a/include/scsi/srp.h +++ b/include/scsi/srp.h | |||
@@ -42,6 +42,7 @@ | |||
42 | */ | 42 | */ |
43 | 43 | ||
44 | #include <linux/types.h> | 44 | #include <linux/types.h> |
45 | #include <scsi/scsi.h> | ||
45 | 46 | ||
46 | enum { | 47 | enum { |
47 | SRP_LOGIN_REQ = 0x00, | 48 | SRP_LOGIN_REQ = 0x00, |
@@ -179,7 +180,7 @@ struct srp_tsk_mgmt { | |||
179 | u8 reserved1[6]; | 180 | u8 reserved1[6]; |
180 | u64 tag; | 181 | u64 tag; |
181 | u8 reserved2[4]; | 182 | u8 reserved2[4]; |
182 | __be64 lun __attribute__((packed)); | 183 | struct scsi_lun lun; |
183 | u8 reserved3[2]; | 184 | u8 reserved3[2]; |
184 | u8 tsk_mgmt_func; | 185 | u8 tsk_mgmt_func; |
185 | u8 reserved4; | 186 | u8 reserved4; |
@@ -200,7 +201,7 @@ struct srp_cmd { | |||
200 | u8 data_in_desc_cnt; | 201 | u8 data_in_desc_cnt; |
201 | u64 tag; | 202 | u64 tag; |
202 | u8 reserved2[4]; | 203 | u8 reserved2[4]; |
203 | __be64 lun __attribute__((packed)); | 204 | struct scsi_lun lun; |
204 | u8 reserved3; | 205 | u8 reserved3; |
205 | u8 task_attr; | 206 | u8 task_attr; |
206 | u8 reserved4; | 207 | u8 reserved4; |
@@ -265,7 +266,7 @@ struct srp_aer_req { | |||
265 | __be32 req_lim_delta; | 266 | __be32 req_lim_delta; |
266 | u64 tag; | 267 | u64 tag; |
267 | u32 reserved2; | 268 | u32 reserved2; |
268 | __be64 lun; | 269 | struct scsi_lun lun; |
269 | __be32 sense_data_len; | 270 | __be32 sense_data_len; |
270 | u32 reserved3; | 271 | u32 reserved3; |
271 | u8 sense_data[0]; | 272 | u8 sense_data[0]; |