diff options
author | Hannes Reinecke <hare@suse.de> | 2014-06-25 09:27:36 -0400 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2014-07-17 16:07:37 -0400 |
commit | 9cb78c16f5dadefd8dc5ba0ae5a2f26cd59419b3 (patch) | |
tree | 576b86c3ec56dd7176285ec2d27f27ca55f77bc3 /drivers/scsi/dc395x.c | |
parent | 755f516bbb983915d6cbfb5aa592cc0a5a99fd00 (diff) |
scsi: use 64-bit LUNs
The SCSI standard defines 64-bit values for LUNs, and large arrays
employing large or hierarchical LUN numbers become more and more
common.
So update the linux SCSI stack to use 64-bit LUN numbers.
Signed-off-by: Hannes Reinecke <hare@suse.de>
Reviewed-by: Christoph Hellwig <hch@infradead.org>
Reviewed-by: Ewan Milne <emilne@redhat.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'drivers/scsi/dc395x.c')
-rw-r--r-- | drivers/scsi/dc395x.c | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/drivers/scsi/dc395x.c b/drivers/scsi/dc395x.c index ad7bee069d08..dff461f2338e 100644 --- a/drivers/scsi/dc395x.c +++ b/drivers/scsi/dc395x.c | |||
@@ -1087,7 +1087,7 @@ static int dc395x_queue_command_lck(struct scsi_cmnd *cmd, void (*done)(struct s | |||
1087 | struct AdapterCtlBlk *acb = | 1087 | struct AdapterCtlBlk *acb = |
1088 | (struct AdapterCtlBlk *)cmd->device->host->hostdata; | 1088 | (struct AdapterCtlBlk *)cmd->device->host->hostdata; |
1089 | dprintkdbg(DBG_0, "queue_command: (0x%p) <%02i-%i> cmnd=0x%02x\n", | 1089 | dprintkdbg(DBG_0, "queue_command: (0x%p) <%02i-%i> cmnd=0x%02x\n", |
1090 | cmd, cmd->device->id, cmd->device->lun, cmd->cmnd[0]); | 1090 | cmd, cmd->device->id, (u8)cmd->device->lun, cmd->cmnd[0]); |
1091 | 1091 | ||
1092 | /* Assume BAD_TARGET; will be cleared later */ | 1092 | /* Assume BAD_TARGET; will be cleared later */ |
1093 | cmd->result = DID_BAD_TARGET << 16; | 1093 | cmd->result = DID_BAD_TARGET << 16; |
@@ -1102,7 +1102,7 @@ static int dc395x_queue_command_lck(struct scsi_cmnd *cmd, void (*done)(struct s | |||
1102 | /* does the specified lun on the specified device exist */ | 1102 | /* does the specified lun on the specified device exist */ |
1103 | if (!(acb->dcb_map[cmd->device->id] & (1 << cmd->device->lun))) { | 1103 | if (!(acb->dcb_map[cmd->device->id] & (1 << cmd->device->lun))) { |
1104 | dprintkl(KERN_INFO, "queue_command: Ignore target <%02i-%i>\n", | 1104 | dprintkl(KERN_INFO, "queue_command: Ignore target <%02i-%i>\n", |
1105 | cmd->device->id, cmd->device->lun); | 1105 | cmd->device->id, (u8)cmd->device->lun); |
1106 | goto complete; | 1106 | goto complete; |
1107 | } | 1107 | } |
1108 | 1108 | ||
@@ -1111,7 +1111,7 @@ static int dc395x_queue_command_lck(struct scsi_cmnd *cmd, void (*done)(struct s | |||
1111 | if (!dcb) { | 1111 | if (!dcb) { |
1112 | /* should never happen */ | 1112 | /* should never happen */ |
1113 | dprintkl(KERN_ERR, "queue_command: No such device <%02i-%i>", | 1113 | dprintkl(KERN_ERR, "queue_command: No such device <%02i-%i>", |
1114 | cmd->device->id, cmd->device->lun); | 1114 | cmd->device->id, (u8)cmd->device->lun); |
1115 | goto complete; | 1115 | goto complete; |
1116 | } | 1116 | } |
1117 | 1117 | ||
@@ -1207,7 +1207,7 @@ static void dump_register_info(struct AdapterCtlBlk *acb, | |||
1207 | "cmnd=0x%02x <%02i-%i>\n", | 1207 | "cmnd=0x%02x <%02i-%i>\n", |
1208 | srb, srb->cmd, | 1208 | srb, srb->cmd, |
1209 | srb->cmd->cmnd[0], srb->cmd->device->id, | 1209 | srb->cmd->cmnd[0], srb->cmd->device->id, |
1210 | srb->cmd->device->lun); | 1210 | (u8)srb->cmd->device->lun); |
1211 | printk(" sglist=%p cnt=%i idx=%i len=%zu\n", | 1211 | printk(" sglist=%p cnt=%i idx=%i len=%zu\n", |
1212 | srb->segment_x, srb->sg_count, srb->sg_index, | 1212 | srb->segment_x, srb->sg_count, srb->sg_index, |
1213 | srb->total_xfer_length); | 1213 | srb->total_xfer_length); |
@@ -1302,7 +1302,7 @@ static int __dc395x_eh_bus_reset(struct scsi_cmnd *cmd) | |||
1302 | (struct AdapterCtlBlk *)cmd->device->host->hostdata; | 1302 | (struct AdapterCtlBlk *)cmd->device->host->hostdata; |
1303 | dprintkl(KERN_INFO, | 1303 | dprintkl(KERN_INFO, |
1304 | "eh_bus_reset: (0%p) target=<%02i-%i> cmd=%p\n", | 1304 | "eh_bus_reset: (0%p) target=<%02i-%i> cmd=%p\n", |
1305 | cmd, cmd->device->id, cmd->device->lun, cmd); | 1305 | cmd, cmd->device->id, (u8)cmd->device->lun, cmd); |
1306 | 1306 | ||
1307 | if (timer_pending(&acb->waiting_timer)) | 1307 | if (timer_pending(&acb->waiting_timer)) |
1308 | del_timer(&acb->waiting_timer); | 1308 | del_timer(&acb->waiting_timer); |
@@ -1369,7 +1369,7 @@ static int dc395x_eh_abort(struct scsi_cmnd *cmd) | |||
1369 | struct DeviceCtlBlk *dcb; | 1369 | struct DeviceCtlBlk *dcb; |
1370 | struct ScsiReqBlk *srb; | 1370 | struct ScsiReqBlk *srb; |
1371 | dprintkl(KERN_INFO, "eh_abort: (0x%p) target=<%02i-%i> cmd=%p\n", | 1371 | dprintkl(KERN_INFO, "eh_abort: (0x%p) target=<%02i-%i> cmd=%p\n", |
1372 | cmd, cmd->device->id, cmd->device->lun, cmd); | 1372 | cmd, cmd->device->id, (u8)cmd->device->lun, cmd); |
1373 | 1373 | ||
1374 | dcb = find_dcb(acb, cmd->device->id, cmd->device->lun); | 1374 | dcb = find_dcb(acb, cmd->device->id, cmd->device->lun); |
1375 | if (!dcb) { | 1375 | if (!dcb) { |
@@ -1605,7 +1605,7 @@ static u8 start_scsi(struct AdapterCtlBlk* acb, struct DeviceCtlBlk* dcb, | |||
1605 | dprintkl(KERN_WARNING, "start_scsi: (0x%p) " | 1605 | dprintkl(KERN_WARNING, "start_scsi: (0x%p) " |
1606 | "Out of tags target=<%02i-%i>)\n", | 1606 | "Out of tags target=<%02i-%i>)\n", |
1607 | srb->cmd, srb->cmd->device->id, | 1607 | srb->cmd, srb->cmd->device->id, |
1608 | srb->cmd->device->lun); | 1608 | (u8)srb->cmd->device->lun); |
1609 | srb->state = SRB_READY; | 1609 | srb->state = SRB_READY; |
1610 | DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, | 1610 | DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, |
1611 | DO_HWRESELECT); | 1611 | DO_HWRESELECT); |
@@ -1623,7 +1623,7 @@ static u8 start_scsi(struct AdapterCtlBlk* acb, struct DeviceCtlBlk* dcb, | |||
1623 | /*polling:*/ | 1623 | /*polling:*/ |
1624 | /* Send CDB ..command block ......... */ | 1624 | /* Send CDB ..command block ......... */ |
1625 | dprintkdbg(DBG_KG, "start_scsi: (0x%p) <%02i-%i> cmnd=0x%02x tag=%i\n", | 1625 | dprintkdbg(DBG_KG, "start_scsi: (0x%p) <%02i-%i> cmnd=0x%02x tag=%i\n", |
1626 | srb->cmd, srb->cmd->device->id, srb->cmd->device->lun, | 1626 | srb->cmd, srb->cmd->device->id, (u8)srb->cmd->device->lun, |
1627 | srb->cmd->cmnd[0], srb->tag_number); | 1627 | srb->cmd->cmnd[0], srb->tag_number); |
1628 | if (srb->flag & AUTO_REQSENSE) { | 1628 | if (srb->flag & AUTO_REQSENSE) { |
1629 | DC395x_write8(acb, TRM_S1040_SCSI_FIFO, REQUEST_SENSE); | 1629 | DC395x_write8(acb, TRM_S1040_SCSI_FIFO, REQUEST_SENSE); |
@@ -2041,7 +2041,7 @@ static void data_out_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, | |||
2041 | u16 scsi_status = *pscsi_status; | 2041 | u16 scsi_status = *pscsi_status; |
2042 | u32 d_left_counter = 0; | 2042 | u32 d_left_counter = 0; |
2043 | dprintkdbg(DBG_0, "data_out_phase0: (0x%p) <%02i-%i>\n", | 2043 | dprintkdbg(DBG_0, "data_out_phase0: (0x%p) <%02i-%i>\n", |
2044 | srb->cmd, srb->cmd->device->id, srb->cmd->device->lun); | 2044 | srb->cmd, srb->cmd->device->id, (u8)srb->cmd->device->lun); |
2045 | 2045 | ||
2046 | /* | 2046 | /* |
2047 | * KG: We need to drain the buffers before we draw any conclusions! | 2047 | * KG: We need to drain the buffers before we draw any conclusions! |
@@ -2171,7 +2171,7 @@ static void data_out_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, | |||
2171 | u16 *pscsi_status) | 2171 | u16 *pscsi_status) |
2172 | { | 2172 | { |
2173 | dprintkdbg(DBG_0, "data_out_phase1: (0x%p) <%02i-%i>\n", | 2173 | dprintkdbg(DBG_0, "data_out_phase1: (0x%p) <%02i-%i>\n", |
2174 | srb->cmd, srb->cmd->device->id, srb->cmd->device->lun); | 2174 | srb->cmd, srb->cmd->device->id, (u8)srb->cmd->device->lun); |
2175 | clear_fifo(acb, "data_out_phase1"); | 2175 | clear_fifo(acb, "data_out_phase1"); |
2176 | /* do prepare before transfer when data out phase */ | 2176 | /* do prepare before transfer when data out phase */ |
2177 | data_io_transfer(acb, srb, XFERDATAOUT); | 2177 | data_io_transfer(acb, srb, XFERDATAOUT); |
@@ -2183,7 +2183,7 @@ static void data_in_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, | |||
2183 | u16 scsi_status = *pscsi_status; | 2183 | u16 scsi_status = *pscsi_status; |
2184 | 2184 | ||
2185 | dprintkdbg(DBG_0, "data_in_phase0: (0x%p) <%02i-%i>\n", | 2185 | dprintkdbg(DBG_0, "data_in_phase0: (0x%p) <%02i-%i>\n", |
2186 | srb->cmd, srb->cmd->device->id, srb->cmd->device->lun); | 2186 | srb->cmd, srb->cmd->device->id, (u8)srb->cmd->device->lun); |
2187 | 2187 | ||
2188 | /* | 2188 | /* |
2189 | * KG: DataIn is much more tricky than DataOut. When the device is finished | 2189 | * KG: DataIn is much more tricky than DataOut. When the device is finished |
@@ -2394,7 +2394,7 @@ static void data_in_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, | |||
2394 | u16 *pscsi_status) | 2394 | u16 *pscsi_status) |
2395 | { | 2395 | { |
2396 | dprintkdbg(DBG_0, "data_in_phase1: (0x%p) <%02i-%i>\n", | 2396 | dprintkdbg(DBG_0, "data_in_phase1: (0x%p) <%02i-%i>\n", |
2397 | srb->cmd, srb->cmd->device->id, srb->cmd->device->lun); | 2397 | srb->cmd, srb->cmd->device->id, (u8)srb->cmd->device->lun); |
2398 | data_io_transfer(acb, srb, XFERDATAIN); | 2398 | data_io_transfer(acb, srb, XFERDATAIN); |
2399 | } | 2399 | } |
2400 | 2400 | ||
@@ -2406,7 +2406,7 @@ static void data_io_transfer(struct AdapterCtlBlk *acb, | |||
2406 | u8 bval; | 2406 | u8 bval; |
2407 | dprintkdbg(DBG_0, | 2407 | dprintkdbg(DBG_0, |
2408 | "data_io_transfer: (0x%p) <%02i-%i> %c len=%i, sg=(%i/%i)\n", | 2408 | "data_io_transfer: (0x%p) <%02i-%i> %c len=%i, sg=(%i/%i)\n", |
2409 | srb->cmd, srb->cmd->device->id, srb->cmd->device->lun, | 2409 | srb->cmd, srb->cmd->device->id, (u8)srb->cmd->device->lun, |
2410 | ((io_dir & DMACMD_DIR) ? 'r' : 'w'), | 2410 | ((io_dir & DMACMD_DIR) ? 'r' : 'w'), |
2411 | srb->total_xfer_length, srb->sg_index, srb->sg_count); | 2411 | srb->total_xfer_length, srb->sg_index, srb->sg_count); |
2412 | if (srb == acb->tmp_srb) | 2412 | if (srb == acb->tmp_srb) |
@@ -2579,7 +2579,7 @@ static void status_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, | |||
2579 | u16 *pscsi_status) | 2579 | u16 *pscsi_status) |
2580 | { | 2580 | { |
2581 | dprintkdbg(DBG_0, "status_phase0: (0x%p) <%02i-%i>\n", | 2581 | dprintkdbg(DBG_0, "status_phase0: (0x%p) <%02i-%i>\n", |
2582 | srb->cmd, srb->cmd->device->id, srb->cmd->device->lun); | 2582 | srb->cmd, srb->cmd->device->id, (u8)srb->cmd->device->lun); |
2583 | srb->target_status = DC395x_read8(acb, TRM_S1040_SCSI_FIFO); | 2583 | srb->target_status = DC395x_read8(acb, TRM_S1040_SCSI_FIFO); |
2584 | srb->end_message = DC395x_read8(acb, TRM_S1040_SCSI_FIFO); /* get message */ | 2584 | srb->end_message = DC395x_read8(acb, TRM_S1040_SCSI_FIFO); /* get message */ |
2585 | srb->state = SRB_COMPLETED; | 2585 | srb->state = SRB_COMPLETED; |
@@ -2593,7 +2593,7 @@ static void status_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb, | |||
2593 | u16 *pscsi_status) | 2593 | u16 *pscsi_status) |
2594 | { | 2594 | { |
2595 | dprintkdbg(DBG_0, "status_phase1: (0x%p) <%02i-%i>\n", | 2595 | dprintkdbg(DBG_0, "status_phase1: (0x%p) <%02i-%i>\n", |
2596 | srb->cmd, srb->cmd->device->id, srb->cmd->device->lun); | 2596 | srb->cmd, srb->cmd->device->id, (u8)srb->cmd->device->lun); |
2597 | srb->state = SRB_STATUS; | 2597 | srb->state = SRB_STATUS; |
2598 | DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); /* it's important for atn stop */ | 2598 | DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); /* it's important for atn stop */ |
2599 | DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, SCMD_COMP); | 2599 | DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, SCMD_COMP); |
@@ -3318,7 +3318,7 @@ static void srb_done(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb, | |||
3318 | int ckc_only = 1; | 3318 | int ckc_only = 1; |
3319 | 3319 | ||
3320 | dprintkdbg(DBG_1, "srb_done: (0x%p) <%02i-%i>\n", srb->cmd, | 3320 | dprintkdbg(DBG_1, "srb_done: (0x%p) <%02i-%i>\n", srb->cmd, |
3321 | srb->cmd->device->id, srb->cmd->device->lun); | 3321 | srb->cmd->device->id, (u8)srb->cmd->device->lun); |
3322 | dprintkdbg(DBG_SG, "srb_done: srb=%p sg=%i(%i/%i) buf=%p\n", | 3322 | dprintkdbg(DBG_SG, "srb_done: srb=%p sg=%i(%i/%i) buf=%p\n", |
3323 | srb, scsi_sg_count(cmd), srb->sg_index, srb->sg_count, | 3323 | srb, scsi_sg_count(cmd), srb->sg_index, srb->sg_count, |
3324 | scsi_sgtalbe(cmd)); | 3324 | scsi_sgtalbe(cmd)); |
@@ -3498,7 +3498,7 @@ static void srb_done(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb, | |||
3498 | if (srb->total_xfer_length) | 3498 | if (srb->total_xfer_length) |
3499 | dprintkdbg(DBG_KG, "srb_done: (0x%p) <%02i-%i> " | 3499 | dprintkdbg(DBG_KG, "srb_done: (0x%p) <%02i-%i> " |
3500 | "cmnd=0x%02x Missed %i bytes\n", | 3500 | "cmnd=0x%02x Missed %i bytes\n", |
3501 | cmd, cmd->device->id, cmd->device->lun, | 3501 | cmd, cmd->device->id, (u8)cmd->device->lun, |
3502 | cmd->cmnd[0], srb->total_xfer_length); | 3502 | cmd->cmnd[0], srb->total_xfer_length); |
3503 | } | 3503 | } |
3504 | 3504 | ||
@@ -3538,7 +3538,7 @@ static void doing_srb_done(struct AdapterCtlBlk *acb, u8 did_flag, | |||
3538 | dir = p->sc_data_direction; | 3538 | dir = p->sc_data_direction; |
3539 | result = MK_RES(0, did_flag, 0, 0); | 3539 | result = MK_RES(0, did_flag, 0, 0); |
3540 | printk("G:%p(%02i-%i) ", p, | 3540 | printk("G:%p(%02i-%i) ", p, |
3541 | p->device->id, p->device->lun); | 3541 | p->device->id, (u8)p->device->lun); |
3542 | srb_going_remove(dcb, srb); | 3542 | srb_going_remove(dcb, srb); |
3543 | free_tag(dcb, srb); | 3543 | free_tag(dcb, srb); |
3544 | srb_free_insert(acb, srb); | 3544 | srb_free_insert(acb, srb); |
@@ -3568,7 +3568,7 @@ static void doing_srb_done(struct AdapterCtlBlk *acb, u8 did_flag, | |||
3568 | 3568 | ||
3569 | result = MK_RES(0, did_flag, 0, 0); | 3569 | result = MK_RES(0, did_flag, 0, 0); |
3570 | printk("W:%p<%02i-%i>", p, p->device->id, | 3570 | printk("W:%p<%02i-%i>", p, p->device->id, |
3571 | p->device->lun); | 3571 | (u8)p->device->lun); |
3572 | srb_waiting_remove(dcb, srb); | 3572 | srb_waiting_remove(dcb, srb); |
3573 | srb_free_insert(acb, srb); | 3573 | srb_free_insert(acb, srb); |
3574 | p->result = result; | 3574 | p->result = result; |
@@ -3677,7 +3677,7 @@ static void request_sense(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb, | |||
3677 | { | 3677 | { |
3678 | struct scsi_cmnd *cmd = srb->cmd; | 3678 | struct scsi_cmnd *cmd = srb->cmd; |
3679 | dprintkdbg(DBG_1, "request_sense: (0x%p) <%02i-%i>\n", | 3679 | dprintkdbg(DBG_1, "request_sense: (0x%p) <%02i-%i>\n", |
3680 | cmd, cmd->device->id, cmd->device->lun); | 3680 | cmd, cmd->device->id, (u8)cmd->device->lun); |
3681 | 3681 | ||
3682 | srb->flag |= AUTO_REQSENSE; | 3682 | srb->flag |= AUTO_REQSENSE; |
3683 | srb->adapter_status = 0; | 3683 | srb->adapter_status = 0; |