aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/dc395x.c
diff options
context:
space:
mode:
authorHannes Reinecke <hare@suse.de>2014-06-25 09:27:36 -0400
committerChristoph Hellwig <hch@lst.de>2014-07-17 16:07:37 -0400
commit9cb78c16f5dadefd8dc5ba0ae5a2f26cd59419b3 (patch)
tree576b86c3ec56dd7176285ec2d27f27ca55f77bc3 /drivers/scsi/dc395x.c
parent755f516bbb983915d6cbfb5aa592cc0a5a99fd00 (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.c40
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;