mirror of https://gitee.com/openkylin/linux.git
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>
This commit is contained in:
parent
755f516bbb
commit
9cb78c16f5
|
@ -3945,7 +3945,7 @@ void ata_scsi_hotplug(struct work_struct *work)
|
||||||
* Zero.
|
* Zero.
|
||||||
*/
|
*/
|
||||||
int ata_scsi_user_scan(struct Scsi_Host *shost, unsigned int channel,
|
int ata_scsi_user_scan(struct Scsi_Host *shost, unsigned int channel,
|
||||||
unsigned int id, unsigned int lun)
|
unsigned int id, u64 lun)
|
||||||
{
|
{
|
||||||
struct ata_port *ap = ata_shost_to_port(shost);
|
struct ata_port *ap = ata_shost_to_port(shost);
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
|
@ -144,7 +144,7 @@ extern void ata_schedule_scsi_eh(struct Scsi_Host *shost);
|
||||||
extern void ata_scsi_dev_rescan(struct work_struct *work);
|
extern void ata_scsi_dev_rescan(struct work_struct *work);
|
||||||
extern int ata_bus_probe(struct ata_port *ap);
|
extern int ata_bus_probe(struct ata_port *ap);
|
||||||
extern int ata_scsi_user_scan(struct Scsi_Host *shost, unsigned int channel,
|
extern int ata_scsi_user_scan(struct Scsi_Host *shost, unsigned int channel,
|
||||||
unsigned int id, unsigned int lun);
|
unsigned int id, u64 lun);
|
||||||
|
|
||||||
|
|
||||||
/* libata-eh.c */
|
/* libata-eh.c */
|
||||||
|
|
|
@ -405,7 +405,7 @@ typedef struct _VirtTarget {
|
||||||
typedef struct _VirtDevice {
|
typedef struct _VirtDevice {
|
||||||
VirtTarget *vtarget;
|
VirtTarget *vtarget;
|
||||||
u8 configured_lun;
|
u8 configured_lun;
|
||||||
int lun;
|
u64 lun;
|
||||||
} VirtDevice;
|
} VirtDevice;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -204,7 +204,7 @@ mptfc_block_error_handler(struct scsi_cmnd *SCpnt,
|
||||||
|| (loops > 0 && ioc->active == 0)) {
|
|| (loops > 0 && ioc->active == 0)) {
|
||||||
spin_unlock_irqrestore(shost->host_lock, flags);
|
spin_unlock_irqrestore(shost->host_lock, flags);
|
||||||
dfcprintk (ioc, printk(MYIOC_s_DEBUG_FMT
|
dfcprintk (ioc, printk(MYIOC_s_DEBUG_FMT
|
||||||
"mptfc_block_error_handler.%d: %d:%d, port status is "
|
"mptfc_block_error_handler.%d: %d:%llu, port status is "
|
||||||
"%x, active flag %d, deferring %s recovery.\n",
|
"%x, active flag %d, deferring %s recovery.\n",
|
||||||
ioc->name, ioc->sh->host_no,
|
ioc->name, ioc->sh->host_no,
|
||||||
SCpnt->device->id, SCpnt->device->lun,
|
SCpnt->device->id, SCpnt->device->lun,
|
||||||
|
@ -218,7 +218,7 @@ mptfc_block_error_handler(struct scsi_cmnd *SCpnt,
|
||||||
if (ready == DID_NO_CONNECT || !SCpnt->device->hostdata
|
if (ready == DID_NO_CONNECT || !SCpnt->device->hostdata
|
||||||
|| ioc->active == 0) {
|
|| ioc->active == 0) {
|
||||||
dfcprintk (ioc, printk(MYIOC_s_DEBUG_FMT
|
dfcprintk (ioc, printk(MYIOC_s_DEBUG_FMT
|
||||||
"%s.%d: %d:%d, failing recovery, "
|
"%s.%d: %d:%llu, failing recovery, "
|
||||||
"port state %x, active %d, vdevice %p.\n", caller,
|
"port state %x, active %d, vdevice %p.\n", caller,
|
||||||
ioc->name, ioc->sh->host_no,
|
ioc->name, ioc->sh->host_no,
|
||||||
SCpnt->device->id, SCpnt->device->lun, ready,
|
SCpnt->device->id, SCpnt->device->lun, ready,
|
||||||
|
@ -226,7 +226,7 @@ mptfc_block_error_handler(struct scsi_cmnd *SCpnt,
|
||||||
return FAILED;
|
return FAILED;
|
||||||
}
|
}
|
||||||
dfcprintk (ioc, printk(MYIOC_s_DEBUG_FMT
|
dfcprintk (ioc, printk(MYIOC_s_DEBUG_FMT
|
||||||
"%s.%d: %d:%d, executing recovery.\n", caller,
|
"%s.%d: %d:%llu, executing recovery.\n", caller,
|
||||||
ioc->name, ioc->sh->host_no,
|
ioc->name, ioc->sh->host_no,
|
||||||
SCpnt->device->id, SCpnt->device->lun));
|
SCpnt->device->id, SCpnt->device->lun));
|
||||||
return (*func)(SCpnt);
|
return (*func)(SCpnt);
|
||||||
|
|
|
@ -95,7 +95,7 @@ static void mptscsih_freeChainBuffers(MPT_ADAPTER *ioc, int req_idx);
|
||||||
static void mptscsih_copy_sense_data(struct scsi_cmnd *sc, MPT_SCSI_HOST *hd, MPT_FRAME_HDR *mf, SCSIIOReply_t *pScsiReply);
|
static void mptscsih_copy_sense_data(struct scsi_cmnd *sc, MPT_SCSI_HOST *hd, MPT_FRAME_HDR *mf, SCSIIOReply_t *pScsiReply);
|
||||||
|
|
||||||
int mptscsih_IssueTaskMgmt(MPT_SCSI_HOST *hd, u8 type, u8 channel, u8 id,
|
int mptscsih_IssueTaskMgmt(MPT_SCSI_HOST *hd, u8 type, u8 channel, u8 id,
|
||||||
int lun, int ctx2abort, ulong timeout);
|
u64 lun, int ctx2abort, ulong timeout);
|
||||||
|
|
||||||
int mptscsih_ioc_reset(MPT_ADAPTER *ioc, int post_reset);
|
int mptscsih_ioc_reset(MPT_ADAPTER *ioc, int post_reset);
|
||||||
int mptscsih_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *pEvReply);
|
int mptscsih_event_process(MPT_ADAPTER *ioc, EventNotificationReply_t *pEvReply);
|
||||||
|
@ -536,7 +536,7 @@ mptscsih_info_scsiio(MPT_ADAPTER *ioc, struct scsi_cmnd *sc, SCSIIOReply_t * pSc
|
||||||
}
|
}
|
||||||
|
|
||||||
scsi_print_command(sc);
|
scsi_print_command(sc);
|
||||||
printk(MYIOC_s_DEBUG_FMT "\tfw_channel = %d, fw_id = %d, lun = %d\n",
|
printk(MYIOC_s_DEBUG_FMT "\tfw_channel = %d, fw_id = %d, lun = %llu\n",
|
||||||
ioc->name, pScsiReply->Bus, pScsiReply->TargetID, sc->device->lun);
|
ioc->name, pScsiReply->Bus, pScsiReply->TargetID, sc->device->lun);
|
||||||
printk(MYIOC_s_DEBUG_FMT "\trequest_len = %d, underflow = %d, "
|
printk(MYIOC_s_DEBUG_FMT "\trequest_len = %d, underflow = %d, "
|
||||||
"resid = %d\n", ioc->name, scsi_bufflen(sc), sc->underflow,
|
"resid = %d\n", ioc->name, scsi_bufflen(sc), sc->underflow,
|
||||||
|
@ -692,7 +692,7 @@ mptscsih_io_done(MPT_ADAPTER *ioc, MPT_FRAME_HDR *mf, MPT_FRAME_HDR *mr)
|
||||||
*/
|
*/
|
||||||
if (scsi_state & MPI_SCSI_STATE_RESPONSE_INFO_VALID &&
|
if (scsi_state & MPI_SCSI_STATE_RESPONSE_INFO_VALID &&
|
||||||
pScsiReply->ResponseInfo) {
|
pScsiReply->ResponseInfo) {
|
||||||
printk(MYIOC_s_NOTE_FMT "[%d:%d:%d:%d] "
|
printk(MYIOC_s_NOTE_FMT "[%d:%d:%d:%llu] "
|
||||||
"FCP_ResponseInfo=%08xh\n", ioc->name,
|
"FCP_ResponseInfo=%08xh\n", ioc->name,
|
||||||
sc->device->host->host_no, sc->device->channel,
|
sc->device->host->host_no, sc->device->channel,
|
||||||
sc->device->id, sc->device->lun,
|
sc->device->id, sc->device->lun,
|
||||||
|
@ -1155,7 +1155,7 @@ mptscsih_report_queue_full(struct scsi_cmnd *sc, SCSIIOReply_t *pScsiReply, SCSI
|
||||||
return;
|
return;
|
||||||
ioc = hd->ioc;
|
ioc = hd->ioc;
|
||||||
if (time - hd->last_queue_full > 10 * HZ) {
|
if (time - hd->last_queue_full > 10 * HZ) {
|
||||||
dprintk(ioc, printk(MYIOC_s_WARN_FMT "Device (%d:%d:%d) reported QUEUE_FULL!\n",
|
dprintk(ioc, printk(MYIOC_s_WARN_FMT "Device (%d:%d:%llu) reported QUEUE_FULL!\n",
|
||||||
ioc->name, 0, sc->device->id, sc->device->lun));
|
ioc->name, 0, sc->device->id, sc->device->lun));
|
||||||
hd->last_queue_full = time;
|
hd->last_queue_full = time;
|
||||||
}
|
}
|
||||||
|
@ -1518,7 +1518,7 @@ mptscsih_freeChainBuffers(MPT_ADAPTER *ioc, int req_idx)
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
int
|
int
|
||||||
mptscsih_IssueTaskMgmt(MPT_SCSI_HOST *hd, u8 type, u8 channel, u8 id, int lun,
|
mptscsih_IssueTaskMgmt(MPT_SCSI_HOST *hd, u8 type, u8 channel, u8 id, u64 lun,
|
||||||
int ctx2abort, ulong timeout)
|
int ctx2abort, ulong timeout)
|
||||||
{
|
{
|
||||||
MPT_FRAME_HDR *mf;
|
MPT_FRAME_HDR *mf;
|
||||||
|
@ -2380,7 +2380,7 @@ mptscsih_slave_configure(struct scsi_device *sdev)
|
||||||
vdevice = sdev->hostdata;
|
vdevice = sdev->hostdata;
|
||||||
|
|
||||||
dsprintk(ioc, printk(MYIOC_s_DEBUG_FMT
|
dsprintk(ioc, printk(MYIOC_s_DEBUG_FMT
|
||||||
"device @ %p, channel=%d, id=%d, lun=%d\n",
|
"device @ %p, channel=%d, id=%d, lun=%llu\n",
|
||||||
ioc->name, sdev, sdev->channel, sdev->id, sdev->lun));
|
ioc->name, sdev, sdev->channel, sdev->id, sdev->lun));
|
||||||
if (ioc->bus_type == SPI)
|
if (ioc->bus_type == SPI)
|
||||||
dsprintk(ioc, printk(MYIOC_s_DEBUG_FMT
|
dsprintk(ioc, printk(MYIOC_s_DEBUG_FMT
|
||||||
|
@ -2971,7 +2971,7 @@ mptscsih_do_cmd(MPT_SCSI_HOST *hd, INTERNAL_CMD *io)
|
||||||
+ (my_idx * MPT_SENSE_BUFFER_ALLOC));
|
+ (my_idx * MPT_SENSE_BUFFER_ALLOC));
|
||||||
|
|
||||||
devtprintk(ioc, printk(MYIOC_s_DEBUG_FMT
|
devtprintk(ioc, printk(MYIOC_s_DEBUG_FMT
|
||||||
"%s: Sending Command 0x%02x for fw_channel=%d fw_id=%d lun=%d\n",
|
"%s: Sending Command 0x%02x for fw_channel=%d fw_id=%d lun=%llu\n",
|
||||||
ioc->name, __func__, cmd, io->channel, io->id, io->lun));
|
ioc->name, __func__, cmd, io->channel, io->id, io->lun));
|
||||||
|
|
||||||
if (dir == MPI_SCSIIO_CONTROL_READ)
|
if (dir == MPI_SCSIIO_CONTROL_READ)
|
||||||
|
|
|
@ -98,7 +98,7 @@ typedef struct _internal_cmd {
|
||||||
u8 cmd; /* SCSI Op Code */
|
u8 cmd; /* SCSI Op Code */
|
||||||
u8 channel; /* bus number */
|
u8 channel; /* bus number */
|
||||||
u8 id; /* SCSI ID (virtual) */
|
u8 id; /* SCSI ID (virtual) */
|
||||||
int lun;
|
u64 lun;
|
||||||
u8 flags; /* Bit Field - See above */
|
u8 flags; /* Bit Field - See above */
|
||||||
u8 physDiskNum; /* Phys disk number, -1 else */
|
u8 physDiskNum; /* Phys disk number, -1 else */
|
||||||
u8 rsvd2;
|
u8 rsvd2;
|
||||||
|
@ -115,7 +115,7 @@ extern int mptscsih_show_info(struct seq_file *, struct Scsi_Host *);
|
||||||
extern const char * mptscsih_info(struct Scsi_Host *SChost);
|
extern const char * mptscsih_info(struct Scsi_Host *SChost);
|
||||||
extern int mptscsih_qcmd(struct scsi_cmnd *SCpnt);
|
extern int mptscsih_qcmd(struct scsi_cmnd *SCpnt);
|
||||||
extern int mptscsih_IssueTaskMgmt(MPT_SCSI_HOST *hd, u8 type, u8 channel,
|
extern int mptscsih_IssueTaskMgmt(MPT_SCSI_HOST *hd, u8 type, u8 channel,
|
||||||
u8 id, int lun, int ctx2abort, ulong timeout);
|
u8 id, u64 lun, int ctx2abort, ulong timeout);
|
||||||
extern void mptscsih_slave_destroy(struct scsi_device *device);
|
extern void mptscsih_slave_destroy(struct scsi_device *device);
|
||||||
extern int mptscsih_slave_configure(struct scsi_device *device);
|
extern int mptscsih_slave_configure(struct scsi_device *device);
|
||||||
extern int mptscsih_abort(struct scsi_cmnd * SCpnt);
|
extern int mptscsih_abort(struct scsi_cmnd * SCpnt);
|
||||||
|
|
|
@ -78,7 +78,7 @@ static unsigned int i2o_scsi_max_lun = 255;
|
||||||
struct i2o_scsi_host {
|
struct i2o_scsi_host {
|
||||||
struct Scsi_Host *scsi_host; /* pointer to the SCSI host */
|
struct Scsi_Host *scsi_host; /* pointer to the SCSI host */
|
||||||
struct i2o_controller *iop; /* pointer to the I2O controller */
|
struct i2o_controller *iop; /* pointer to the I2O controller */
|
||||||
unsigned int lun; /* lun's used for block devices */
|
u64 lun; /* lun's used for block devices */
|
||||||
struct i2o_device *channel[0]; /* channel->i2o_dev mapping table */
|
struct i2o_device *channel[0]; /* channel->i2o_dev mapping table */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -287,9 +287,8 @@ static int i2o_scsi_probe(struct device *dev)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (le64_to_cpu(lun) >= scsi_host->max_lun) {
|
if (le64_to_cpu(lun) >= scsi_host->max_lun) {
|
||||||
osm_warn("SCSI device lun (%lu) >= max_lun of I2O host (%d)",
|
osm_warn("SCSI device lun (%llu) >= max_lun of I2O host (%d)",
|
||||||
(long unsigned int)le64_to_cpu(lun),
|
le64_to_cpu(lun), scsi_host->max_lun);
|
||||||
scsi_host->max_lun);
|
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -308,9 +307,9 @@ static int i2o_scsi_probe(struct device *dev)
|
||||||
if (rc)
|
if (rc)
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
osm_info("device added (TID: %03x) channel: %d, id: %d, lun: %ld\n",
|
osm_info("device added (TID: %03x) channel: %d, id: %d, lun: %llu\n",
|
||||||
i2o_dev->lct_data.tid, channel, le32_to_cpu(id),
|
i2o_dev->lct_data.tid, channel, le32_to_cpu(id),
|
||||||
(long unsigned int)le64_to_cpu(lun));
|
le64_to_cpu(lun));
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|
|
@ -418,7 +418,8 @@ void zfcp_dbf_scsi(char *tag, struct scsi_cmnd *sc, struct zfcp_fsf_req *fsf)
|
||||||
rec->scsi_retries = sc->retries;
|
rec->scsi_retries = sc->retries;
|
||||||
rec->scsi_allowed = sc->allowed;
|
rec->scsi_allowed = sc->allowed;
|
||||||
rec->scsi_id = sc->device->id;
|
rec->scsi_id = sc->device->id;
|
||||||
rec->scsi_lun = sc->device->lun;
|
/* struct zfcp_dbf_scsi needs to be updated to handle 64bit LUNs */
|
||||||
|
rec->scsi_lun = (u32)sc->device->lun;
|
||||||
rec->host_scribble = (unsigned long)sc->host_scribble;
|
rec->host_scribble = (unsigned long)sc->host_scribble;
|
||||||
|
|
||||||
memcpy(rec->scsi_opcode, sc->cmnd,
|
memcpy(rec->scsi_opcode, sc->cmnd,
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
void zfcp_unit_scsi_scan(struct zfcp_unit *unit)
|
void zfcp_unit_scsi_scan(struct zfcp_unit *unit)
|
||||||
{
|
{
|
||||||
struct fc_rport *rport = unit->port->rport;
|
struct fc_rport *rport = unit->port->rport;
|
||||||
unsigned int lun;
|
u64 lun;
|
||||||
|
|
||||||
lun = scsilun_to_int((struct scsi_lun *) &unit->fcp_lun);
|
lun = scsilun_to_int((struct scsi_lun *) &unit->fcp_lun);
|
||||||
|
|
||||||
|
@ -188,7 +188,7 @@ struct scsi_device *zfcp_unit_sdev(struct zfcp_unit *unit)
|
||||||
{
|
{
|
||||||
struct Scsi_Host *shost;
|
struct Scsi_Host *shost;
|
||||||
struct zfcp_port *port;
|
struct zfcp_port *port;
|
||||||
unsigned int lun;
|
u64 lun;
|
||||||
|
|
||||||
lun = scsilun_to_int((struct scsi_lun *) &unit->fcp_lun);
|
lun = scsilun_to_int((struct scsi_lun *) &unit->fcp_lun);
|
||||||
port = unit->port;
|
port = unit->port;
|
||||||
|
|
|
@ -1005,7 +1005,7 @@ process_script_interrupt(__u32 dsps, __u32 dsp, struct scsi_cmnd *SCp,
|
||||||
DMA_TO_DEVICE);
|
DMA_TO_DEVICE);
|
||||||
|
|
||||||
cmnd[0] = REQUEST_SENSE;
|
cmnd[0] = REQUEST_SENSE;
|
||||||
cmnd[1] = (SCp->device->lun & 0x7) << 5;
|
cmnd[1] = (lun & 0x7) << 5;
|
||||||
cmnd[2] = 0;
|
cmnd[2] = 0;
|
||||||
cmnd[3] = 0;
|
cmnd[3] = 0;
|
||||||
cmnd[4] = SCSI_SENSE_BUFFERSIZE;
|
cmnd[4] = SCSI_SENSE_BUFFERSIZE;
|
||||||
|
@ -1396,6 +1396,7 @@ NCR_700_start_command(struct scsi_cmnd *SCp)
|
||||||
struct NCR_700_Host_Parameters *hostdata =
|
struct NCR_700_Host_Parameters *hostdata =
|
||||||
(struct NCR_700_Host_Parameters *)SCp->device->host->hostdata[0];
|
(struct NCR_700_Host_Parameters *)SCp->device->host->hostdata[0];
|
||||||
__u16 count = 1; /* for IDENTIFY message */
|
__u16 count = 1; /* for IDENTIFY message */
|
||||||
|
u8 lun = SCp->device->lun;
|
||||||
|
|
||||||
if(hostdata->state != NCR_700_HOST_FREE) {
|
if(hostdata->state != NCR_700_HOST_FREE) {
|
||||||
/* keep this inside the lock to close the race window where
|
/* keep this inside the lock to close the race window where
|
||||||
|
@ -1415,7 +1416,7 @@ NCR_700_start_command(struct scsi_cmnd *SCp)
|
||||||
|
|
||||||
hostdata->msgout[0] = NCR_700_identify((SCp->cmnd[0] != REQUEST_SENSE &&
|
hostdata->msgout[0] = NCR_700_identify((SCp->cmnd[0] != REQUEST_SENSE &&
|
||||||
slot->flags != NCR_700_FLAG_AUTOSENSE),
|
slot->flags != NCR_700_FLAG_AUTOSENSE),
|
||||||
SCp->device->lun);
|
lun);
|
||||||
/* for INQUIRY or REQUEST_SENSE commands, we cannot be sure
|
/* for INQUIRY or REQUEST_SENSE commands, we cannot be sure
|
||||||
* if the negotiated transfer parameters still hold, so
|
* if the negotiated transfer parameters still hold, so
|
||||||
* always renegotiate them */
|
* always renegotiate them */
|
||||||
|
|
|
@ -762,7 +762,7 @@ static int __maybe_unused NCR5380_show_info(struct seq_file *m,
|
||||||
|
|
||||||
static void lprint_Scsi_Cmnd(Scsi_Cmnd * cmd, struct seq_file *m)
|
static void lprint_Scsi_Cmnd(Scsi_Cmnd * cmd, struct seq_file *m)
|
||||||
{
|
{
|
||||||
SPRINTF("scsi%d : destination target %d, lun %d\n", cmd->device->host->host_no, cmd->device->id, cmd->device->lun);
|
SPRINTF("scsi%d : destination target %d, lun %llu\n", cmd->device->host->host_no, cmd->device->id, cmd->device->lun);
|
||||||
SPRINTF(" command = ");
|
SPRINTF(" command = ");
|
||||||
lprint_command(cmd->cmnd, m);
|
lprint_command(cmd->cmnd, m);
|
||||||
}
|
}
|
||||||
|
@ -1039,9 +1039,10 @@ static void NCR5380_main(struct work_struct *work)
|
||||||
for (tmp = (Scsi_Cmnd *) hostdata->issue_queue, prev = NULL; tmp; prev = tmp, tmp = (Scsi_Cmnd *) tmp->host_scribble)
|
for (tmp = (Scsi_Cmnd *) hostdata->issue_queue, prev = NULL; tmp; prev = tmp, tmp = (Scsi_Cmnd *) tmp->host_scribble)
|
||||||
{
|
{
|
||||||
if (prev != tmp)
|
if (prev != tmp)
|
||||||
dprintk(NDEBUG_LISTS, "MAIN tmp=%p target=%d busy=%d lun=%d\n", tmp, tmp->device->id, hostdata->busy[tmp->device->id], tmp->device->lun);
|
dprintk(NDEBUG_LISTS, "MAIN tmp=%p target=%d busy=%d lun=%llu\n", tmp, tmp->device->id, hostdata->busy[tmp->device->id], tmp->device->lun);
|
||||||
/* When we find one, remove it from the issue queue. */
|
/* When we find one, remove it from the issue queue. */
|
||||||
if (!(hostdata->busy[tmp->device->id] & (1 << tmp->device->lun))) {
|
if (!(hostdata->busy[tmp->device->id] &
|
||||||
|
(1 << (u8)(tmp->device->lun & 0xff)))) {
|
||||||
if (prev) {
|
if (prev) {
|
||||||
REMOVE(prev, prev->host_scribble, tmp, tmp->host_scribble);
|
REMOVE(prev, prev->host_scribble, tmp, tmp->host_scribble);
|
||||||
prev->host_scribble = tmp->host_scribble;
|
prev->host_scribble = tmp->host_scribble;
|
||||||
|
@ -1057,7 +1058,7 @@ static void NCR5380_main(struct work_struct *work)
|
||||||
* On failure, we must add the command back to the
|
* On failure, we must add the command back to the
|
||||||
* issue queue so we can keep trying.
|
* issue queue so we can keep trying.
|
||||||
*/
|
*/
|
||||||
dprintk(NDEBUG_MAIN|NDEBUG_QUEUES, "scsi%d : main() : command for target %d lun %d removed from issue_queue\n", instance->host_no, tmp->device->id, tmp->device->lun);
|
dprintk(NDEBUG_MAIN|NDEBUG_QUEUES, "scsi%d : main() : command for target %d lun %llu removed from issue_queue\n", instance->host_no, tmp->device->id, tmp->device->lun);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A successful selection is defined as one that
|
* A successful selection is defined as one that
|
||||||
|
@ -1524,7 +1525,7 @@ static int NCR5380_select(struct Scsi_Host *instance, Scsi_Cmnd * cmd, int tag)
|
||||||
dprintk(NDEBUG_SELECTION, "scsi%d : nexus established.\n", instance->host_no);
|
dprintk(NDEBUG_SELECTION, "scsi%d : nexus established.\n", instance->host_no);
|
||||||
/* XXX need to handle errors here */
|
/* XXX need to handle errors here */
|
||||||
hostdata->connected = cmd;
|
hostdata->connected = cmd;
|
||||||
hostdata->busy[cmd->device->id] |= (1 << cmd->device->lun);
|
hostdata->busy[cmd->device->id] |= (1 << (cmd->device->lun & 0xFF));
|
||||||
|
|
||||||
initialize_SCp(cmd);
|
initialize_SCp(cmd);
|
||||||
|
|
||||||
|
@ -2210,14 +2211,14 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
|
||||||
case LINKED_FLG_CMD_COMPLETE:
|
case LINKED_FLG_CMD_COMPLETE:
|
||||||
/* Accept message by clearing ACK */
|
/* Accept message by clearing ACK */
|
||||||
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
|
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
|
||||||
dprintk(NDEBUG_LINKED, "scsi%d : target %d lun %d linked command complete.\n", instance->host_no, cmd->device->id, cmd->device->lun);
|
dprintk(NDEBUG_LINKED, "scsi%d : target %d lun %llu linked command complete.\n", instance->host_no, cmd->device->id, cmd->device->lun);
|
||||||
/*
|
/*
|
||||||
* Sanity check : A linked command should only terminate with
|
* Sanity check : A linked command should only terminate with
|
||||||
* one of these messages if there are more linked commands
|
* one of these messages if there are more linked commands
|
||||||
* available.
|
* available.
|
||||||
*/
|
*/
|
||||||
if (!cmd->next_link) {
|
if (!cmd->next_link) {
|
||||||
printk("scsi%d : target %d lun %d linked command complete, no next_link\n" instance->host_no, cmd->device->id, cmd->device->lun);
|
printk("scsi%d : target %d lun %llu linked command complete, no next_link\n" instance->host_no, cmd->device->id, cmd->device->lun);
|
||||||
sink = 1;
|
sink = 1;
|
||||||
do_abort(instance);
|
do_abort(instance);
|
||||||
return;
|
return;
|
||||||
|
@ -2226,7 +2227,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
|
||||||
/* The next command is still part of this process */
|
/* The next command is still part of this process */
|
||||||
cmd->next_link->tag = cmd->tag;
|
cmd->next_link->tag = cmd->tag;
|
||||||
cmd->result = cmd->SCp.Status | (cmd->SCp.Message << 8);
|
cmd->result = cmd->SCp.Status | (cmd->SCp.Message << 8);
|
||||||
dprintk(NDEBUG_LINKED, "scsi%d : target %d lun %d linked request done, calling scsi_done().\n", instance->host_no, cmd->device->id, cmd->device->lun);
|
dprintk(NDEBUG_LINKED, "scsi%d : target %d lun %llu linked request done, calling scsi_done().\n", instance->host_no, cmd->device->id, cmd->device->lun);
|
||||||
collect_stats(hostdata, cmd);
|
collect_stats(hostdata, cmd);
|
||||||
cmd->scsi_done(cmd);
|
cmd->scsi_done(cmd);
|
||||||
cmd = hostdata->connected;
|
cmd = hostdata->connected;
|
||||||
|
@ -2238,8 +2239,8 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
|
||||||
sink = 1;
|
sink = 1;
|
||||||
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
|
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
|
||||||
hostdata->connected = NULL;
|
hostdata->connected = NULL;
|
||||||
dprintk(NDEBUG_QUEUES, "scsi%d : command for target %d, lun %d completed\n", instance->host_no, cmd->device->id, cmd->device->lun);
|
dprintk(NDEBUG_QUEUES, "scsi%d : command for target %d, lun %llu completed\n", instance->host_no, cmd->device->id, cmd->device->lun);
|
||||||
hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun);
|
hostdata->busy[cmd->device->id] &= ~(1 << (cmd->device->lun & 0xFF));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* I'm not sure what the correct thing to do here is :
|
* I'm not sure what the correct thing to do here is :
|
||||||
|
@ -2304,7 +2305,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
|
||||||
case ORDERED_QUEUE_TAG:
|
case ORDERED_QUEUE_TAG:
|
||||||
case SIMPLE_QUEUE_TAG:
|
case SIMPLE_QUEUE_TAG:
|
||||||
cmd->device->simple_tags = 0;
|
cmd->device->simple_tags = 0;
|
||||||
hostdata->busy[cmd->device->id] |= (1 << cmd->device->lun);
|
hostdata->busy[cmd->device->id] |= (1 << (cmd->device->lun & 0xFF));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
@ -2318,7 +2319,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
|
||||||
hostdata->disconnected_queue;
|
hostdata->disconnected_queue;
|
||||||
hostdata->connected = NULL;
|
hostdata->connected = NULL;
|
||||||
hostdata->disconnected_queue = cmd;
|
hostdata->disconnected_queue = cmd;
|
||||||
dprintk(NDEBUG_QUEUES, "scsi%d : command for target %d lun %d was moved from connected to" " the disconnected_queue\n", instance->host_no, cmd->device->id, cmd->device->lun);
|
dprintk(NDEBUG_QUEUES, "scsi%d : command for target %d lun %llu was moved from connected to" " the disconnected_queue\n", instance->host_no, cmd->device->id, cmd->device->lun);
|
||||||
/*
|
/*
|
||||||
* Restore phase bits to 0 so an interrupted selection,
|
* Restore phase bits to 0 so an interrupted selection,
|
||||||
* arbitration can resume.
|
* arbitration can resume.
|
||||||
|
@ -2426,7 +2427,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
|
||||||
hostdata->last_message = msgout;
|
hostdata->last_message = msgout;
|
||||||
NCR5380_transfer_pio(instance, &phase, &len, &data);
|
NCR5380_transfer_pio(instance, &phase, &len, &data);
|
||||||
if (msgout == ABORT) {
|
if (msgout == ABORT) {
|
||||||
hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun);
|
hostdata->busy[cmd->device->id] &= ~(1 << (cmd->device->lun & 0xFF));
|
||||||
hostdata->connected = NULL;
|
hostdata->connected = NULL;
|
||||||
cmd->result = DID_ERROR << 16;
|
cmd->result = DID_ERROR << 16;
|
||||||
collect_stats(hostdata, cmd);
|
collect_stats(hostdata, cmd);
|
||||||
|
@ -2562,7 +2563,7 @@ static void NCR5380_reselect(struct Scsi_Host *instance) {
|
||||||
|
|
||||||
|
|
||||||
for (tmp = (Scsi_Cmnd *) hostdata->disconnected_queue, prev = NULL; tmp; prev = tmp, tmp = (Scsi_Cmnd *) tmp->host_scribble)
|
for (tmp = (Scsi_Cmnd *) hostdata->disconnected_queue, prev = NULL; tmp; prev = tmp, tmp = (Scsi_Cmnd *) tmp->host_scribble)
|
||||||
if ((target_mask == (1 << tmp->device->id)) && (lun == tmp->device->lun)
|
if ((target_mask == (1 << tmp->device->id)) && (lun == (u8)tmp->device->lun)
|
||||||
) {
|
) {
|
||||||
if (prev) {
|
if (prev) {
|
||||||
REMOVE(prev, prev->host_scribble, tmp, tmp->host_scribble);
|
REMOVE(prev, prev->host_scribble, tmp, tmp->host_scribble);
|
||||||
|
@ -2588,7 +2589,7 @@ static void NCR5380_reselect(struct Scsi_Host *instance) {
|
||||||
do_abort(instance);
|
do_abort(instance);
|
||||||
} else {
|
} else {
|
||||||
hostdata->connected = tmp;
|
hostdata->connected = tmp;
|
||||||
dprintk(NDEBUG_RESELECTION, "scsi%d : nexus established, target = %d, lun = %d, tag = %d\n", instance->host_no, tmp->device->id, tmp->device->lun, tmp->tag);
|
dprintk(NDEBUG_RESELECTION, "scsi%d : nexus established, target = %d, lun = %llu, tag = %d\n", instance->host_no, tmp->device->id, tmp->device->lun, tmp->tag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -698,7 +698,7 @@ static int NCR53c406a_queue_lck(Scsi_Cmnd * SCpnt, void (*done) (Scsi_Cmnd *))
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
VDEB(printk("NCR53c406a_queue called\n"));
|
VDEB(printk("NCR53c406a_queue called\n"));
|
||||||
DEB(printk("cmd=%02x, cmd_len=%02x, target=%02x, lun=%02x, bufflen=%d\n", SCpnt->cmnd[0], SCpnt->cmd_len, SCpnt->target, SCpnt->lun, scsi_bufflen(SCpnt)));
|
DEB(printk("cmd=%02x, cmd_len=%02x, target=%02x, lun=%02x, bufflen=%d\n", SCpnt->cmnd[0], SCpnt->cmd_len, SCpnt->device->target, (u8)SCpnt->device->lun, scsi_bufflen(SCpnt)));
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
VDEB(for (i = 0; i < SCpnt->cmd_len; i++)
|
VDEB(for (i = 0; i < SCpnt->cmd_len; i++)
|
||||||
|
|
|
@ -891,7 +891,7 @@ static int inia100_build_scb(struct orc_host * host, struct orc_scb * scb, struc
|
||||||
printk("max cdb length= %x\b", cmd->cmd_len);
|
printk("max cdb length= %x\b", cmd->cmd_len);
|
||||||
scb->cdb_len = IMAX_CDB;
|
scb->cdb_len = IMAX_CDB;
|
||||||
}
|
}
|
||||||
scb->ident = cmd->device->lun | DISC_ALLOW;
|
scb->ident = (u8)(cmd->device->lun & 0xff) | DISC_ALLOW;
|
||||||
if (cmd->device->tagged_supported) { /* Tag Support */
|
if (cmd->device->tagged_supported) { /* Tag Support */
|
||||||
scb->tag_msg = SIMPLE_QUEUE_TAG; /* Do simple tag only */
|
scb->tag_msg = SIMPLE_QUEUE_TAG; /* Do simple tag only */
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -551,7 +551,7 @@ static int aac_eh_abort(struct scsi_cmnd* cmd)
|
||||||
int count;
|
int count;
|
||||||
int ret = FAILED;
|
int ret = FAILED;
|
||||||
|
|
||||||
printk(KERN_ERR "%s: Host adapter abort request (%d,%d,%d,%d)\n",
|
printk(KERN_ERR "%s: Host adapter abort request (%d,%d,%d,%llu)\n",
|
||||||
AAC_DRIVERNAME,
|
AAC_DRIVERNAME,
|
||||||
host->host_no, sdev_channel(dev), sdev_id(dev), dev->lun);
|
host->host_no, sdev_channel(dev), sdev_id(dev), dev->lun);
|
||||||
switch (cmd->cmnd[0]) {
|
switch (cmd->cmnd[0]) {
|
||||||
|
|
|
@ -321,7 +321,7 @@ static LIST_HEAD(aha152x_host_list);
|
||||||
#define CMDINFO(cmd) \
|
#define CMDINFO(cmd) \
|
||||||
(cmd) ? ((cmd)->device->host->host_no) : -1, \
|
(cmd) ? ((cmd)->device->host->host_no) : -1, \
|
||||||
(cmd) ? ((cmd)->device->id & 0x0f) : -1, \
|
(cmd) ? ((cmd)->device->id & 0x0f) : -1, \
|
||||||
(cmd) ? ((cmd)->device->lun & 0x07) : -1
|
(cmd) ? ((u8)(cmd)->device->lun & 0x07) : -1
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
CMD_INC_RESID(struct scsi_cmnd *cmd, int inc)
|
CMD_INC_RESID(struct scsi_cmnd *cmd, int inc)
|
||||||
|
@ -1602,7 +1602,7 @@ static void busfree_run(struct Scsi_Host *shpnt)
|
||||||
#if defined(AHA152X_DEBUG)
|
#if defined(AHA152X_DEBUG)
|
||||||
int hostno=DONE_SC->device->host->host_no;
|
int hostno=DONE_SC->device->host->host_no;
|
||||||
int id=DONE_SC->device->id & 0xf;
|
int id=DONE_SC->device->id & 0xf;
|
||||||
int lun=DONE_SC->device->lun & 0x7;
|
int lun=((u8)DONE_SC->device->lun) & 0x7;
|
||||||
#endif
|
#endif
|
||||||
Scsi_Cmnd *ptr = DONE_SC;
|
Scsi_Cmnd *ptr = DONE_SC;
|
||||||
DONE_SC=NULL;
|
DONE_SC=NULL;
|
||||||
|
@ -2984,7 +2984,7 @@ static void get_command(struct seq_file *m, Scsi_Cmnd * ptr)
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
SPRINTF("%p: target=%d; lun=%d; cmnd=( ",
|
SPRINTF("%p: target=%d; lun=%d; cmnd=( ",
|
||||||
ptr, ptr->device->id, ptr->device->lun);
|
ptr, ptr->device->id, (u8)ptr->device->lun);
|
||||||
|
|
||||||
for (i = 0; i < COMMAND_SIZE(ptr->cmnd[0]); i++)
|
for (i = 0; i < COMMAND_SIZE(ptr->cmnd[0]); i++)
|
||||||
SPRINTF("0x%02x ", ptr->cmnd[i]);
|
SPRINTF("0x%02x ", ptr->cmnd[i]);
|
||||||
|
|
|
@ -115,7 +115,7 @@ struct scb_platform_data;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define AHD_BUILD_COL_IDX(target, lun) \
|
#define AHD_BUILD_COL_IDX(target, lun) \
|
||||||
(((lun) << 4) | target)
|
((((u8)lun) << 4) | target)
|
||||||
|
|
||||||
#define AHD_GET_SCB_COL_IDX(ahd, scb) \
|
#define AHD_GET_SCB_COL_IDX(ahd, scb) \
|
||||||
((SCB_GET_LUN(scb) << 4) | SCB_GET_TARGET(ahd, scb))
|
((SCB_GET_LUN(scb) << 4) | SCB_GET_TARGET(ahd, scb))
|
||||||
|
|
|
@ -2137,7 +2137,7 @@ ahd_linux_queue_cmd_complete(struct ahd_softc *ahd, struct scsi_cmnd *cmd)
|
||||||
if (do_fallback) {
|
if (do_fallback) {
|
||||||
printk("%s: device overrun (status %x) on %d:%d:%d\n",
|
printk("%s: device overrun (status %x) on %d:%d:%d\n",
|
||||||
ahd_name(ahd), status, cmd->device->channel,
|
ahd_name(ahd), status, cmd->device->channel,
|
||||||
cmd->device->id, cmd->device->lun);
|
cmd->device->id, (u8)cmd->device->lun);
|
||||||
}
|
}
|
||||||
|
|
||||||
ahd_cmd_set_transaction_status(cmd, new_status);
|
ahd_cmd_set_transaction_status(cmd, new_status);
|
||||||
|
@ -2259,7 +2259,7 @@ ahd_linux_queue_abort_cmd(struct scsi_cmnd *cmd)
|
||||||
SEARCH_COMPLETE) > 0) {
|
SEARCH_COMPLETE) > 0) {
|
||||||
printk("%s:%d:%d:%d: Cmd aborted from QINFIFO\n",
|
printk("%s:%d:%d:%d: Cmd aborted from QINFIFO\n",
|
||||||
ahd_name(ahd), cmd->device->channel,
|
ahd_name(ahd), cmd->device->channel,
|
||||||
cmd->device->id, cmd->device->lun);
|
cmd->device->id, (u8)cmd->device->lun);
|
||||||
retval = SUCCESS;
|
retval = SUCCESS;
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
|
@ -197,7 +197,7 @@ ahd_dump_device_state(struct seq_file *m, struct scsi_device *sdev)
|
||||||
|
|
||||||
seq_printf(m, "\tChannel %c Target %d Lun %d Settings\n",
|
seq_printf(m, "\tChannel %c Target %d Lun %d Settings\n",
|
||||||
sdev->sdev_target->channel + 'A',
|
sdev->sdev_target->channel + 'A',
|
||||||
sdev->sdev_target->id, sdev->lun);
|
sdev->sdev_target->id, (u8)sdev->lun);
|
||||||
|
|
||||||
seq_printf(m, "\t\tCommands Queued %ld\n", dev->commands_issued);
|
seq_printf(m, "\t\tCommands Queued %ld\n", dev->commands_issued);
|
||||||
seq_printf(m, "\t\tCommands Active %d\n", dev->active);
|
seq_printf(m, "\t\tCommands Active %d\n", dev->active);
|
||||||
|
|
|
@ -2110,7 +2110,7 @@ ahc_linux_queue_recovery_cmd(struct scsi_cmnd *cmd, scb_flag flag)
|
||||||
*/
|
*/
|
||||||
printk("%s:%d:%d:%d: Is not an active device\n",
|
printk("%s:%d:%d:%d: Is not an active device\n",
|
||||||
ahc_name(ahc), cmd->device->channel, cmd->device->id,
|
ahc_name(ahc), cmd->device->channel, cmd->device->id,
|
||||||
cmd->device->lun);
|
(u8)cmd->device->lun);
|
||||||
retval = SUCCESS;
|
retval = SUCCESS;
|
||||||
goto no_cmd;
|
goto no_cmd;
|
||||||
}
|
}
|
||||||
|
@ -2118,11 +2118,11 @@ ahc_linux_queue_recovery_cmd(struct scsi_cmnd *cmd, scb_flag flag)
|
||||||
if ((dev->flags & (AHC_DEV_Q_BASIC|AHC_DEV_Q_TAGGED)) == 0
|
if ((dev->flags & (AHC_DEV_Q_BASIC|AHC_DEV_Q_TAGGED)) == 0
|
||||||
&& ahc_search_untagged_queues(ahc, cmd, cmd->device->id,
|
&& ahc_search_untagged_queues(ahc, cmd, cmd->device->id,
|
||||||
cmd->device->channel + 'A',
|
cmd->device->channel + 'A',
|
||||||
cmd->device->lun,
|
(u8)cmd->device->lun,
|
||||||
CAM_REQ_ABORTED, SEARCH_COMPLETE) != 0) {
|
CAM_REQ_ABORTED, SEARCH_COMPLETE) != 0) {
|
||||||
printk("%s:%d:%d:%d: Command found on untagged queue\n",
|
printk("%s:%d:%d:%d: Command found on untagged queue\n",
|
||||||
ahc_name(ahc), cmd->device->channel, cmd->device->id,
|
ahc_name(ahc), cmd->device->channel, cmd->device->id,
|
||||||
cmd->device->lun);
|
(u8)cmd->device->lun);
|
||||||
retval = SUCCESS;
|
retval = SUCCESS;
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
@ -2188,13 +2188,14 @@ ahc_linux_queue_recovery_cmd(struct scsi_cmnd *cmd, scb_flag flag)
|
||||||
SEARCH_COMPLETE) > 0) {
|
SEARCH_COMPLETE) > 0) {
|
||||||
printk("%s:%d:%d:%d: Cmd aborted from QINFIFO\n",
|
printk("%s:%d:%d:%d: Cmd aborted from QINFIFO\n",
|
||||||
ahc_name(ahc), cmd->device->channel,
|
ahc_name(ahc), cmd->device->channel,
|
||||||
cmd->device->id, cmd->device->lun);
|
cmd->device->id, (u8)cmd->device->lun);
|
||||||
retval = SUCCESS;
|
retval = SUCCESS;
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
} else if (ahc_search_qinfifo(ahc, cmd->device->id,
|
} else if (ahc_search_qinfifo(ahc, cmd->device->id,
|
||||||
cmd->device->channel + 'A',
|
cmd->device->channel + 'A',
|
||||||
cmd->device->lun, pending_scb->hscb->tag,
|
cmd->device->lun,
|
||||||
|
pending_scb->hscb->tag,
|
||||||
ROLE_INITIATOR, /*status*/0,
|
ROLE_INITIATOR, /*status*/0,
|
||||||
SEARCH_COUNT) > 0) {
|
SEARCH_COUNT) > 0) {
|
||||||
disconnected = FALSE;
|
disconnected = FALSE;
|
||||||
|
|
|
@ -175,7 +175,7 @@ ahc_dump_device_state(struct seq_file *m, struct scsi_device *sdev)
|
||||||
|
|
||||||
seq_printf(m, "\tChannel %c Target %d Lun %d Settings\n",
|
seq_printf(m, "\tChannel %c Target %d Lun %d Settings\n",
|
||||||
sdev->sdev_target->channel + 'A',
|
sdev->sdev_target->channel + 'A',
|
||||||
sdev->sdev_target->id, sdev->lun);
|
sdev->sdev_target->id, (u8)sdev->lun);
|
||||||
|
|
||||||
seq_printf(m, "\t\tCommands Queued %ld\n", dev->commands_issued);
|
seq_printf(m, "\t\tCommands Queued %ld\n", dev->commands_issued);
|
||||||
seq_printf(m, "\t\tCommands Active %d\n", dev->active);
|
seq_printf(m, "\t\tCommands Active %d\n", dev->active);
|
||||||
|
|
|
@ -2335,7 +2335,7 @@ static int arcmsr_polling_hba_ccbdone(struct AdapterControlBlock *acb,
|
||||||
" poll command abort successfully \n"
|
" poll command abort successfully \n"
|
||||||
, acb->host->host_no
|
, acb->host->host_no
|
||||||
, ccb->pcmd->device->id
|
, ccb->pcmd->device->id
|
||||||
, ccb->pcmd->device->lun
|
, (u32)ccb->pcmd->device->lun
|
||||||
, ccb);
|
, ccb);
|
||||||
ccb->pcmd->result = DID_ABORT << 16;
|
ccb->pcmd->result = DID_ABORT << 16;
|
||||||
arcmsr_ccb_complete(ccb);
|
arcmsr_ccb_complete(ccb);
|
||||||
|
@ -2399,7 +2399,7 @@ static int arcmsr_polling_hbb_ccbdone(struct AdapterControlBlock *acb,
|
||||||
" poll command abort successfully \n"
|
" poll command abort successfully \n"
|
||||||
,acb->host->host_no
|
,acb->host->host_no
|
||||||
,ccb->pcmd->device->id
|
,ccb->pcmd->device->id
|
||||||
,ccb->pcmd->device->lun
|
,(u32)ccb->pcmd->device->lun
|
||||||
,ccb);
|
,ccb);
|
||||||
ccb->pcmd->result = DID_ABORT << 16;
|
ccb->pcmd->result = DID_ABORT << 16;
|
||||||
arcmsr_ccb_complete(ccb);
|
arcmsr_ccb_complete(ccb);
|
||||||
|
@ -2456,7 +2456,7 @@ static int arcmsr_polling_hbc_ccbdone(struct AdapterControlBlock *acb, struct Co
|
||||||
" poll command abort successfully \n"
|
" poll command abort successfully \n"
|
||||||
, acb->host->host_no
|
, acb->host->host_no
|
||||||
, pCCB->pcmd->device->id
|
, pCCB->pcmd->device->id
|
||||||
, pCCB->pcmd->device->lun
|
, (u32)pCCB->pcmd->device->lun
|
||||||
, pCCB);
|
, pCCB);
|
||||||
pCCB->pcmd->result = DID_ABORT << 16;
|
pCCB->pcmd->result = DID_ABORT << 16;
|
||||||
arcmsr_ccb_complete(pCCB);
|
arcmsr_ccb_complete(pCCB);
|
||||||
|
@ -3058,7 +3058,7 @@ static int arcmsr_abort(struct scsi_cmnd *cmd)
|
||||||
int rtn = FAILED;
|
int rtn = FAILED;
|
||||||
printk(KERN_NOTICE
|
printk(KERN_NOTICE
|
||||||
"arcmsr%d: abort device command of scsi id = %d lun = %d \n",
|
"arcmsr%d: abort device command of scsi id = %d lun = %d \n",
|
||||||
acb->host->host_no, cmd->device->id, cmd->device->lun);
|
acb->host->host_no, cmd->device->id, (u32)cmd->device->lun);
|
||||||
acb->acb_flags |= ACB_F_ABORT;
|
acb->acb_flags |= ACB_F_ABORT;
|
||||||
acb->num_aborts++;
|
acb->num_aborts++;
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -760,7 +760,8 @@ intr_ret_t acornscsi_kick(AS_Host *host)
|
||||||
SCpnt->tag = SCpnt->device->current_tag;
|
SCpnt->tag = SCpnt->device->current_tag;
|
||||||
} else
|
} else
|
||||||
#endif
|
#endif
|
||||||
set_bit(SCpnt->device->id * 8 + SCpnt->device->lun, host->busyluns);
|
set_bit(SCpnt->device->id * 8 +
|
||||||
|
(u8)(SCpnt->device->lun & 0x07), host->busyluns);
|
||||||
|
|
||||||
host->stats.removes += 1;
|
host->stats.removes += 1;
|
||||||
|
|
||||||
|
@ -863,7 +864,8 @@ static void acornscsi_done(AS_Host *host, struct scsi_cmnd **SCpntp,
|
||||||
if (!SCpnt->scsi_done)
|
if (!SCpnt->scsi_done)
|
||||||
panic("scsi%d.H: null scsi_done function in acornscsi_done", host->host->host_no);
|
panic("scsi%d.H: null scsi_done function in acornscsi_done", host->host->host_no);
|
||||||
|
|
||||||
clear_bit(SCpnt->device->id * 8 + SCpnt->device->lun, host->busyluns);
|
clear_bit(SCpnt->device->id * 8 +
|
||||||
|
(u8)(SCpnt->device->lun & 0x7), host->busyluns);
|
||||||
|
|
||||||
SCpnt->scsi_done(SCpnt);
|
SCpnt->scsi_done(SCpnt);
|
||||||
} else
|
} else
|
||||||
|
@ -1576,7 +1578,8 @@ void acornscsi_message(AS_Host *host)
|
||||||
printk(KERN_NOTICE "scsi%d.%c: disabling tagged queueing\n",
|
printk(KERN_NOTICE "scsi%d.%c: disabling tagged queueing\n",
|
||||||
host->host->host_no, acornscsi_target(host));
|
host->host->host_no, acornscsi_target(host));
|
||||||
host->SCpnt->device->simple_tags = 0;
|
host->SCpnt->device->simple_tags = 0;
|
||||||
set_bit(host->SCpnt->device->id * 8 + host->SCpnt->device->lun, host->busyluns);
|
set_bit(host->SCpnt->device->id * 8 +
|
||||||
|
(u8)(host->SCpnt->device->lun & 0x7), host->busyluns);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
case EXTENDED_MESSAGE | (EXTENDED_SDTR << 8):
|
case EXTENDED_MESSAGE | (EXTENDED_SDTR << 8):
|
||||||
|
@ -2671,7 +2674,8 @@ int acornscsi_abort(struct scsi_cmnd *SCpnt)
|
||||||
//#if (DEBUG & DEBUG_ABORT)
|
//#if (DEBUG & DEBUG_ABORT)
|
||||||
printk("clear ");
|
printk("clear ");
|
||||||
//#endif
|
//#endif
|
||||||
clear_bit(SCpnt->device->id * 8 + SCpnt->device->lun, host->busyluns);
|
clear_bit(SCpnt->device->id * 8 +
|
||||||
|
(u8)(SCpnt->device->lun & 0x7), host->busyluns);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We found the command, and cleared it out. Either
|
* We found the command, and cleared it out. Either
|
||||||
|
@ -2853,7 +2857,7 @@ static int acornscsi_show_info(struct seq_file *m, struct Scsi_Host *instance)
|
||||||
|
|
||||||
shost_for_each_device(scd, instance) {
|
shost_for_each_device(scd, instance) {
|
||||||
seq_printf(m, "Device/Lun TaggedQ Sync\n");
|
seq_printf(m, "Device/Lun TaggedQ Sync\n");
|
||||||
seq_printf(m, " %d/%d ", scd->id, scd->lun);
|
seq_printf(m, " %d/%llu ", scd->id, scd->lun);
|
||||||
if (scd->tagged_supported)
|
if (scd->tagged_supported)
|
||||||
seq_printf(m, "%3sabled(%3d) ",
|
seq_printf(m, "%3sabled(%3d) ",
|
||||||
scd->simple_tags ? "en" : "dis",
|
scd->simple_tags ? "en" : "dis",
|
||||||
|
|
|
@ -1821,7 +1821,8 @@ static void fas216_allocate_tag(FAS216_Info *info, struct scsi_cmnd *SCpnt)
|
||||||
SCpnt->tag = SCpnt->device->current_tag;
|
SCpnt->tag = SCpnt->device->current_tag;
|
||||||
} else
|
} else
|
||||||
#endif
|
#endif
|
||||||
set_bit(SCpnt->device->id * 8 + SCpnt->device->lun, info->busyluns);
|
set_bit(SCpnt->device->id * 8 +
|
||||||
|
(u8)(SCpnt->device->lun & 0x7), info->busyluns);
|
||||||
|
|
||||||
info->stats.removes += 1;
|
info->stats.removes += 1;
|
||||||
switch (SCpnt->cmnd[0]) {
|
switch (SCpnt->cmnd[0]) {
|
||||||
|
@ -2171,7 +2172,8 @@ static void fas216_done(FAS216_Info *info, unsigned int result)
|
||||||
* status.
|
* status.
|
||||||
*/
|
*/
|
||||||
info->device[SCpnt->device->id].parity_check = 0;
|
info->device[SCpnt->device->id].parity_check = 0;
|
||||||
clear_bit(SCpnt->device->id * 8 + SCpnt->device->lun, info->busyluns);
|
clear_bit(SCpnt->device->id * 8 +
|
||||||
|
(u8)(SCpnt->device->lun & 0x7), info->busyluns);
|
||||||
|
|
||||||
fn = (void (*)(FAS216_Info *, struct scsi_cmnd *, unsigned int))SCpnt->host_scribble;
|
fn = (void (*)(FAS216_Info *, struct scsi_cmnd *, unsigned int))SCpnt->host_scribble;
|
||||||
fn(info, SCpnt, result);
|
fn(info, SCpnt, result);
|
||||||
|
@ -2398,7 +2400,8 @@ static enum res_find fas216_find_command(FAS216_Info *info,
|
||||||
* been set.
|
* been set.
|
||||||
*/
|
*/
|
||||||
info->origSCpnt = NULL;
|
info->origSCpnt = NULL;
|
||||||
clear_bit(SCpnt->device->id * 8 + SCpnt->device->lun, info->busyluns);
|
clear_bit(SCpnt->device->id * 8 +
|
||||||
|
(u8)(SCpnt->device->lun & 0x7), info->busyluns);
|
||||||
printk("waiting for execution ");
|
printk("waiting for execution ");
|
||||||
res = res_success;
|
res = res_success;
|
||||||
} else
|
} else
|
||||||
|
@ -3000,7 +3003,7 @@ void fas216_print_devices(FAS216_Info *info, struct seq_file *m)
|
||||||
|
|
||||||
shost_for_each_device(scd, info->host) {
|
shost_for_each_device(scd, info->host) {
|
||||||
dev = &info->device[scd->id];
|
dev = &info->device[scd->id];
|
||||||
seq_printf(m, " %d/%d ", scd->id, scd->lun);
|
seq_printf(m, " %d/%llu ", scd->id, scd->lun);
|
||||||
if (scd->tagged_supported)
|
if (scd->tagged_supported)
|
||||||
seq_printf(m, "%3sabled(%3d) ",
|
seq_printf(m, "%3sabled(%3d) ",
|
||||||
scd->simple_tags ? "en" : "dis",
|
scd->simple_tags ? "en" : "dis",
|
||||||
|
|
|
@ -167,7 +167,8 @@ struct scsi_cmnd *queue_remove_exclude(Queue_t *queue, unsigned long *exclude)
|
||||||
spin_lock_irqsave(&queue->queue_lock, flags);
|
spin_lock_irqsave(&queue->queue_lock, flags);
|
||||||
list_for_each(l, &queue->head) {
|
list_for_each(l, &queue->head) {
|
||||||
QE_t *q = list_entry(l, QE_t, list);
|
QE_t *q = list_entry(l, QE_t, list);
|
||||||
if (!test_bit(q->SCpnt->device->id * 8 + q->SCpnt->device->lun, exclude)) {
|
if (!test_bit(q->SCpnt->device->id * 8 +
|
||||||
|
(u8)(q->SCpnt->device->lun & 0x7), exclude)) {
|
||||||
SCpnt = __queue_remove(queue, l);
|
SCpnt = __queue_remove(queue, l);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -361,17 +361,18 @@ static void __init init_tags(void)
|
||||||
|
|
||||||
static int is_lun_busy(Scsi_Cmnd *cmd, int should_be_tagged)
|
static int is_lun_busy(Scsi_Cmnd *cmd, int should_be_tagged)
|
||||||
{
|
{
|
||||||
|
u8 lun = cmd->device->lun;
|
||||||
SETUP_HOSTDATA(cmd->device->host);
|
SETUP_HOSTDATA(cmd->device->host);
|
||||||
|
|
||||||
if (hostdata->busy[cmd->device->id] & (1 << cmd->device->lun))
|
if (hostdata->busy[cmd->device->id] & (1 << lun))
|
||||||
return 1;
|
return 1;
|
||||||
if (!should_be_tagged ||
|
if (!should_be_tagged ||
|
||||||
!setup_use_tagged_queuing || !cmd->device->tagged_supported)
|
!setup_use_tagged_queuing || !cmd->device->tagged_supported)
|
||||||
return 0;
|
return 0;
|
||||||
if (TagAlloc[cmd->device->id][cmd->device->lun].nr_allocated >=
|
if (TagAlloc[cmd->device->id][lun].nr_allocated >=
|
||||||
TagAlloc[cmd->device->id][cmd->device->lun].queue_size) {
|
TagAlloc[cmd->device->id][lun].queue_size) {
|
||||||
dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %d: no free tags\n",
|
dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %d: no free tags\n",
|
||||||
H_NO(cmd), cmd->device->id, cmd->device->lun);
|
H_NO(cmd), cmd->device->id, lun);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -385,6 +386,7 @@ static int is_lun_busy(Scsi_Cmnd *cmd, int should_be_tagged)
|
||||||
|
|
||||||
static void cmd_get_tag(Scsi_Cmnd *cmd, int should_be_tagged)
|
static void cmd_get_tag(Scsi_Cmnd *cmd, int should_be_tagged)
|
||||||
{
|
{
|
||||||
|
u8 lun = cmd->device->lun;
|
||||||
SETUP_HOSTDATA(cmd->device->host);
|
SETUP_HOSTDATA(cmd->device->host);
|
||||||
|
|
||||||
/* If we or the target don't support tagged queuing, allocate the LUN for
|
/* If we or the target don't support tagged queuing, allocate the LUN for
|
||||||
|
@ -393,11 +395,11 @@ static void cmd_get_tag(Scsi_Cmnd *cmd, int should_be_tagged)
|
||||||
if (!should_be_tagged ||
|
if (!should_be_tagged ||
|
||||||
!setup_use_tagged_queuing || !cmd->device->tagged_supported) {
|
!setup_use_tagged_queuing || !cmd->device->tagged_supported) {
|
||||||
cmd->tag = TAG_NONE;
|
cmd->tag = TAG_NONE;
|
||||||
hostdata->busy[cmd->device->id] |= (1 << cmd->device->lun);
|
hostdata->busy[cmd->device->id] |= (1 << lun);
|
||||||
dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %d now allocated by untagged "
|
dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %d now allocated by untagged "
|
||||||
"command\n", H_NO(cmd), cmd->device->id, cmd->device->lun);
|
"command\n", H_NO(cmd), cmd->device->id, lun);
|
||||||
} else {
|
} else {
|
||||||
TAG_ALLOC *ta = &TagAlloc[cmd->device->id][cmd->device->lun];
|
TAG_ALLOC *ta = &TagAlloc[cmd->device->id][lun];
|
||||||
|
|
||||||
cmd->tag = find_first_zero_bit(ta->allocated, MAX_TAGS);
|
cmd->tag = find_first_zero_bit(ta->allocated, MAX_TAGS);
|
||||||
set_bit(cmd->tag, ta->allocated);
|
set_bit(cmd->tag, ta->allocated);
|
||||||
|
@ -405,7 +407,7 @@ static void cmd_get_tag(Scsi_Cmnd *cmd, int should_be_tagged)
|
||||||
dprintk(NDEBUG_TAGS, "scsi%d: using tag %d for target %d lun %d "
|
dprintk(NDEBUG_TAGS, "scsi%d: using tag %d for target %d lun %d "
|
||||||
"(now %d tags in use)\n",
|
"(now %d tags in use)\n",
|
||||||
H_NO(cmd), cmd->tag, cmd->device->id,
|
H_NO(cmd), cmd->tag, cmd->device->id,
|
||||||
cmd->device->lun, ta->nr_allocated);
|
lun, ta->nr_allocated);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -416,21 +418,22 @@ static void cmd_get_tag(Scsi_Cmnd *cmd, int should_be_tagged)
|
||||||
|
|
||||||
static void cmd_free_tag(Scsi_Cmnd *cmd)
|
static void cmd_free_tag(Scsi_Cmnd *cmd)
|
||||||
{
|
{
|
||||||
|
u8 lun = cmd->device->lun;
|
||||||
SETUP_HOSTDATA(cmd->device->host);
|
SETUP_HOSTDATA(cmd->device->host);
|
||||||
|
|
||||||
if (cmd->tag == TAG_NONE) {
|
if (cmd->tag == TAG_NONE) {
|
||||||
hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun);
|
hostdata->busy[cmd->device->id] &= ~(1 << lun);
|
||||||
dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %d untagged cmd finished\n",
|
dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %d untagged cmd finished\n",
|
||||||
H_NO(cmd), cmd->device->id, cmd->device->lun);
|
H_NO(cmd), cmd->device->id, lun);
|
||||||
} else if (cmd->tag >= MAX_TAGS) {
|
} else if (cmd->tag >= MAX_TAGS) {
|
||||||
printk(KERN_NOTICE "scsi%d: trying to free bad tag %d!\n",
|
printk(KERN_NOTICE "scsi%d: trying to free bad tag %d!\n",
|
||||||
H_NO(cmd), cmd->tag);
|
H_NO(cmd), cmd->tag);
|
||||||
} else {
|
} else {
|
||||||
TAG_ALLOC *ta = &TagAlloc[cmd->device->id][cmd->device->lun];
|
TAG_ALLOC *ta = &TagAlloc[cmd->device->id][lun];
|
||||||
clear_bit(cmd->tag, ta->allocated);
|
clear_bit(cmd->tag, ta->allocated);
|
||||||
ta->nr_allocated--;
|
ta->nr_allocated--;
|
||||||
dprintk(NDEBUG_TAGS, "scsi%d: freed tag %d for target %d lun %d\n",
|
dprintk(NDEBUG_TAGS, "scsi%d: freed tag %d for target %d lun %d\n",
|
||||||
H_NO(cmd), cmd->tag, cmd->device->id, cmd->device->lun);
|
H_NO(cmd), cmd->tag, cmd->device->id, lun);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -713,7 +716,7 @@ static void lprint_Scsi_Cmnd(Scsi_Cmnd *cmd)
|
||||||
{
|
{
|
||||||
int i, s;
|
int i, s;
|
||||||
unsigned char *command;
|
unsigned char *command;
|
||||||
printk("scsi%d: destination target %d, lun %d\n",
|
printk("scsi%d: destination target %d, lun %llu\n",
|
||||||
H_NO(cmd), cmd->device->id, cmd->device->lun);
|
H_NO(cmd), cmd->device->id, cmd->device->lun);
|
||||||
printk(KERN_CONT " command = ");
|
printk(KERN_CONT " command = ");
|
||||||
command = cmd->cmnd;
|
command = cmd->cmnd;
|
||||||
|
@ -759,7 +762,7 @@ static void show_Scsi_Cmnd(Scsi_Cmnd *cmd, struct seq_file *m)
|
||||||
{
|
{
|
||||||
int i, s;
|
int i, s;
|
||||||
unsigned char *command;
|
unsigned char *command;
|
||||||
seq_printf(m, "scsi%d: destination target %d, lun %d\n",
|
seq_printf(m, "scsi%d: destination target %d, lun %llu\n",
|
||||||
H_NO(cmd), cmd->device->id, cmd->device->lun);
|
H_NO(cmd), cmd->device->id, cmd->device->lun);
|
||||||
seq_printf(m, " command = ");
|
seq_printf(m, " command = ");
|
||||||
command = cmd->cmnd;
|
command = cmd->cmnd;
|
||||||
|
@ -1060,12 +1063,13 @@ static void NCR5380_main(struct work_struct *work)
|
||||||
#endif
|
#endif
|
||||||
for (tmp = (Scsi_Cmnd *) hostdata->issue_queue,
|
for (tmp = (Scsi_Cmnd *) hostdata->issue_queue,
|
||||||
prev = NULL; tmp; prev = tmp, tmp = NEXT(tmp)) {
|
prev = NULL; tmp; prev = tmp, tmp = NEXT(tmp)) {
|
||||||
|
u8 lun = tmp->device->lun;
|
||||||
|
|
||||||
#if (NDEBUG & NDEBUG_LISTS)
|
#if (NDEBUG & NDEBUG_LISTS)
|
||||||
if (prev != tmp)
|
if (prev != tmp)
|
||||||
printk("MAIN tmp=%p target=%d busy=%d lun=%d\n",
|
printk("MAIN tmp=%p target=%d busy=%d lun=%llu\n",
|
||||||
tmp, tmp->device->id, hostdata->busy[tmp->device->id],
|
tmp, tmp->device->id, hostdata->busy[tmp->device->id],
|
||||||
tmp->device->lun);
|
lun);
|
||||||
#endif
|
#endif
|
||||||
/* When we find one, remove it from the issue queue. */
|
/* When we find one, remove it from the issue queue. */
|
||||||
/* ++guenther: possible race with Falcon locking */
|
/* ++guenther: possible race with Falcon locking */
|
||||||
|
@ -1073,7 +1077,7 @@ static void NCR5380_main(struct work_struct *work)
|
||||||
#ifdef SUPPORT_TAGS
|
#ifdef SUPPORT_TAGS
|
||||||
!is_lun_busy( tmp, tmp->cmnd[0] != REQUEST_SENSE)
|
!is_lun_busy( tmp, tmp->cmnd[0] != REQUEST_SENSE)
|
||||||
#else
|
#else
|
||||||
!(hostdata->busy[tmp->device->id] & (1 << tmp->device->lun))
|
!(hostdata->busy[tmp->device->id] & (1 << lun))
|
||||||
#endif
|
#endif
|
||||||
) {
|
) {
|
||||||
/* ++guenther: just to be sure, this must be atomic */
|
/* ++guenther: just to be sure, this must be atomic */
|
||||||
|
@ -1099,7 +1103,7 @@ static void NCR5380_main(struct work_struct *work)
|
||||||
*/
|
*/
|
||||||
dprintk(NDEBUG_MAIN, "scsi%d: main(): command for target %d "
|
dprintk(NDEBUG_MAIN, "scsi%d: main(): command for target %d "
|
||||||
"lun %d removed from issue_queue\n",
|
"lun %d removed from issue_queue\n",
|
||||||
HOSTNO, tmp->device->id, tmp->device->lun);
|
HOSTNO, tmp->device->id, lun);
|
||||||
/*
|
/*
|
||||||
* REQUEST SENSE commands are issued without tagged
|
* REQUEST SENSE commands are issued without tagged
|
||||||
* queueing, even on SCSI-II devices because the
|
* queueing, even on SCSI-II devices because the
|
||||||
|
@ -2061,7 +2065,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
|
||||||
* accesses to this device will use the
|
* accesses to this device will use the
|
||||||
* polled-IO. */
|
* polled-IO. */
|
||||||
printk(KERN_NOTICE "scsi%d: switching target %d "
|
printk(KERN_NOTICE "scsi%d: switching target %d "
|
||||||
"lun %d to slow handshake\n", HOSTNO,
|
"lun %llu to slow handshake\n", HOSTNO,
|
||||||
cmd->device->id, cmd->device->lun);
|
cmd->device->id, cmd->device->lun);
|
||||||
cmd->device->borken = 1;
|
cmd->device->borken = 1;
|
||||||
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE |
|
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE |
|
||||||
|
@ -2113,7 +2117,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
|
||||||
/* Accept message by clearing ACK */
|
/* Accept message by clearing ACK */
|
||||||
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
|
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
|
||||||
|
|
||||||
dprintk(NDEBUG_LINKED, "scsi%d: target %d lun %d linked command "
|
dprintk(NDEBUG_LINKED, "scsi%d: target %d lun %llu linked command "
|
||||||
"complete.\n", HOSTNO, cmd->device->id, cmd->device->lun);
|
"complete.\n", HOSTNO, cmd->device->id, cmd->device->lun);
|
||||||
|
|
||||||
/* Enable reselect interrupts */
|
/* Enable reselect interrupts */
|
||||||
|
@ -2125,7 +2129,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!cmd->next_link) {
|
if (!cmd->next_link) {
|
||||||
printk(KERN_NOTICE "scsi%d: target %d lun %d "
|
printk(KERN_NOTICE "scsi%d: target %d lun %llu "
|
||||||
"linked command complete, no next_link\n",
|
"linked command complete, no next_link\n",
|
||||||
HOSTNO, cmd->device->id, cmd->device->lun);
|
HOSTNO, cmd->device->id, cmd->device->lun);
|
||||||
sink = 1;
|
sink = 1;
|
||||||
|
@ -2138,7 +2142,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
|
||||||
* and don't free it! */
|
* and don't free it! */
|
||||||
cmd->next_link->tag = cmd->tag;
|
cmd->next_link->tag = cmd->tag;
|
||||||
cmd->result = cmd->SCp.Status | (cmd->SCp.Message << 8);
|
cmd->result = cmd->SCp.Status | (cmd->SCp.Message << 8);
|
||||||
dprintk(NDEBUG_LINKED, "scsi%d: target %d lun %d linked request "
|
dprintk(NDEBUG_LINKED, "scsi%d: target %d lun %llu linked request "
|
||||||
"done, calling scsi_done().\n",
|
"done, calling scsi_done().\n",
|
||||||
HOSTNO, cmd->device->id, cmd->device->lun);
|
HOSTNO, cmd->device->id, cmd->device->lun);
|
||||||
#ifdef NCR5380_STATS
|
#ifdef NCR5380_STATS
|
||||||
|
@ -2155,7 +2159,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
|
||||||
/* ++guenther: possible race with Falcon locking */
|
/* ++guenther: possible race with Falcon locking */
|
||||||
falcon_dont_release++;
|
falcon_dont_release++;
|
||||||
hostdata->connected = NULL;
|
hostdata->connected = NULL;
|
||||||
dprintk(NDEBUG_QUEUES, "scsi%d: command for target %d, lun %d "
|
dprintk(NDEBUG_QUEUES, "scsi%d: command for target %d, lun %llu "
|
||||||
"completed\n", HOSTNO, cmd->device->id, cmd->device->lun);
|
"completed\n", HOSTNO, cmd->device->id, cmd->device->lun);
|
||||||
#ifdef SUPPORT_TAGS
|
#ifdef SUPPORT_TAGS
|
||||||
cmd_free_tag(cmd);
|
cmd_free_tag(cmd);
|
||||||
|
@ -2169,7 +2173,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
|
||||||
/* ++Andreas: the mid level code knows about
|
/* ++Andreas: the mid level code knows about
|
||||||
QUEUE_FULL now. */
|
QUEUE_FULL now. */
|
||||||
TAG_ALLOC *ta = &TagAlloc[cmd->device->id][cmd->device->lun];
|
TAG_ALLOC *ta = &TagAlloc[cmd->device->id][cmd->device->lun];
|
||||||
dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %d returned "
|
dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %llu returned "
|
||||||
"QUEUE_FULL after %d commands\n",
|
"QUEUE_FULL after %d commands\n",
|
||||||
HOSTNO, cmd->device->id, cmd->device->lun,
|
HOSTNO, cmd->device->id, cmd->device->lun,
|
||||||
ta->nr_allocated);
|
ta->nr_allocated);
|
||||||
|
@ -2267,7 +2271,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
|
||||||
cmd->device->tagged_supported = 0;
|
cmd->device->tagged_supported = 0;
|
||||||
hostdata->busy[cmd->device->id] |= (1 << cmd->device->lun);
|
hostdata->busy[cmd->device->id] |= (1 << cmd->device->lun);
|
||||||
cmd->tag = TAG_NONE;
|
cmd->tag = TAG_NONE;
|
||||||
dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %d rejected "
|
dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %llu rejected "
|
||||||
"QUEUE_TAG message; tagged queuing "
|
"QUEUE_TAG message; tagged queuing "
|
||||||
"disabled\n",
|
"disabled\n",
|
||||||
HOSTNO, cmd->device->id, cmd->device->lun);
|
HOSTNO, cmd->device->id, cmd->device->lun);
|
||||||
|
@ -2284,7 +2288,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
|
||||||
hostdata->connected = NULL;
|
hostdata->connected = NULL;
|
||||||
hostdata->disconnected_queue = cmd;
|
hostdata->disconnected_queue = cmd;
|
||||||
local_irq_restore(flags);
|
local_irq_restore(flags);
|
||||||
dprintk(NDEBUG_QUEUES, "scsi%d: command for target %d lun %d was "
|
dprintk(NDEBUG_QUEUES, "scsi%d: command for target %d lun %llu was "
|
||||||
"moved from connected to the "
|
"moved from connected to the "
|
||||||
"disconnected_queue\n", HOSTNO,
|
"disconnected_queue\n", HOSTNO,
|
||||||
cmd->device->id, cmd->device->lun);
|
cmd->device->id, cmd->device->lun);
|
||||||
|
@ -2385,12 +2389,12 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
|
||||||
printk("\n");
|
printk("\n");
|
||||||
} else if (tmp != EXTENDED_MESSAGE)
|
} else if (tmp != EXTENDED_MESSAGE)
|
||||||
printk(KERN_DEBUG "scsi%d: rejecting unknown "
|
printk(KERN_DEBUG "scsi%d: rejecting unknown "
|
||||||
"message %02x from target %d, lun %d\n",
|
"message %02x from target %d, lun %llu\n",
|
||||||
HOSTNO, tmp, cmd->device->id, cmd->device->lun);
|
HOSTNO, tmp, cmd->device->id, cmd->device->lun);
|
||||||
else
|
else
|
||||||
printk(KERN_DEBUG "scsi%d: rejecting unknown "
|
printk(KERN_DEBUG "scsi%d: rejecting unknown "
|
||||||
"extended message "
|
"extended message "
|
||||||
"code %02x, length %d from target %d, lun %d\n",
|
"code %02x, length %d from target %d, lun %llu\n",
|
||||||
HOSTNO, extended_msg[1], extended_msg[0],
|
HOSTNO, extended_msg[1], extended_msg[0],
|
||||||
cmd->device->id, cmd->device->lun);
|
cmd->device->id, cmd->device->lun);
|
||||||
|
|
||||||
|
@ -2588,7 +2592,7 @@ static void NCR5380_reselect(struct Scsi_Host *instance)
|
||||||
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
|
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
|
||||||
|
|
||||||
hostdata->connected = tmp;
|
hostdata->connected = tmp;
|
||||||
dprintk(NDEBUG_RESELECTION, "scsi%d: nexus established, target = %d, lun = %d, tag = %d\n",
|
dprintk(NDEBUG_RESELECTION, "scsi%d: nexus established, target = %d, lun = %llu, tag = %d\n",
|
||||||
HOSTNO, tmp->device->id, tmp->device->lun, tmp->tag);
|
HOSTNO, tmp->device->id, tmp->device->lun, tmp->tag);
|
||||||
falcon_dont_release--;
|
falcon_dont_release--;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1450,9 +1450,9 @@ static void bnx2fc_lun_reset_cmpl(struct bnx2fc_cmd *io_req)
|
||||||
struct scsi_cmnd *sc_cmd = io_req->sc_cmd;
|
struct scsi_cmnd *sc_cmd = io_req->sc_cmd;
|
||||||
struct bnx2fc_rport *tgt = io_req->tgt;
|
struct bnx2fc_rport *tgt = io_req->tgt;
|
||||||
struct bnx2fc_cmd *cmd, *tmp;
|
struct bnx2fc_cmd *cmd, *tmp;
|
||||||
int tm_lun = sc_cmd->device->lun;
|
u64 tm_lun = sc_cmd->device->lun;
|
||||||
|
u64 lun;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
int lun;
|
|
||||||
|
|
||||||
/* called with tgt_lock held */
|
/* called with tgt_lock held */
|
||||||
BNX2FC_IO_DBG(io_req, "Entered bnx2fc_lun_reset_cmpl\n");
|
BNX2FC_IO_DBG(io_req, "Entered bnx2fc_lun_reset_cmpl\n");
|
||||||
|
|
|
@ -247,7 +247,7 @@ ch_read_element_status(scsi_changer *ch, u_int elem, char *data)
|
||||||
retry:
|
retry:
|
||||||
memset(cmd,0,sizeof(cmd));
|
memset(cmd,0,sizeof(cmd));
|
||||||
cmd[0] = READ_ELEMENT_STATUS;
|
cmd[0] = READ_ELEMENT_STATUS;
|
||||||
cmd[1] = (ch->device->lun << 5) |
|
cmd[1] = ((ch->device->lun & 0x7) << 5) |
|
||||||
(ch->voltags ? 0x10 : 0) |
|
(ch->voltags ? 0x10 : 0) |
|
||||||
ch_elem_to_typecode(ch,elem);
|
ch_elem_to_typecode(ch,elem);
|
||||||
cmd[2] = (elem >> 8) & 0xff;
|
cmd[2] = (elem >> 8) & 0xff;
|
||||||
|
@ -283,7 +283,7 @@ ch_init_elem(scsi_changer *ch)
|
||||||
VPRINTK(KERN_INFO, "INITIALIZE ELEMENT STATUS, may take some time ...\n");
|
VPRINTK(KERN_INFO, "INITIALIZE ELEMENT STATUS, may take some time ...\n");
|
||||||
memset(cmd,0,sizeof(cmd));
|
memset(cmd,0,sizeof(cmd));
|
||||||
cmd[0] = INITIALIZE_ELEMENT_STATUS;
|
cmd[0] = INITIALIZE_ELEMENT_STATUS;
|
||||||
cmd[1] = ch->device->lun << 5;
|
cmd[1] = (ch->device->lun & 0x7) << 5;
|
||||||
err = ch_do_scsi(ch, cmd, NULL, 0, DMA_NONE);
|
err = ch_do_scsi(ch, cmd, NULL, 0, DMA_NONE);
|
||||||
VPRINTK(KERN_INFO, "... finished\n");
|
VPRINTK(KERN_INFO, "... finished\n");
|
||||||
return err;
|
return err;
|
||||||
|
@ -303,7 +303,7 @@ ch_readconfig(scsi_changer *ch)
|
||||||
|
|
||||||
memset(cmd,0,sizeof(cmd));
|
memset(cmd,0,sizeof(cmd));
|
||||||
cmd[0] = MODE_SENSE;
|
cmd[0] = MODE_SENSE;
|
||||||
cmd[1] = ch->device->lun << 5;
|
cmd[1] = (ch->device->lun & 0x7) << 5;
|
||||||
cmd[2] = 0x1d;
|
cmd[2] = 0x1d;
|
||||||
cmd[4] = 255;
|
cmd[4] = 255;
|
||||||
result = ch_do_scsi(ch, cmd, buffer, 255, DMA_FROM_DEVICE);
|
result = ch_do_scsi(ch, cmd, buffer, 255, DMA_FROM_DEVICE);
|
||||||
|
@ -428,7 +428,7 @@ ch_position(scsi_changer *ch, u_int trans, u_int elem, int rotate)
|
||||||
trans = ch->firsts[CHET_MT];
|
trans = ch->firsts[CHET_MT];
|
||||||
memset(cmd,0,sizeof(cmd));
|
memset(cmd,0,sizeof(cmd));
|
||||||
cmd[0] = POSITION_TO_ELEMENT;
|
cmd[0] = POSITION_TO_ELEMENT;
|
||||||
cmd[1] = ch->device->lun << 5;
|
cmd[1] = (ch->device->lun & 0x7) << 5;
|
||||||
cmd[2] = (trans >> 8) & 0xff;
|
cmd[2] = (trans >> 8) & 0xff;
|
||||||
cmd[3] = trans & 0xff;
|
cmd[3] = trans & 0xff;
|
||||||
cmd[4] = (elem >> 8) & 0xff;
|
cmd[4] = (elem >> 8) & 0xff;
|
||||||
|
@ -447,7 +447,7 @@ ch_move(scsi_changer *ch, u_int trans, u_int src, u_int dest, int rotate)
|
||||||
trans = ch->firsts[CHET_MT];
|
trans = ch->firsts[CHET_MT];
|
||||||
memset(cmd,0,sizeof(cmd));
|
memset(cmd,0,sizeof(cmd));
|
||||||
cmd[0] = MOVE_MEDIUM;
|
cmd[0] = MOVE_MEDIUM;
|
||||||
cmd[1] = ch->device->lun << 5;
|
cmd[1] = (ch->device->lun & 0x7) << 5;
|
||||||
cmd[2] = (trans >> 8) & 0xff;
|
cmd[2] = (trans >> 8) & 0xff;
|
||||||
cmd[3] = trans & 0xff;
|
cmd[3] = trans & 0xff;
|
||||||
cmd[4] = (src >> 8) & 0xff;
|
cmd[4] = (src >> 8) & 0xff;
|
||||||
|
@ -470,7 +470,7 @@ ch_exchange(scsi_changer *ch, u_int trans, u_int src,
|
||||||
trans = ch->firsts[CHET_MT];
|
trans = ch->firsts[CHET_MT];
|
||||||
memset(cmd,0,sizeof(cmd));
|
memset(cmd,0,sizeof(cmd));
|
||||||
cmd[0] = EXCHANGE_MEDIUM;
|
cmd[0] = EXCHANGE_MEDIUM;
|
||||||
cmd[1] = ch->device->lun << 5;
|
cmd[1] = (ch->device->lun & 0x7) << 5;
|
||||||
cmd[2] = (trans >> 8) & 0xff;
|
cmd[2] = (trans >> 8) & 0xff;
|
||||||
cmd[3] = trans & 0xff;
|
cmd[3] = trans & 0xff;
|
||||||
cmd[4] = (src >> 8) & 0xff;
|
cmd[4] = (src >> 8) & 0xff;
|
||||||
|
@ -518,7 +518,7 @@ ch_set_voltag(scsi_changer *ch, u_int elem,
|
||||||
elem, tag);
|
elem, tag);
|
||||||
memset(cmd,0,sizeof(cmd));
|
memset(cmd,0,sizeof(cmd));
|
||||||
cmd[0] = SEND_VOLUME_TAG;
|
cmd[0] = SEND_VOLUME_TAG;
|
||||||
cmd[1] = (ch->device->lun << 5) |
|
cmd[1] = ((ch->device->lun & 0x7) << 5) |
|
||||||
ch_elem_to_typecode(ch,elem);
|
ch_elem_to_typecode(ch,elem);
|
||||||
cmd[2] = (elem >> 8) & 0xff;
|
cmd[2] = (elem >> 8) & 0xff;
|
||||||
cmd[3] = elem & 0xff;
|
cmd[3] = elem & 0xff;
|
||||||
|
@ -754,7 +754,7 @@ static long ch_ioctl(struct file *file,
|
||||||
voltag_retry:
|
voltag_retry:
|
||||||
memset(ch_cmd, 0, sizeof(ch_cmd));
|
memset(ch_cmd, 0, sizeof(ch_cmd));
|
||||||
ch_cmd[0] = READ_ELEMENT_STATUS;
|
ch_cmd[0] = READ_ELEMENT_STATUS;
|
||||||
ch_cmd[1] = (ch->device->lun << 5) |
|
ch_cmd[1] = ((ch->device->lun & 0x7) << 5) |
|
||||||
(ch->voltags ? 0x10 : 0) |
|
(ch->voltags ? 0x10 : 0) |
|
||||||
ch_elem_to_typecode(ch,elem);
|
ch_elem_to_typecode(ch,elem);
|
||||||
ch_cmd[2] = (elem >> 8) & 0xff;
|
ch_cmd[2] = (elem >> 8) & 0xff;
|
||||||
|
|
|
@ -1657,7 +1657,7 @@ csio_scsi_err_handler(struct csio_hw *hw, struct csio_ioreq *req)
|
||||||
case FW_SCSI_UNDER_FLOW_ERR:
|
case FW_SCSI_UNDER_FLOW_ERR:
|
||||||
csio_warn(hw,
|
csio_warn(hw,
|
||||||
"Under-flow error,cmnd:0x%x expected"
|
"Under-flow error,cmnd:0x%x expected"
|
||||||
" len:0x%x resid:0x%x lun:0x%x ssn:0x%x\n",
|
" len:0x%x resid:0x%x lun:0x%llx ssn:0x%x\n",
|
||||||
cmnd->cmnd[0], scsi_bufflen(cmnd),
|
cmnd->cmnd[0], scsi_bufflen(cmnd),
|
||||||
scsi_get_resid(cmnd), cmnd->device->lun,
|
scsi_get_resid(cmnd), cmnd->device->lun,
|
||||||
rn->flowid);
|
rn->flowid);
|
||||||
|
@ -1957,7 +1957,7 @@ csio_eh_abort_handler(struct scsi_cmnd *cmnd)
|
||||||
|
|
||||||
csio_dbg(hw,
|
csio_dbg(hw,
|
||||||
"Request to abort ioreq:%p cmd:%p cdb:%08llx"
|
"Request to abort ioreq:%p cmd:%p cdb:%08llx"
|
||||||
" ssni:0x%x lun:%d iq:0x%x\n",
|
" ssni:0x%x lun:%llu iq:0x%x\n",
|
||||||
ioreq, cmnd, *((uint64_t *)cmnd->cmnd), rn->flowid,
|
ioreq, cmnd, *((uint64_t *)cmnd->cmnd), rn->flowid,
|
||||||
cmnd->device->lun, csio_q_physiqid(hw, ioreq->iq_idx));
|
cmnd->device->lun, csio_q_physiqid(hw, ioreq->iq_idx));
|
||||||
|
|
||||||
|
@ -2015,13 +2015,13 @@ csio_eh_abort_handler(struct scsi_cmnd *cmnd)
|
||||||
/* FW successfully aborted the request */
|
/* FW successfully aborted the request */
|
||||||
if (host_byte(cmnd->result) == DID_REQUEUE) {
|
if (host_byte(cmnd->result) == DID_REQUEUE) {
|
||||||
csio_info(hw,
|
csio_info(hw,
|
||||||
"Aborted SCSI command to (%d:%d) serial#:0x%lx\n",
|
"Aborted SCSI command to (%d:%llu) serial#:0x%lx\n",
|
||||||
cmnd->device->id, cmnd->device->lun,
|
cmnd->device->id, cmnd->device->lun,
|
||||||
cmnd->serial_number);
|
cmnd->serial_number);
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
} else {
|
} else {
|
||||||
csio_info(hw,
|
csio_info(hw,
|
||||||
"Failed to abort SCSI command, (%d:%d) serial#:0x%lx\n",
|
"Failed to abort SCSI command, (%d:%llu) serial#:0x%lx\n",
|
||||||
cmnd->device->id, cmnd->device->lun,
|
cmnd->device->id, cmnd->device->lun,
|
||||||
cmnd->serial_number);
|
cmnd->serial_number);
|
||||||
return FAILED;
|
return FAILED;
|
||||||
|
@ -2100,13 +2100,13 @@ csio_eh_lun_reset_handler(struct scsi_cmnd *cmnd)
|
||||||
if (!rn)
|
if (!rn)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
csio_dbg(hw, "Request to reset LUN:%d (ssni:0x%x tgtid:%d)\n",
|
csio_dbg(hw, "Request to reset LUN:%llu (ssni:0x%x tgtid:%d)\n",
|
||||||
cmnd->device->lun, rn->flowid, rn->scsi_id);
|
cmnd->device->lun, rn->flowid, rn->scsi_id);
|
||||||
|
|
||||||
if (!csio_is_lnode_ready(ln)) {
|
if (!csio_is_lnode_ready(ln)) {
|
||||||
csio_err(hw,
|
csio_err(hw,
|
||||||
"LUN reset cannot be issued on non-ready"
|
"LUN reset cannot be issued on non-ready"
|
||||||
" local node vnpi:0x%x (LUN:%d)\n",
|
" local node vnpi:0x%x (LUN:%llu)\n",
|
||||||
ln->vnp_flowid, cmnd->device->lun);
|
ln->vnp_flowid, cmnd->device->lun);
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
@ -2126,7 +2126,7 @@ csio_eh_lun_reset_handler(struct scsi_cmnd *cmnd)
|
||||||
if (fc_remote_port_chkready(rn->rport)) {
|
if (fc_remote_port_chkready(rn->rport)) {
|
||||||
csio_err(hw,
|
csio_err(hw,
|
||||||
"LUN reset cannot be issued on non-ready"
|
"LUN reset cannot be issued on non-ready"
|
||||||
" remote node ssni:0x%x (LUN:%d)\n",
|
" remote node ssni:0x%x (LUN:%llu)\n",
|
||||||
rn->flowid, cmnd->device->lun);
|
rn->flowid, cmnd->device->lun);
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
@ -2168,7 +2168,7 @@ csio_eh_lun_reset_handler(struct scsi_cmnd *cmnd)
|
||||||
sld.level = CSIO_LEV_LUN;
|
sld.level = CSIO_LEV_LUN;
|
||||||
sld.lnode = ioreq->lnode;
|
sld.lnode = ioreq->lnode;
|
||||||
sld.rnode = ioreq->rnode;
|
sld.rnode = ioreq->rnode;
|
||||||
sld.oslun = (uint64_t)cmnd->device->lun;
|
sld.oslun = cmnd->device->lun;
|
||||||
|
|
||||||
spin_lock_irqsave(&hw->lock, flags);
|
spin_lock_irqsave(&hw->lock, flags);
|
||||||
/* Kick off TM SM on the ioreq */
|
/* Kick off TM SM on the ioreq */
|
||||||
|
@ -2190,7 +2190,7 @@ csio_eh_lun_reset_handler(struct scsi_cmnd *cmnd)
|
||||||
|
|
||||||
/* LUN reset timed-out */
|
/* LUN reset timed-out */
|
||||||
if (((struct scsi_cmnd *)csio_scsi_cmnd(ioreq)) == cmnd) {
|
if (((struct scsi_cmnd *)csio_scsi_cmnd(ioreq)) == cmnd) {
|
||||||
csio_err(hw, "LUN reset (%d:%d) timed out\n",
|
csio_err(hw, "LUN reset (%d:%llu) timed out\n",
|
||||||
cmnd->device->id, cmnd->device->lun);
|
cmnd->device->id, cmnd->device->lun);
|
||||||
|
|
||||||
spin_lock_irq(&hw->lock);
|
spin_lock_irq(&hw->lock);
|
||||||
|
@ -2203,7 +2203,7 @@ csio_eh_lun_reset_handler(struct scsi_cmnd *cmnd)
|
||||||
|
|
||||||
/* LUN reset returned, check cached status */
|
/* LUN reset returned, check cached status */
|
||||||
if (cmnd->SCp.Status != FW_SUCCESS) {
|
if (cmnd->SCp.Status != FW_SUCCESS) {
|
||||||
csio_err(hw, "LUN reset failed (%d:%d), status: %d\n",
|
csio_err(hw, "LUN reset failed (%d:%llu), status: %d\n",
|
||||||
cmnd->device->id, cmnd->device->lun, cmnd->SCp.Status);
|
cmnd->device->id, cmnd->device->lun, cmnd->SCp.Status);
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
@ -2223,7 +2223,7 @@ csio_eh_lun_reset_handler(struct scsi_cmnd *cmnd)
|
||||||
/* Aborts may have timed out */
|
/* Aborts may have timed out */
|
||||||
if (retval != 0) {
|
if (retval != 0) {
|
||||||
csio_err(hw,
|
csio_err(hw,
|
||||||
"Attempt to abort I/Os during LUN reset of %d"
|
"Attempt to abort I/Os during LUN reset of %llu"
|
||||||
" returned %d\n", cmnd->device->lun, retval);
|
" returned %d\n", cmnd->device->lun, retval);
|
||||||
/* Return I/Os back to active_q */
|
/* Return I/Os back to active_q */
|
||||||
spin_lock_irq(&hw->lock);
|
spin_lock_irq(&hw->lock);
|
||||||
|
@ -2234,7 +2234,7 @@ csio_eh_lun_reset_handler(struct scsi_cmnd *cmnd)
|
||||||
|
|
||||||
CSIO_INC_STATS(rn, n_lun_rst);
|
CSIO_INC_STATS(rn, n_lun_rst);
|
||||||
|
|
||||||
csio_info(hw, "LUN reset occurred (%d:%d)\n",
|
csio_info(hw, "LUN reset occurred (%d:%llu)\n",
|
||||||
cmnd->device->id, cmnd->device->lun);
|
cmnd->device->id, cmnd->device->lun);
|
||||||
|
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
|
|
|
@ -1087,7 +1087,7 @@ static int dc395x_queue_command_lck(struct scsi_cmnd *cmd, void (*done)(struct s
|
||||||
struct AdapterCtlBlk *acb =
|
struct AdapterCtlBlk *acb =
|
||||||
(struct AdapterCtlBlk *)cmd->device->host->hostdata;
|
(struct AdapterCtlBlk *)cmd->device->host->hostdata;
|
||||||
dprintkdbg(DBG_0, "queue_command: (0x%p) <%02i-%i> cmnd=0x%02x\n",
|
dprintkdbg(DBG_0, "queue_command: (0x%p) <%02i-%i> cmnd=0x%02x\n",
|
||||||
cmd, cmd->device->id, cmd->device->lun, cmd->cmnd[0]);
|
cmd, cmd->device->id, (u8)cmd->device->lun, cmd->cmnd[0]);
|
||||||
|
|
||||||
/* Assume BAD_TARGET; will be cleared later */
|
/* Assume BAD_TARGET; will be cleared later */
|
||||||
cmd->result = DID_BAD_TARGET << 16;
|
cmd->result = DID_BAD_TARGET << 16;
|
||||||
|
@ -1102,7 +1102,7 @@ static int dc395x_queue_command_lck(struct scsi_cmnd *cmd, void (*done)(struct s
|
||||||
/* does the specified lun on the specified device exist */
|
/* does the specified lun on the specified device exist */
|
||||||
if (!(acb->dcb_map[cmd->device->id] & (1 << cmd->device->lun))) {
|
if (!(acb->dcb_map[cmd->device->id] & (1 << cmd->device->lun))) {
|
||||||
dprintkl(KERN_INFO, "queue_command: Ignore target <%02i-%i>\n",
|
dprintkl(KERN_INFO, "queue_command: Ignore target <%02i-%i>\n",
|
||||||
cmd->device->id, cmd->device->lun);
|
cmd->device->id, (u8)cmd->device->lun);
|
||||||
goto complete;
|
goto complete;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1111,7 +1111,7 @@ static int dc395x_queue_command_lck(struct scsi_cmnd *cmd, void (*done)(struct s
|
||||||
if (!dcb) {
|
if (!dcb) {
|
||||||
/* should never happen */
|
/* should never happen */
|
||||||
dprintkl(KERN_ERR, "queue_command: No such device <%02i-%i>",
|
dprintkl(KERN_ERR, "queue_command: No such device <%02i-%i>",
|
||||||
cmd->device->id, cmd->device->lun);
|
cmd->device->id, (u8)cmd->device->lun);
|
||||||
goto complete;
|
goto complete;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1207,7 +1207,7 @@ static void dump_register_info(struct AdapterCtlBlk *acb,
|
||||||
"cmnd=0x%02x <%02i-%i>\n",
|
"cmnd=0x%02x <%02i-%i>\n",
|
||||||
srb, srb->cmd,
|
srb, srb->cmd,
|
||||||
srb->cmd->cmnd[0], srb->cmd->device->id,
|
srb->cmd->cmnd[0], srb->cmd->device->id,
|
||||||
srb->cmd->device->lun);
|
(u8)srb->cmd->device->lun);
|
||||||
printk(" sglist=%p cnt=%i idx=%i len=%zu\n",
|
printk(" sglist=%p cnt=%i idx=%i len=%zu\n",
|
||||||
srb->segment_x, srb->sg_count, srb->sg_index,
|
srb->segment_x, srb->sg_count, srb->sg_index,
|
||||||
srb->total_xfer_length);
|
srb->total_xfer_length);
|
||||||
|
@ -1302,7 +1302,7 @@ static int __dc395x_eh_bus_reset(struct scsi_cmnd *cmd)
|
||||||
(struct AdapterCtlBlk *)cmd->device->host->hostdata;
|
(struct AdapterCtlBlk *)cmd->device->host->hostdata;
|
||||||
dprintkl(KERN_INFO,
|
dprintkl(KERN_INFO,
|
||||||
"eh_bus_reset: (0%p) target=<%02i-%i> cmd=%p\n",
|
"eh_bus_reset: (0%p) target=<%02i-%i> cmd=%p\n",
|
||||||
cmd, cmd->device->id, cmd->device->lun, cmd);
|
cmd, cmd->device->id, (u8)cmd->device->lun, cmd);
|
||||||
|
|
||||||
if (timer_pending(&acb->waiting_timer))
|
if (timer_pending(&acb->waiting_timer))
|
||||||
del_timer(&acb->waiting_timer);
|
del_timer(&acb->waiting_timer);
|
||||||
|
@ -1369,7 +1369,7 @@ static int dc395x_eh_abort(struct scsi_cmnd *cmd)
|
||||||
struct DeviceCtlBlk *dcb;
|
struct DeviceCtlBlk *dcb;
|
||||||
struct ScsiReqBlk *srb;
|
struct ScsiReqBlk *srb;
|
||||||
dprintkl(KERN_INFO, "eh_abort: (0x%p) target=<%02i-%i> cmd=%p\n",
|
dprintkl(KERN_INFO, "eh_abort: (0x%p) target=<%02i-%i> cmd=%p\n",
|
||||||
cmd, cmd->device->id, cmd->device->lun, cmd);
|
cmd, cmd->device->id, (u8)cmd->device->lun, cmd);
|
||||||
|
|
||||||
dcb = find_dcb(acb, cmd->device->id, cmd->device->lun);
|
dcb = find_dcb(acb, cmd->device->id, cmd->device->lun);
|
||||||
if (!dcb) {
|
if (!dcb) {
|
||||||
|
@ -1605,7 +1605,7 @@ static u8 start_scsi(struct AdapterCtlBlk* acb, struct DeviceCtlBlk* dcb,
|
||||||
dprintkl(KERN_WARNING, "start_scsi: (0x%p) "
|
dprintkl(KERN_WARNING, "start_scsi: (0x%p) "
|
||||||
"Out of tags target=<%02i-%i>)\n",
|
"Out of tags target=<%02i-%i>)\n",
|
||||||
srb->cmd, srb->cmd->device->id,
|
srb->cmd, srb->cmd->device->id,
|
||||||
srb->cmd->device->lun);
|
(u8)srb->cmd->device->lun);
|
||||||
srb->state = SRB_READY;
|
srb->state = SRB_READY;
|
||||||
DC395x_write16(acb, TRM_S1040_SCSI_CONTROL,
|
DC395x_write16(acb, TRM_S1040_SCSI_CONTROL,
|
||||||
DO_HWRESELECT);
|
DO_HWRESELECT);
|
||||||
|
@ -1623,7 +1623,7 @@ static u8 start_scsi(struct AdapterCtlBlk* acb, struct DeviceCtlBlk* dcb,
|
||||||
/*polling:*/
|
/*polling:*/
|
||||||
/* Send CDB ..command block ......... */
|
/* Send CDB ..command block ......... */
|
||||||
dprintkdbg(DBG_KG, "start_scsi: (0x%p) <%02i-%i> cmnd=0x%02x tag=%i\n",
|
dprintkdbg(DBG_KG, "start_scsi: (0x%p) <%02i-%i> cmnd=0x%02x tag=%i\n",
|
||||||
srb->cmd, srb->cmd->device->id, srb->cmd->device->lun,
|
srb->cmd, srb->cmd->device->id, (u8)srb->cmd->device->lun,
|
||||||
srb->cmd->cmnd[0], srb->tag_number);
|
srb->cmd->cmnd[0], srb->tag_number);
|
||||||
if (srb->flag & AUTO_REQSENSE) {
|
if (srb->flag & AUTO_REQSENSE) {
|
||||||
DC395x_write8(acb, TRM_S1040_SCSI_FIFO, REQUEST_SENSE);
|
DC395x_write8(acb, TRM_S1040_SCSI_FIFO, REQUEST_SENSE);
|
||||||
|
@ -2041,7 +2041,7 @@ static void data_out_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
|
||||||
u16 scsi_status = *pscsi_status;
|
u16 scsi_status = *pscsi_status;
|
||||||
u32 d_left_counter = 0;
|
u32 d_left_counter = 0;
|
||||||
dprintkdbg(DBG_0, "data_out_phase0: (0x%p) <%02i-%i>\n",
|
dprintkdbg(DBG_0, "data_out_phase0: (0x%p) <%02i-%i>\n",
|
||||||
srb->cmd, srb->cmd->device->id, srb->cmd->device->lun);
|
srb->cmd, srb->cmd->device->id, (u8)srb->cmd->device->lun);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* KG: We need to drain the buffers before we draw any conclusions!
|
* 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,
|
||||||
u16 *pscsi_status)
|
u16 *pscsi_status)
|
||||||
{
|
{
|
||||||
dprintkdbg(DBG_0, "data_out_phase1: (0x%p) <%02i-%i>\n",
|
dprintkdbg(DBG_0, "data_out_phase1: (0x%p) <%02i-%i>\n",
|
||||||
srb->cmd, srb->cmd->device->id, srb->cmd->device->lun);
|
srb->cmd, srb->cmd->device->id, (u8)srb->cmd->device->lun);
|
||||||
clear_fifo(acb, "data_out_phase1");
|
clear_fifo(acb, "data_out_phase1");
|
||||||
/* do prepare before transfer when data out phase */
|
/* do prepare before transfer when data out phase */
|
||||||
data_io_transfer(acb, srb, XFERDATAOUT);
|
data_io_transfer(acb, srb, XFERDATAOUT);
|
||||||
|
@ -2183,7 +2183,7 @@ static void data_in_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
|
||||||
u16 scsi_status = *pscsi_status;
|
u16 scsi_status = *pscsi_status;
|
||||||
|
|
||||||
dprintkdbg(DBG_0, "data_in_phase0: (0x%p) <%02i-%i>\n",
|
dprintkdbg(DBG_0, "data_in_phase0: (0x%p) <%02i-%i>\n",
|
||||||
srb->cmd, srb->cmd->device->id, srb->cmd->device->lun);
|
srb->cmd, srb->cmd->device->id, (u8)srb->cmd->device->lun);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* KG: DataIn is much more tricky than DataOut. When the device is finished
|
* 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,
|
||||||
u16 *pscsi_status)
|
u16 *pscsi_status)
|
||||||
{
|
{
|
||||||
dprintkdbg(DBG_0, "data_in_phase1: (0x%p) <%02i-%i>\n",
|
dprintkdbg(DBG_0, "data_in_phase1: (0x%p) <%02i-%i>\n",
|
||||||
srb->cmd, srb->cmd->device->id, srb->cmd->device->lun);
|
srb->cmd, srb->cmd->device->id, (u8)srb->cmd->device->lun);
|
||||||
data_io_transfer(acb, srb, XFERDATAIN);
|
data_io_transfer(acb, srb, XFERDATAIN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2406,7 +2406,7 @@ static void data_io_transfer(struct AdapterCtlBlk *acb,
|
||||||
u8 bval;
|
u8 bval;
|
||||||
dprintkdbg(DBG_0,
|
dprintkdbg(DBG_0,
|
||||||
"data_io_transfer: (0x%p) <%02i-%i> %c len=%i, sg=(%i/%i)\n",
|
"data_io_transfer: (0x%p) <%02i-%i> %c len=%i, sg=(%i/%i)\n",
|
||||||
srb->cmd, srb->cmd->device->id, srb->cmd->device->lun,
|
srb->cmd, srb->cmd->device->id, (u8)srb->cmd->device->lun,
|
||||||
((io_dir & DMACMD_DIR) ? 'r' : 'w'),
|
((io_dir & DMACMD_DIR) ? 'r' : 'w'),
|
||||||
srb->total_xfer_length, srb->sg_index, srb->sg_count);
|
srb->total_xfer_length, srb->sg_index, srb->sg_count);
|
||||||
if (srb == acb->tmp_srb)
|
if (srb == acb->tmp_srb)
|
||||||
|
@ -2579,7 +2579,7 @@ static void status_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
|
||||||
u16 *pscsi_status)
|
u16 *pscsi_status)
|
||||||
{
|
{
|
||||||
dprintkdbg(DBG_0, "status_phase0: (0x%p) <%02i-%i>\n",
|
dprintkdbg(DBG_0, "status_phase0: (0x%p) <%02i-%i>\n",
|
||||||
srb->cmd, srb->cmd->device->id, srb->cmd->device->lun);
|
srb->cmd, srb->cmd->device->id, (u8)srb->cmd->device->lun);
|
||||||
srb->target_status = DC395x_read8(acb, TRM_S1040_SCSI_FIFO);
|
srb->target_status = DC395x_read8(acb, TRM_S1040_SCSI_FIFO);
|
||||||
srb->end_message = DC395x_read8(acb, TRM_S1040_SCSI_FIFO); /* get message */
|
srb->end_message = DC395x_read8(acb, TRM_S1040_SCSI_FIFO); /* get message */
|
||||||
srb->state = SRB_COMPLETED;
|
srb->state = SRB_COMPLETED;
|
||||||
|
@ -2593,7 +2593,7 @@ static void status_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
|
||||||
u16 *pscsi_status)
|
u16 *pscsi_status)
|
||||||
{
|
{
|
||||||
dprintkdbg(DBG_0, "status_phase1: (0x%p) <%02i-%i>\n",
|
dprintkdbg(DBG_0, "status_phase1: (0x%p) <%02i-%i>\n",
|
||||||
srb->cmd, srb->cmd->device->id, srb->cmd->device->lun);
|
srb->cmd, srb->cmd->device->id, (u8)srb->cmd->device->lun);
|
||||||
srb->state = SRB_STATUS;
|
srb->state = SRB_STATUS;
|
||||||
DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); /* it's important for atn stop */
|
DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH); /* it's important for atn stop */
|
||||||
DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, SCMD_COMP);
|
DC395x_write8(acb, TRM_S1040_SCSI_COMMAND, SCMD_COMP);
|
||||||
|
@ -3318,7 +3318,7 @@ static void srb_done(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb,
|
||||||
int ckc_only = 1;
|
int ckc_only = 1;
|
||||||
|
|
||||||
dprintkdbg(DBG_1, "srb_done: (0x%p) <%02i-%i>\n", srb->cmd,
|
dprintkdbg(DBG_1, "srb_done: (0x%p) <%02i-%i>\n", srb->cmd,
|
||||||
srb->cmd->device->id, srb->cmd->device->lun);
|
srb->cmd->device->id, (u8)srb->cmd->device->lun);
|
||||||
dprintkdbg(DBG_SG, "srb_done: srb=%p sg=%i(%i/%i) buf=%p\n",
|
dprintkdbg(DBG_SG, "srb_done: srb=%p sg=%i(%i/%i) buf=%p\n",
|
||||||
srb, scsi_sg_count(cmd), srb->sg_index, srb->sg_count,
|
srb, scsi_sg_count(cmd), srb->sg_index, srb->sg_count,
|
||||||
scsi_sgtalbe(cmd));
|
scsi_sgtalbe(cmd));
|
||||||
|
@ -3498,7 +3498,7 @@ static void srb_done(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb,
|
||||||
if (srb->total_xfer_length)
|
if (srb->total_xfer_length)
|
||||||
dprintkdbg(DBG_KG, "srb_done: (0x%p) <%02i-%i> "
|
dprintkdbg(DBG_KG, "srb_done: (0x%p) <%02i-%i> "
|
||||||
"cmnd=0x%02x Missed %i bytes\n",
|
"cmnd=0x%02x Missed %i bytes\n",
|
||||||
cmd, cmd->device->id, cmd->device->lun,
|
cmd, cmd->device->id, (u8)cmd->device->lun,
|
||||||
cmd->cmnd[0], srb->total_xfer_length);
|
cmd->cmnd[0], srb->total_xfer_length);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3538,7 +3538,7 @@ static void doing_srb_done(struct AdapterCtlBlk *acb, u8 did_flag,
|
||||||
dir = p->sc_data_direction;
|
dir = p->sc_data_direction;
|
||||||
result = MK_RES(0, did_flag, 0, 0);
|
result = MK_RES(0, did_flag, 0, 0);
|
||||||
printk("G:%p(%02i-%i) ", p,
|
printk("G:%p(%02i-%i) ", p,
|
||||||
p->device->id, p->device->lun);
|
p->device->id, (u8)p->device->lun);
|
||||||
srb_going_remove(dcb, srb);
|
srb_going_remove(dcb, srb);
|
||||||
free_tag(dcb, srb);
|
free_tag(dcb, srb);
|
||||||
srb_free_insert(acb, srb);
|
srb_free_insert(acb, srb);
|
||||||
|
@ -3568,7 +3568,7 @@ static void doing_srb_done(struct AdapterCtlBlk *acb, u8 did_flag,
|
||||||
|
|
||||||
result = MK_RES(0, did_flag, 0, 0);
|
result = MK_RES(0, did_flag, 0, 0);
|
||||||
printk("W:%p<%02i-%i>", p, p->device->id,
|
printk("W:%p<%02i-%i>", p, p->device->id,
|
||||||
p->device->lun);
|
(u8)p->device->lun);
|
||||||
srb_waiting_remove(dcb, srb);
|
srb_waiting_remove(dcb, srb);
|
||||||
srb_free_insert(acb, srb);
|
srb_free_insert(acb, srb);
|
||||||
p->result = result;
|
p->result = result;
|
||||||
|
@ -3677,7 +3677,7 @@ static void request_sense(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb,
|
||||||
{
|
{
|
||||||
struct scsi_cmnd *cmd = srb->cmd;
|
struct scsi_cmnd *cmd = srb->cmd;
|
||||||
dprintkdbg(DBG_1, "request_sense: (0x%p) <%02i-%i>\n",
|
dprintkdbg(DBG_1, "request_sense: (0x%p) <%02i-%i>\n",
|
||||||
cmd, cmd->device->id, cmd->device->lun);
|
cmd, cmd->device->id, (u8)cmd->device->lun);
|
||||||
|
|
||||||
srb->flag |= AUTO_REQSENSE;
|
srb->flag |= AUTO_REQSENSE;
|
||||||
srb->adapter_status = 0;
|
srb->adapter_status = 0;
|
||||||
|
|
|
@ -459,7 +459,7 @@ static int adpt_queue_lck(struct scsi_cmnd * cmd, void (*done) (struct scsi_cmnd
|
||||||
* to the device structure. This should be a TEST_UNIT_READY
|
* to the device structure. This should be a TEST_UNIT_READY
|
||||||
* command from scan_scsis_single.
|
* command from scan_scsis_single.
|
||||||
*/
|
*/
|
||||||
if ((pDev = adpt_find_device(pHba, (u32)cmd->device->channel, (u32)cmd->device->id, (u32)cmd->device->lun)) == NULL) {
|
if ((pDev = adpt_find_device(pHba, (u32)cmd->device->channel, (u32)cmd->device->id, cmd->device->lun)) == NULL) {
|
||||||
// TODO: if any luns are at this bus, scsi id then fake a TEST_UNIT_READY and INQUIRY response
|
// TODO: if any luns are at this bus, scsi id then fake a TEST_UNIT_READY and INQUIRY response
|
||||||
// with type 7F (for all luns less than the max for this bus,id) so the lun scan will continue.
|
// with type 7F (for all luns less than the max for this bus,id) so the lun scan will continue.
|
||||||
cmd->result = (DID_NO_CONNECT << 16);
|
cmd->result = (DID_NO_CONNECT << 16);
|
||||||
|
@ -579,8 +579,8 @@ static int adpt_show_info(struct seq_file *m, struct Scsi_Host *host)
|
||||||
seq_printf(m," Rev: %-8.8s\n", d->pScsi_dev->rev);
|
seq_printf(m," Rev: %-8.8s\n", d->pScsi_dev->rev);
|
||||||
|
|
||||||
unit = d->pI2o_dev->lct_data.tid;
|
unit = d->pI2o_dev->lct_data.tid;
|
||||||
seq_printf(m, "\tTID=%d, (Channel=%d, Target=%d, Lun=%d) (%s)\n\n",
|
seq_printf(m, "\tTID=%d, (Channel=%d, Target=%d, Lun=%llu) (%s)\n\n",
|
||||||
unit, (int)d->scsi_channel, (int)d->scsi_id, (int)d->scsi_lun,
|
unit, (int)d->scsi_channel, (int)d->scsi_id, d->scsi_lun,
|
||||||
scsi_device_online(d->pScsi_dev)? "online":"offline");
|
scsi_device_online(d->pScsi_dev)? "online":"offline");
|
||||||
d = d->next_lun;
|
d = d->next_lun;
|
||||||
}
|
}
|
||||||
|
@ -1162,7 +1162,7 @@ static void adpt_i2o_delete_hba(adpt_hba* pHba)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct adpt_device* adpt_find_device(adpt_hba* pHba, u32 chan, u32 id, u32 lun)
|
static struct adpt_device* adpt_find_device(adpt_hba* pHba, u32 chan, u32 id, u64 lun)
|
||||||
{
|
{
|
||||||
struct adpt_device* d;
|
struct adpt_device* d;
|
||||||
|
|
||||||
|
@ -1462,7 +1462,7 @@ static int adpt_i2o_parse_lct(adpt_hba* pHba)
|
||||||
i2o_lct *lct = pHba->lct;
|
i2o_lct *lct = pHba->lct;
|
||||||
u8 bus_no = 0;
|
u8 bus_no = 0;
|
||||||
s16 scsi_id;
|
s16 scsi_id;
|
||||||
s16 scsi_lun;
|
u64 scsi_lun;
|
||||||
u32 buf[10]; // larger than 7, or 8 ...
|
u32 buf[10]; // larger than 7, or 8 ...
|
||||||
struct adpt_device* pDev;
|
struct adpt_device* pDev;
|
||||||
|
|
||||||
|
@ -1496,7 +1496,7 @@ static int adpt_i2o_parse_lct(adpt_hba* pHba)
|
||||||
}
|
}
|
||||||
bus_no = buf[0]>>16;
|
bus_no = buf[0]>>16;
|
||||||
scsi_id = buf[1];
|
scsi_id = buf[1];
|
||||||
scsi_lun = (buf[2]>>8 )&0xff;
|
scsi_lun = scsilun_to_int((struct scsi_lun *)&buf[2]);
|
||||||
if(bus_no >= MAX_CHANNEL) { // Something wrong skip it
|
if(bus_no >= MAX_CHANNEL) { // Something wrong skip it
|
||||||
printk(KERN_WARNING"%s: Channel number %d out of range \n", pHba->name, bus_no);
|
printk(KERN_WARNING"%s: Channel number %d out of range \n", pHba->name, bus_no);
|
||||||
continue;
|
continue;
|
||||||
|
@ -1571,7 +1571,7 @@ static int adpt_i2o_parse_lct(adpt_hba* pHba)
|
||||||
if(adpt_i2o_query_scalar(pHba, tid, 0x8000, -1, buf, 32)>=0) {
|
if(adpt_i2o_query_scalar(pHba, tid, 0x8000, -1, buf, 32)>=0) {
|
||||||
bus_no = buf[0]>>16;
|
bus_no = buf[0]>>16;
|
||||||
scsi_id = buf[1];
|
scsi_id = buf[1];
|
||||||
scsi_lun = (buf[2]>>8 )&0xff;
|
scsi_lun = scsilun_to_int((struct scsi_lun *)&buf[2]);
|
||||||
if(bus_no >= MAX_CHANNEL) { // Something wrong skip it
|
if(bus_no >= MAX_CHANNEL) { // Something wrong skip it
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -2407,8 +2407,8 @@ static s32 adpt_i2o_to_scsi(void __iomem *reply, struct scsi_cmnd* cmd)
|
||||||
case I2O_SCSI_DSC_COMMAND_TIMEOUT:
|
case I2O_SCSI_DSC_COMMAND_TIMEOUT:
|
||||||
case I2O_SCSI_DSC_NO_ADAPTER:
|
case I2O_SCSI_DSC_NO_ADAPTER:
|
||||||
case I2O_SCSI_DSC_RESOURCE_UNAVAILABLE:
|
case I2O_SCSI_DSC_RESOURCE_UNAVAILABLE:
|
||||||
printk(KERN_WARNING"%s: SCSI Timeout-Device (%d,%d,%d) hba status=0x%x, dev status=0x%x, cmd=0x%x\n",
|
printk(KERN_WARNING"%s: SCSI Timeout-Device (%d,%d,%llu) hba status=0x%x, dev status=0x%x, cmd=0x%x\n",
|
||||||
pHba->name, (u32)cmd->device->channel, (u32)cmd->device->id, (u32)cmd->device->lun, hba_status, dev_status, cmd->cmnd[0]);
|
pHba->name, (u32)cmd->device->channel, (u32)cmd->device->id, cmd->device->lun, hba_status, dev_status, cmd->cmnd[0]);
|
||||||
cmd->result = (DID_TIME_OUT << 16);
|
cmd->result = (DID_TIME_OUT << 16);
|
||||||
break;
|
break;
|
||||||
case I2O_SCSI_DSC_ADAPTER_BUSY:
|
case I2O_SCSI_DSC_ADAPTER_BUSY:
|
||||||
|
@ -2447,8 +2447,8 @@ static s32 adpt_i2o_to_scsi(void __iomem *reply, struct scsi_cmnd* cmd)
|
||||||
case I2O_SCSI_DSC_QUEUE_FROZEN:
|
case I2O_SCSI_DSC_QUEUE_FROZEN:
|
||||||
case I2O_SCSI_DSC_REQUEST_INVALID:
|
case I2O_SCSI_DSC_REQUEST_INVALID:
|
||||||
default:
|
default:
|
||||||
printk(KERN_WARNING"%s: SCSI error %0x-Device(%d,%d,%d) hba_status=0x%x, dev_status=0x%x, cmd=0x%x\n",
|
printk(KERN_WARNING"%s: SCSI error %0x-Device(%d,%d,%llu) hba_status=0x%x, dev_status=0x%x, cmd=0x%x\n",
|
||||||
pHba->name, detailed_status & I2O_SCSI_DSC_MASK, (u32)cmd->device->channel, (u32)cmd->device->id, (u32)cmd->device->lun,
|
pHba->name, detailed_status & I2O_SCSI_DSC_MASK, (u32)cmd->device->channel, (u32)cmd->device->id, cmd->device->lun,
|
||||||
hba_status, dev_status, cmd->cmnd[0]);
|
hba_status, dev_status, cmd->cmnd[0]);
|
||||||
cmd->result = (DID_ERROR << 16);
|
cmd->result = (DID_ERROR << 16);
|
||||||
break;
|
break;
|
||||||
|
@ -2464,8 +2464,8 @@ static s32 adpt_i2o_to_scsi(void __iomem *reply, struct scsi_cmnd* cmd)
|
||||||
cmd->sense_buffer[2] == DATA_PROTECT ){
|
cmd->sense_buffer[2] == DATA_PROTECT ){
|
||||||
/* This is to handle an array failed */
|
/* This is to handle an array failed */
|
||||||
cmd->result = (DID_TIME_OUT << 16);
|
cmd->result = (DID_TIME_OUT << 16);
|
||||||
printk(KERN_WARNING"%s: SCSI Data Protect-Device (%d,%d,%d) hba_status=0x%x, dev_status=0x%x, cmd=0x%x\n",
|
printk(KERN_WARNING"%s: SCSI Data Protect-Device (%d,%d,%llu) hba_status=0x%x, dev_status=0x%x, cmd=0x%x\n",
|
||||||
pHba->name, (u32)cmd->device->channel, (u32)cmd->device->id, (u32)cmd->device->lun,
|
pHba->name, (u32)cmd->device->channel, (u32)cmd->device->id, cmd->device->lun,
|
||||||
hba_status, dev_status, cmd->cmnd[0]);
|
hba_status, dev_status, cmd->cmnd[0]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2476,8 +2476,8 @@ static s32 adpt_i2o_to_scsi(void __iomem *reply, struct scsi_cmnd* cmd)
|
||||||
* for a limitted number of retries.
|
* for a limitted number of retries.
|
||||||
*/
|
*/
|
||||||
cmd->result = (DID_TIME_OUT << 16);
|
cmd->result = (DID_TIME_OUT << 16);
|
||||||
printk(KERN_WARNING"%s: I2O MSG_FAIL - Device (%d,%d,%d) tid=%d, cmd=0x%x\n",
|
printk(KERN_WARNING"%s: I2O MSG_FAIL - Device (%d,%d,%llu) tid=%d, cmd=0x%x\n",
|
||||||
pHba->name, (u32)cmd->device->channel, (u32)cmd->device->id, (u32)cmd->device->lun,
|
pHba->name, (u32)cmd->device->channel, (u32)cmd->device->id, cmd->device->lun,
|
||||||
((struct adpt_device*)(cmd->device->hostdata))->tid, cmd->cmnd[0]);
|
((struct adpt_device*)(cmd->device->hostdata))->tid, cmd->cmnd[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2517,7 +2517,7 @@ static s32 adpt_i2o_reparse_lct(adpt_hba* pHba)
|
||||||
i2o_lct *lct = pHba->lct;
|
i2o_lct *lct = pHba->lct;
|
||||||
u8 bus_no = 0;
|
u8 bus_no = 0;
|
||||||
s16 scsi_id;
|
s16 scsi_id;
|
||||||
s16 scsi_lun;
|
u64 scsi_lun;
|
||||||
u32 buf[10]; // at least 8 u32's
|
u32 buf[10]; // at least 8 u32's
|
||||||
struct adpt_device* pDev = NULL;
|
struct adpt_device* pDev = NULL;
|
||||||
struct i2o_device* pI2o_dev = NULL;
|
struct i2o_device* pI2o_dev = NULL;
|
||||||
|
@ -2564,7 +2564,7 @@ static s32 adpt_i2o_reparse_lct(adpt_hba* pHba)
|
||||||
}
|
}
|
||||||
|
|
||||||
scsi_id = buf[1];
|
scsi_id = buf[1];
|
||||||
scsi_lun = (buf[2]>>8 )&0xff;
|
scsi_lun = scsilun_to_int((struct scsi_lun *)&buf[2]);
|
||||||
pDev = pHba->channel[bus_no].device[scsi_id];
|
pDev = pHba->channel[bus_no].device[scsi_id];
|
||||||
/* da lun */
|
/* da lun */
|
||||||
while(pDev) {
|
while(pDev) {
|
||||||
|
@ -2633,7 +2633,7 @@ static s32 adpt_i2o_reparse_lct(adpt_hba* pHba)
|
||||||
while(pDev) {
|
while(pDev) {
|
||||||
if(pDev->scsi_lun == scsi_lun) {
|
if(pDev->scsi_lun == scsi_lun) {
|
||||||
if(!scsi_device_online(pDev->pScsi_dev)) {
|
if(!scsi_device_online(pDev->pScsi_dev)) {
|
||||||
printk(KERN_WARNING"%s: Setting device (%d,%d,%d) back online\n",
|
printk(KERN_WARNING"%s: Setting device (%d,%d,%llu) back online\n",
|
||||||
pHba->name,bus_no,scsi_id,scsi_lun);
|
pHba->name,bus_no,scsi_id,scsi_lun);
|
||||||
if (pDev->pScsi_dev) {
|
if (pDev->pScsi_dev) {
|
||||||
scsi_device_set_state(pDev->pScsi_dev, SDEV_RUNNING);
|
scsi_device_set_state(pDev->pScsi_dev, SDEV_RUNNING);
|
||||||
|
@ -2665,7 +2665,7 @@ static s32 adpt_i2o_reparse_lct(adpt_hba* pHba)
|
||||||
// in the LCT table
|
// in the LCT table
|
||||||
if (pDev->state & DPTI_DEV_UNSCANNED){
|
if (pDev->state & DPTI_DEV_UNSCANNED){
|
||||||
pDev->state = DPTI_DEV_OFFLINE;
|
pDev->state = DPTI_DEV_OFFLINE;
|
||||||
printk(KERN_WARNING"%s: Device (%d,%d,%d) offline\n",pHba->name,pDev->scsi_channel,pDev->scsi_id,pDev->scsi_lun);
|
printk(KERN_WARNING"%s: Device (%d,%d,%llu) offline\n",pHba->name,pDev->scsi_channel,pDev->scsi_id,pDev->scsi_lun);
|
||||||
if (pDev->pScsi_dev) {
|
if (pDev->pScsi_dev) {
|
||||||
scsi_device_set_state(pDev->pScsi_dev, SDEV_OFFLINE);
|
scsi_device_set_state(pDev->pScsi_dev, SDEV_OFFLINE);
|
||||||
}
|
}
|
||||||
|
|
|
@ -184,7 +184,7 @@ struct adpt_device {
|
||||||
u32 block_size;
|
u32 block_size;
|
||||||
u8 scsi_channel;
|
u8 scsi_channel;
|
||||||
u8 scsi_id;
|
u8 scsi_id;
|
||||||
u8 scsi_lun;
|
u64 scsi_lun;
|
||||||
u8 state;
|
u8 state;
|
||||||
u16 tid;
|
u16 tid;
|
||||||
struct i2o_device* pI2o_dev;
|
struct i2o_device* pI2o_dev;
|
||||||
|
@ -231,7 +231,7 @@ typedef struct _adpt_hba {
|
||||||
u32 sg_tablesize; // Scatter/Gather List Size.
|
u32 sg_tablesize; // Scatter/Gather List Size.
|
||||||
u8 top_scsi_channel;
|
u8 top_scsi_channel;
|
||||||
u8 top_scsi_id;
|
u8 top_scsi_id;
|
||||||
u8 top_scsi_lun;
|
u64 top_scsi_lun;
|
||||||
u8 dma64;
|
u8 dma64;
|
||||||
|
|
||||||
i2o_status_block* status_block;
|
i2o_status_block* status_block;
|
||||||
|
@ -300,7 +300,7 @@ static s32 adpt_send_nop(adpt_hba*pHba,u32 m);
|
||||||
static void adpt_i2o_delete_hba(adpt_hba* pHba);
|
static void adpt_i2o_delete_hba(adpt_hba* pHba);
|
||||||
static void adpt_inquiry(adpt_hba* pHba);
|
static void adpt_inquiry(adpt_hba* pHba);
|
||||||
static void adpt_fail_posted_scbs(adpt_hba* pHba);
|
static void adpt_fail_posted_scbs(adpt_hba* pHba);
|
||||||
static struct adpt_device* adpt_find_device(adpt_hba* pHba, u32 chan, u32 id, u32 lun);
|
static struct adpt_device* adpt_find_device(adpt_hba* pHba, u32 chan, u32 id, u64 lun);
|
||||||
static int adpt_install_hba(struct scsi_host_template* sht, struct pci_dev* pDev) ;
|
static int adpt_install_hba(struct scsi_host_template* sht, struct pci_dev* pDev) ;
|
||||||
static int adpt_i2o_online_hba(adpt_hba* pHba);
|
static int adpt_i2o_online_hba(adpt_hba* pHba);
|
||||||
static void adpt_i2o_post_wait_complete(u32, int);
|
static void adpt_i2o_post_wait_complete(u32, int);
|
||||||
|
|
|
@ -2449,7 +2449,7 @@ static irqreturn_t ihdlr(struct Scsi_Host *shost)
|
||||||
"target_status 0x%x, sense key 0x%x.\n",
|
"target_status 0x%x, sense key 0x%x.\n",
|
||||||
ha->board_name,
|
ha->board_name,
|
||||||
SCpnt->device->channel, SCpnt->device->id,
|
SCpnt->device->channel, SCpnt->device->id,
|
||||||
SCpnt->device->lun,
|
(u8)SCpnt->device->lun,
|
||||||
spp->target_status, SCpnt->sense_buffer[2]);
|
spp->target_status, SCpnt->sense_buffer[2]);
|
||||||
|
|
||||||
ha->target_to[SCpnt->device->id][SCpnt->device->channel] = 0;
|
ha->target_to[SCpnt->device->id][SCpnt->device->channel] = 0;
|
||||||
|
|
|
@ -1753,7 +1753,7 @@ int fnic_abort_cmd(struct scsi_cmnd *sc)
|
||||||
tag = sc->request->tag;
|
tag = sc->request->tag;
|
||||||
FNIC_SCSI_DBG(KERN_DEBUG,
|
FNIC_SCSI_DBG(KERN_DEBUG,
|
||||||
fnic->lport->host,
|
fnic->lport->host,
|
||||||
"Abort Cmd called FCID 0x%x, LUN 0x%x TAG %x flags %x\n",
|
"Abort Cmd called FCID 0x%x, LUN 0x%llx TAG %x flags %x\n",
|
||||||
rport->port_id, sc->device->lun, tag, CMD_FLAGS(sc));
|
rport->port_id, sc->device->lun, tag, CMD_FLAGS(sc));
|
||||||
|
|
||||||
CMD_FLAGS(sc) = FNIC_NO_FLAGS;
|
CMD_FLAGS(sc) = FNIC_NO_FLAGS;
|
||||||
|
@ -2207,7 +2207,7 @@ int fnic_device_reset(struct scsi_cmnd *sc)
|
||||||
|
|
||||||
rport = starget_to_rport(scsi_target(sc->device));
|
rport = starget_to_rport(scsi_target(sc->device));
|
||||||
FNIC_SCSI_DBG(KERN_DEBUG, fnic->lport->host,
|
FNIC_SCSI_DBG(KERN_DEBUG, fnic->lport->host,
|
||||||
"Device reset called FCID 0x%x, LUN 0x%x sc 0x%p\n",
|
"Device reset called FCID 0x%x, LUN 0x%llx sc 0x%p\n",
|
||||||
rport->port_id, sc->device->lun, sc);
|
rport->port_id, sc->device->lun, sc);
|
||||||
|
|
||||||
if (lp->state != LPORT_ST_READY || !(lp->link_up))
|
if (lp->state != LPORT_ST_READY || !(lp->link_up))
|
||||||
|
|
|
@ -768,7 +768,7 @@ static void sprint_command(struct seq_file *m, unsigned char *command)
|
||||||
|
|
||||||
static void sprint_Scsi_Cmnd(struct seq_file *m, Scsi_Cmnd * cmd)
|
static void sprint_Scsi_Cmnd(struct seq_file *m, Scsi_Cmnd * cmd)
|
||||||
{
|
{
|
||||||
PRINTP("host number %d destination target %d, lun %d\n" ANDP cmd->device->host->host_no ANDP cmd->device->id ANDP cmd->device->lun);
|
PRINTP("host number %d destination target %d, lun %llu\n" ANDP cmd->device->host->host_no ANDP cmd->device->id ANDP cmd->device->lun);
|
||||||
PRINTP(" command = ");
|
PRINTP(" command = ");
|
||||||
sprint_command(m, cmd->cmnd);
|
sprint_command(m, cmd->cmnd);
|
||||||
}
|
}
|
||||||
|
|
|
@ -4590,7 +4590,7 @@ static int hpsa_eh_abort_handler(struct scsi_cmnd *sc)
|
||||||
return FAILED;
|
return FAILED;
|
||||||
|
|
||||||
memset(msg, 0, sizeof(msg));
|
memset(msg, 0, sizeof(msg));
|
||||||
ml += sprintf(msg+ml, "ABORT REQUEST on C%d:B%d:T%d:L%d ",
|
ml += sprintf(msg+ml, "ABORT REQUEST on C%d:B%d:T%d:L%llu ",
|
||||||
h->scsi_host->host_no, sc->device->channel,
|
h->scsi_host->host_no, sc->device->channel,
|
||||||
sc->device->id, sc->device->lun);
|
sc->device->id, sc->device->lun);
|
||||||
|
|
||||||
|
|
|
@ -1024,7 +1024,7 @@ static int hptiop_queuecommand_lck(struct scsi_cmnd *scp,
|
||||||
|
|
||||||
_req->scp = scp;
|
_req->scp = scp;
|
||||||
|
|
||||||
dprintk("hptiop_queuecmd(scp=%p) %d/%d/%d/%d cdb=(%08x-%08x-%08x-%08x) "
|
dprintk("hptiop_queuecmd(scp=%p) %d/%d/%d/%llu cdb=(%08x-%08x-%08x-%08x) "
|
||||||
"req_index=%d, req=%p\n",
|
"req_index=%d, req=%p\n",
|
||||||
scp,
|
scp,
|
||||||
host->host_no, scp->device->channel,
|
host->host_no, scp->device->channel,
|
||||||
|
|
|
@ -2251,14 +2251,14 @@ static int in2000_show_info(struct seq_file *m, struct Scsi_Host *instance)
|
||||||
seq_printf(m, "\nconnected: ");
|
seq_printf(m, "\nconnected: ");
|
||||||
if (hd->connected) {
|
if (hd->connected) {
|
||||||
cmd = (Scsi_Cmnd *) hd->connected;
|
cmd = (Scsi_Cmnd *) hd->connected;
|
||||||
seq_printf(m, " %d:%d(%02x)", cmd->device->id, cmd->device->lun, cmd->cmnd[0]);
|
seq_printf(m, " %d:%llu(%02x)", cmd->device->id, cmd->device->lun, cmd->cmnd[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (hd->proc & PR_INPUTQ) {
|
if (hd->proc & PR_INPUTQ) {
|
||||||
seq_printf(m, "\ninput_Q: ");
|
seq_printf(m, "\ninput_Q: ");
|
||||||
cmd = (Scsi_Cmnd *) hd->input_Q;
|
cmd = (Scsi_Cmnd *) hd->input_Q;
|
||||||
while (cmd) {
|
while (cmd) {
|
||||||
seq_printf(m, " %d:%d(%02x)", cmd->device->id, cmd->device->lun, cmd->cmnd[0]);
|
seq_printf(m, " %d:%llu(%02x)", cmd->device->id, cmd->device->lun, cmd->cmnd[0]);
|
||||||
cmd = (Scsi_Cmnd *) cmd->host_scribble;
|
cmd = (Scsi_Cmnd *) cmd->host_scribble;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2266,7 +2266,7 @@ static int in2000_show_info(struct seq_file *m, struct Scsi_Host *instance)
|
||||||
seq_printf(m, "\ndisconnected_Q:");
|
seq_printf(m, "\ndisconnected_Q:");
|
||||||
cmd = (Scsi_Cmnd *) hd->disconnected_Q;
|
cmd = (Scsi_Cmnd *) hd->disconnected_Q;
|
||||||
while (cmd) {
|
while (cmd) {
|
||||||
seq_printf(m, " %d:%d(%02x)", cmd->device->id, cmd->device->lun, cmd->cmnd[0]);
|
seq_printf(m, " %d:%llu(%02x)", cmd->device->id, cmd->device->lun, cmd->cmnd[0]);
|
||||||
cmd = (Scsi_Cmnd *) cmd->host_scribble;
|
cmd = (Scsi_Cmnd *) cmd->host_scribble;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -260,7 +260,7 @@ static int iscsi_check_tmf_restrictions(struct iscsi_task *task, int opcode)
|
||||||
{
|
{
|
||||||
struct iscsi_conn *conn = task->conn;
|
struct iscsi_conn *conn = task->conn;
|
||||||
struct iscsi_tm *tmf = &conn->tmhdr;
|
struct iscsi_tm *tmf = &conn->tmhdr;
|
||||||
unsigned int hdr_lun;
|
u64 hdr_lun;
|
||||||
|
|
||||||
if (conn->tmf_state == TMF_INITIAL)
|
if (conn->tmf_state == TMF_INITIAL)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1859,8 +1859,7 @@ static int iscsi_exec_task_mgmt_fn(struct iscsi_conn *conn,
|
||||||
* Fail commands. session lock held and recv side suspended and xmit
|
* Fail commands. session lock held and recv side suspended and xmit
|
||||||
* thread flushed
|
* thread flushed
|
||||||
*/
|
*/
|
||||||
static void fail_scsi_tasks(struct iscsi_conn *conn, unsigned lun,
|
static void fail_scsi_tasks(struct iscsi_conn *conn, u64 lun, int error)
|
||||||
int error)
|
|
||||||
{
|
{
|
||||||
struct iscsi_task *task;
|
struct iscsi_task *task;
|
||||||
int i;
|
int i;
|
||||||
|
@ -2279,7 +2278,8 @@ int iscsi_eh_device_reset(struct scsi_cmnd *sc)
|
||||||
cls_session = starget_to_session(scsi_target(sc->device));
|
cls_session = starget_to_session(scsi_target(sc->device));
|
||||||
session = cls_session->dd_data;
|
session = cls_session->dd_data;
|
||||||
|
|
||||||
ISCSI_DBG_EH(session, "LU Reset [sc %p lun %u]\n", sc, sc->device->lun);
|
ISCSI_DBG_EH(session, "LU Reset [sc %p lun %llu]\n", sc,
|
||||||
|
sc->device->lun);
|
||||||
|
|
||||||
mutex_lock(&session->eh_mutex);
|
mutex_lock(&session->eh_mutex);
|
||||||
spin_lock_bh(&session->frwd_lock);
|
spin_lock_bh(&session->frwd_lock);
|
||||||
|
|
|
@ -404,7 +404,7 @@ static int sas_recover_lu(struct domain_device *dev, struct scsi_cmnd *cmd)
|
||||||
|
|
||||||
int_to_scsilun(cmd->device->lun, &lun);
|
int_to_scsilun(cmd->device->lun, &lun);
|
||||||
|
|
||||||
SAS_DPRINTK("eh: device %llx LUN %x has the task\n",
|
SAS_DPRINTK("eh: device %llx LUN %llx has the task\n",
|
||||||
SAS_ADDR(dev->sas_addr),
|
SAS_ADDR(dev->sas_addr),
|
||||||
cmd->device->lun);
|
cmd->device->lun);
|
||||||
|
|
||||||
|
@ -490,7 +490,8 @@ static void sas_wait_eh(struct domain_device *dev)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(sas_wait_eh);
|
EXPORT_SYMBOL(sas_wait_eh);
|
||||||
|
|
||||||
static int sas_queue_reset(struct domain_device *dev, int reset_type, int lun, int wait)
|
static int sas_queue_reset(struct domain_device *dev, int reset_type,
|
||||||
|
u64 lun, int wait)
|
||||||
{
|
{
|
||||||
struct sas_ha_struct *ha = dev->port->ha;
|
struct sas_ha_struct *ha = dev->port->ha;
|
||||||
int scheduled = 0, tries = 100;
|
int scheduled = 0, tries = 100;
|
||||||
|
@ -689,7 +690,7 @@ static void sas_eh_handle_sas_errors(struct Scsi_Host *shost, struct list_head *
|
||||||
reset:
|
reset:
|
||||||
tmf_resp = sas_recover_lu(task->dev, cmd);
|
tmf_resp = sas_recover_lu(task->dev, cmd);
|
||||||
if (tmf_resp == TMF_RESP_FUNC_COMPLETE) {
|
if (tmf_resp == TMF_RESP_FUNC_COMPLETE) {
|
||||||
SAS_DPRINTK("dev %016llx LU %x is "
|
SAS_DPRINTK("dev %016llx LU %llx is "
|
||||||
"recovered\n",
|
"recovered\n",
|
||||||
SAS_ADDR(task->dev),
|
SAS_ADDR(task->dev),
|
||||||
cmd->device->lun);
|
cmd->device->lun);
|
||||||
|
@ -742,7 +743,7 @@ static void sas_eh_handle_sas_errors(struct Scsi_Host *shost, struct list_head *
|
||||||
* of effort could recover from errors. Quite
|
* of effort could recover from errors. Quite
|
||||||
* possibly the HA just disappeared.
|
* possibly the HA just disappeared.
|
||||||
*/
|
*/
|
||||||
SAS_DPRINTK("error from device %llx, LUN %x "
|
SAS_DPRINTK("error from device %llx, LUN %llx "
|
||||||
"couldn't be recovered in any way\n",
|
"couldn't be recovered in any way\n",
|
||||||
SAS_ADDR(task->dev->sas_addr),
|
SAS_ADDR(task->dev->sas_addr),
|
||||||
cmd->device->lun);
|
cmd->device->lun);
|
||||||
|
@ -941,7 +942,7 @@ int sas_slave_configure(struct scsi_device *scsi_dev)
|
||||||
scsi_set_tag_type(scsi_dev, MSG_SIMPLE_TAG);
|
scsi_set_tag_type(scsi_dev, MSG_SIMPLE_TAG);
|
||||||
scsi_activate_tcq(scsi_dev, SAS_DEF_QD);
|
scsi_activate_tcq(scsi_dev, SAS_DEF_QD);
|
||||||
} else {
|
} else {
|
||||||
SAS_DPRINTK("device %llx, LUN %x doesn't support "
|
SAS_DPRINTK("device %llx, LUN %llx doesn't support "
|
||||||
"TCQ\n", SAS_ADDR(dev->sas_addr),
|
"TCQ\n", SAS_ADDR(dev->sas_addr),
|
||||||
scsi_dev->lun);
|
scsi_dev->lun);
|
||||||
scsi_dev->tagged_supported = 0;
|
scsi_dev->tagged_supported = 0;
|
||||||
|
|
|
@ -258,7 +258,7 @@ static void
|
||||||
lpfc_send_sdev_queuedepth_change_event(struct lpfc_hba *phba,
|
lpfc_send_sdev_queuedepth_change_event(struct lpfc_hba *phba,
|
||||||
struct lpfc_vport *vport,
|
struct lpfc_vport *vport,
|
||||||
struct lpfc_nodelist *ndlp,
|
struct lpfc_nodelist *ndlp,
|
||||||
uint32_t lun,
|
uint64_t lun,
|
||||||
uint32_t old_val,
|
uint32_t old_val,
|
||||||
uint32_t new_val)
|
uint32_t new_val)
|
||||||
{
|
{
|
||||||
|
@ -3823,7 +3823,7 @@ lpfc_handle_fcp_err(struct lpfc_vport *vport, struct lpfc_scsi_buf *lpfc_cmd,
|
||||||
if (rsplen != 0 && rsplen != 4 && rsplen != 8) {
|
if (rsplen != 0 && rsplen != 4 && rsplen != 8) {
|
||||||
lpfc_printf_vlog(vport, KERN_ERR, LOG_FCP,
|
lpfc_printf_vlog(vport, KERN_ERR, LOG_FCP,
|
||||||
"2719 Invalid response length: "
|
"2719 Invalid response length: "
|
||||||
"tgt x%x lun x%x cmnd x%x rsplen x%x\n",
|
"tgt x%x lun x%llx cmnd x%x rsplen x%x\n",
|
||||||
cmnd->device->id,
|
cmnd->device->id,
|
||||||
cmnd->device->lun, cmnd->cmnd[0],
|
cmnd->device->lun, cmnd->cmnd[0],
|
||||||
rsplen);
|
rsplen);
|
||||||
|
@ -3834,7 +3834,7 @@ lpfc_handle_fcp_err(struct lpfc_vport *vport, struct lpfc_scsi_buf *lpfc_cmd,
|
||||||
lpfc_printf_vlog(vport, KERN_ERR, LOG_FCP,
|
lpfc_printf_vlog(vport, KERN_ERR, LOG_FCP,
|
||||||
"2757 Protocol failure detected during "
|
"2757 Protocol failure detected during "
|
||||||
"processing of FCP I/O op: "
|
"processing of FCP I/O op: "
|
||||||
"tgt x%x lun x%x cmnd x%x rspInfo3 x%x\n",
|
"tgt x%x lun x%llx cmnd x%x rspInfo3 x%x\n",
|
||||||
cmnd->device->id,
|
cmnd->device->id,
|
||||||
cmnd->device->lun, cmnd->cmnd[0],
|
cmnd->device->lun, cmnd->cmnd[0],
|
||||||
fcprsp->rspInfo3);
|
fcprsp->rspInfo3);
|
||||||
|
@ -4045,7 +4045,7 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn,
|
||||||
else
|
else
|
||||||
logit = LOG_FCP | LOG_FCP_UNDER;
|
logit = LOG_FCP | LOG_FCP_UNDER;
|
||||||
lpfc_printf_vlog(vport, KERN_WARNING, logit,
|
lpfc_printf_vlog(vport, KERN_WARNING, logit,
|
||||||
"9030 FCP cmd x%x failed <%d/%d> "
|
"9030 FCP cmd x%x failed <%d/%lld> "
|
||||||
"status: x%x result: x%x "
|
"status: x%x result: x%x "
|
||||||
"sid: x%x did: x%x oxid: x%x "
|
"sid: x%x did: x%x oxid: x%x "
|
||||||
"Data: x%x x%x\n",
|
"Data: x%x x%x\n",
|
||||||
|
@ -4157,7 +4157,7 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn,
|
||||||
uint32_t *lp = (uint32_t *)cmd->sense_buffer;
|
uint32_t *lp = (uint32_t *)cmd->sense_buffer;
|
||||||
|
|
||||||
lpfc_printf_vlog(vport, KERN_INFO, LOG_FCP,
|
lpfc_printf_vlog(vport, KERN_INFO, LOG_FCP,
|
||||||
"0710 Iodone <%d/%d> cmd %p, error "
|
"0710 Iodone <%d/%llu> cmd %p, error "
|
||||||
"x%x SNS x%x x%x Data: x%x x%x\n",
|
"x%x SNS x%x x%x Data: x%x x%x\n",
|
||||||
cmd->device->id, cmd->device->lun, cmd,
|
cmd->device->id, cmd->device->lun, cmd,
|
||||||
cmd->result, *lp, *(lp + 3), cmd->retries,
|
cmd->result, *lp, *(lp + 3), cmd->retries,
|
||||||
|
@ -4390,7 +4390,7 @@ lpfc_scsi_prep_cmnd(struct lpfc_vport *vport, struct lpfc_scsi_buf *lpfc_cmd,
|
||||||
static int
|
static int
|
||||||
lpfc_scsi_prep_task_mgmt_cmd(struct lpfc_vport *vport,
|
lpfc_scsi_prep_task_mgmt_cmd(struct lpfc_vport *vport,
|
||||||
struct lpfc_scsi_buf *lpfc_cmd,
|
struct lpfc_scsi_buf *lpfc_cmd,
|
||||||
unsigned int lun,
|
uint64_t lun,
|
||||||
uint8_t task_mgmt_cmd)
|
uint8_t task_mgmt_cmd)
|
||||||
{
|
{
|
||||||
struct lpfc_iocbq *piocbq;
|
struct lpfc_iocbq *piocbq;
|
||||||
|
@ -4719,12 +4719,12 @@ lpfc_queuecommand(struct Scsi_Host *shost, struct scsi_cmnd *cmnd)
|
||||||
atomic_dec(&ndlp->cmd_pending);
|
atomic_dec(&ndlp->cmd_pending);
|
||||||
lpfc_printf_vlog(vport, KERN_INFO, LOG_FCP,
|
lpfc_printf_vlog(vport, KERN_INFO, LOG_FCP,
|
||||||
"3376 FCP could not issue IOCB err %x"
|
"3376 FCP could not issue IOCB err %x"
|
||||||
"FCP cmd x%x <%d/%d> "
|
"FCP cmd x%x <%d/%llu> "
|
||||||
"sid: x%x did: x%x oxid: x%x "
|
"sid: x%x did: x%x oxid: x%x "
|
||||||
"Data: x%x x%x x%x x%x\n",
|
"Data: x%x x%x x%x x%x\n",
|
||||||
err, cmnd->cmnd[0],
|
err, cmnd->cmnd[0],
|
||||||
cmnd->device ? cmnd->device->id : 0xffff,
|
cmnd->device ? cmnd->device->id : 0xffff,
|
||||||
cmnd->device ? cmnd->device->lun : 0xffff,
|
cmnd->device ? cmnd->device->lun : (u64) -1,
|
||||||
vport->fc_myDID, ndlp->nlp_DID,
|
vport->fc_myDID, ndlp->nlp_DID,
|
||||||
phba->sli_rev == LPFC_SLI_REV4 ?
|
phba->sli_rev == LPFC_SLI_REV4 ?
|
||||||
lpfc_cmd->cur_iocbq.sli4_xritag : 0xffff,
|
lpfc_cmd->cur_iocbq.sli4_xritag : 0xffff,
|
||||||
|
@ -4807,7 +4807,7 @@ lpfc_abort_handler(struct scsi_cmnd *cmnd)
|
||||||
spin_unlock_irqrestore(&phba->hbalock, flags);
|
spin_unlock_irqrestore(&phba->hbalock, flags);
|
||||||
lpfc_printf_vlog(vport, KERN_WARNING, LOG_FCP,
|
lpfc_printf_vlog(vport, KERN_WARNING, LOG_FCP,
|
||||||
"2873 SCSI Layer I/O Abort Request IO CMPL Status "
|
"2873 SCSI Layer I/O Abort Request IO CMPL Status "
|
||||||
"x%x ID %d LUN %d\n",
|
"x%x ID %d LUN %llu\n",
|
||||||
SUCCESS, cmnd->device->id, cmnd->device->lun);
|
SUCCESS, cmnd->device->id, cmnd->device->lun);
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -4924,7 +4924,7 @@ lpfc_abort_handler(struct scsi_cmnd *cmnd)
|
||||||
lpfc_printf_vlog(vport, KERN_ERR, LOG_FCP,
|
lpfc_printf_vlog(vport, KERN_ERR, LOG_FCP,
|
||||||
"0748 abort handler timed out waiting "
|
"0748 abort handler timed out waiting "
|
||||||
"for abortng I/O (xri:x%x) to complete: "
|
"for abortng I/O (xri:x%x) to complete: "
|
||||||
"ret %#x, ID %d, LUN %d\n",
|
"ret %#x, ID %d, LUN %llu\n",
|
||||||
iocb->sli4_xritag, ret,
|
iocb->sli4_xritag, ret,
|
||||||
cmnd->device->id, cmnd->device->lun);
|
cmnd->device->id, cmnd->device->lun);
|
||||||
}
|
}
|
||||||
|
@ -4935,7 +4935,7 @@ lpfc_abort_handler(struct scsi_cmnd *cmnd)
|
||||||
out:
|
out:
|
||||||
lpfc_printf_vlog(vport, KERN_WARNING, LOG_FCP,
|
lpfc_printf_vlog(vport, KERN_WARNING, LOG_FCP,
|
||||||
"0749 SCSI Layer I/O Abort Request Status x%x ID %d "
|
"0749 SCSI Layer I/O Abort Request Status x%x ID %d "
|
||||||
"LUN %d\n", ret, cmnd->device->id,
|
"LUN %llu\n", ret, cmnd->device->id,
|
||||||
cmnd->device->lun);
|
cmnd->device->lun);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -5047,7 +5047,7 @@ lpfc_check_fcp_rsp(struct lpfc_vport *vport, struct lpfc_scsi_buf *lpfc_cmd)
|
||||||
**/
|
**/
|
||||||
static int
|
static int
|
||||||
lpfc_send_taskmgmt(struct lpfc_vport *vport, struct lpfc_rport_data *rdata,
|
lpfc_send_taskmgmt(struct lpfc_vport *vport, struct lpfc_rport_data *rdata,
|
||||||
unsigned tgt_id, unsigned int lun_id,
|
unsigned tgt_id, uint64_t lun_id,
|
||||||
uint8_t task_mgmt_cmd)
|
uint8_t task_mgmt_cmd)
|
||||||
{
|
{
|
||||||
struct lpfc_hba *phba = vport->phba;
|
struct lpfc_hba *phba = vport->phba;
|
||||||
|
@ -5083,7 +5083,7 @@ lpfc_send_taskmgmt(struct lpfc_vport *vport, struct lpfc_rport_data *rdata,
|
||||||
iocbq->iocb_cmpl = lpfc_tskmgmt_def_cmpl;
|
iocbq->iocb_cmpl = lpfc_tskmgmt_def_cmpl;
|
||||||
|
|
||||||
lpfc_printf_vlog(vport, KERN_INFO, LOG_FCP,
|
lpfc_printf_vlog(vport, KERN_INFO, LOG_FCP,
|
||||||
"0702 Issue %s to TGT %d LUN %d "
|
"0702 Issue %s to TGT %d LUN %llu "
|
||||||
"rpi x%x nlp_flag x%x Data: x%x x%x\n",
|
"rpi x%x nlp_flag x%x Data: x%x x%x\n",
|
||||||
lpfc_taskmgmt_name(task_mgmt_cmd), tgt_id, lun_id,
|
lpfc_taskmgmt_name(task_mgmt_cmd), tgt_id, lun_id,
|
||||||
pnode->nlp_rpi, pnode->nlp_flag, iocbq->sli4_xritag,
|
pnode->nlp_rpi, pnode->nlp_flag, iocbq->sli4_xritag,
|
||||||
|
@ -5094,7 +5094,7 @@ lpfc_send_taskmgmt(struct lpfc_vport *vport, struct lpfc_rport_data *rdata,
|
||||||
if ((status != IOCB_SUCCESS) ||
|
if ((status != IOCB_SUCCESS) ||
|
||||||
(iocbqrsp->iocb.ulpStatus != IOSTAT_SUCCESS)) {
|
(iocbqrsp->iocb.ulpStatus != IOSTAT_SUCCESS)) {
|
||||||
lpfc_printf_vlog(vport, KERN_ERR, LOG_FCP,
|
lpfc_printf_vlog(vport, KERN_ERR, LOG_FCP,
|
||||||
"0727 TMF %s to TGT %d LUN %d failed (%d, %d) "
|
"0727 TMF %s to TGT %d LUN %llu failed (%d, %d) "
|
||||||
"iocb_flag x%x\n",
|
"iocb_flag x%x\n",
|
||||||
lpfc_taskmgmt_name(task_mgmt_cmd),
|
lpfc_taskmgmt_name(task_mgmt_cmd),
|
||||||
tgt_id, lun_id, iocbqrsp->iocb.ulpStatus,
|
tgt_id, lun_id, iocbqrsp->iocb.ulpStatus,
|
||||||
|
@ -5238,7 +5238,7 @@ lpfc_device_reset_handler(struct scsi_cmnd *cmnd)
|
||||||
struct lpfc_rport_data *rdata;
|
struct lpfc_rport_data *rdata;
|
||||||
struct lpfc_nodelist *pnode;
|
struct lpfc_nodelist *pnode;
|
||||||
unsigned tgt_id = cmnd->device->id;
|
unsigned tgt_id = cmnd->device->id;
|
||||||
unsigned int lun_id = cmnd->device->lun;
|
uint64_t lun_id = cmnd->device->lun;
|
||||||
struct lpfc_scsi_event_header scsi_event;
|
struct lpfc_scsi_event_header scsi_event;
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
|
@ -5273,7 +5273,7 @@ lpfc_device_reset_handler(struct scsi_cmnd *cmnd)
|
||||||
FCP_LUN_RESET);
|
FCP_LUN_RESET);
|
||||||
|
|
||||||
lpfc_printf_vlog(vport, KERN_ERR, LOG_FCP,
|
lpfc_printf_vlog(vport, KERN_ERR, LOG_FCP,
|
||||||
"0713 SCSI layer issued Device Reset (%d, %d) "
|
"0713 SCSI layer issued Device Reset (%d, %llu) "
|
||||||
"return x%x\n", tgt_id, lun_id, status);
|
"return x%x\n", tgt_id, lun_id, status);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -5308,7 +5308,7 @@ lpfc_target_reset_handler(struct scsi_cmnd *cmnd)
|
||||||
struct lpfc_rport_data *rdata;
|
struct lpfc_rport_data *rdata;
|
||||||
struct lpfc_nodelist *pnode;
|
struct lpfc_nodelist *pnode;
|
||||||
unsigned tgt_id = cmnd->device->id;
|
unsigned tgt_id = cmnd->device->id;
|
||||||
unsigned int lun_id = cmnd->device->lun;
|
uint64_t lun_id = cmnd->device->lun;
|
||||||
struct lpfc_scsi_event_header scsi_event;
|
struct lpfc_scsi_event_header scsi_event;
|
||||||
int status;
|
int status;
|
||||||
|
|
||||||
|
@ -5343,7 +5343,7 @@ lpfc_target_reset_handler(struct scsi_cmnd *cmnd)
|
||||||
FCP_TARGET_RESET);
|
FCP_TARGET_RESET);
|
||||||
|
|
||||||
lpfc_printf_vlog(vport, KERN_ERR, LOG_FCP,
|
lpfc_printf_vlog(vport, KERN_ERR, LOG_FCP,
|
||||||
"0723 SCSI layer issued Target Reset (%d, %d) "
|
"0723 SCSI layer issued Target Reset (%d, %llu) "
|
||||||
"return x%x\n", tgt_id, lun_id, status);
|
"return x%x\n", tgt_id, lun_id, status);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1942,7 +1942,7 @@ megaraid_abort_and_reset(adapter_t *adapter, Scsi_Cmnd *cmd, int aor)
|
||||||
printk(KERN_WARNING "megaraid: %s cmd=%x <c=%d t=%d l=%d>\n",
|
printk(KERN_WARNING "megaraid: %s cmd=%x <c=%d t=%d l=%d>\n",
|
||||||
(aor == SCB_ABORT)? "ABORTING":"RESET",
|
(aor == SCB_ABORT)? "ABORTING":"RESET",
|
||||||
cmd->cmnd[0], cmd->device->channel,
|
cmd->cmnd[0], cmd->device->channel,
|
||||||
cmd->device->id, cmd->device->lun);
|
cmd->device->id, (u32)cmd->device->lun);
|
||||||
|
|
||||||
if(list_empty(&adapter->pending_list))
|
if(list_empty(&adapter->pending_list))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
|
@ -204,7 +204,7 @@ typedef struct {
|
||||||
#define SCP2HOSTDATA(scp) SCP2HOST(scp)->hostdata // to soft state
|
#define SCP2HOSTDATA(scp) SCP2HOST(scp)->hostdata // to soft state
|
||||||
#define SCP2CHANNEL(scp) (scp)->device->channel // to channel
|
#define SCP2CHANNEL(scp) (scp)->device->channel // to channel
|
||||||
#define SCP2TARGET(scp) (scp)->device->id // to target
|
#define SCP2TARGET(scp) (scp)->device->id // to target
|
||||||
#define SCP2LUN(scp) (scp)->device->lun // to LUN
|
#define SCP2LUN(scp) (u32)(scp)->device->lun // to LUN
|
||||||
|
|
||||||
// generic macro to convert scsi command and host to controller's soft state
|
// generic macro to convert scsi command and host to controller's soft state
|
||||||
#define SCSIHOST2ADAP(host) (((caddr_t *)(host->hostdata))[0])
|
#define SCSIHOST2ADAP(host) (((caddr_t *)(host->hostdata))[0])
|
||||||
|
|
|
@ -1690,7 +1690,7 @@ megasas_build_dcdb_fusion(struct megasas_instance *instance,
|
||||||
MEGASAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
|
MEGASAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
|
||||||
}
|
}
|
||||||
io_request->RaidContext.VirtualDiskTgtId = cpu_to_le16(device_id);
|
io_request->RaidContext.VirtualDiskTgtId = cpu_to_le16(device_id);
|
||||||
io_request->LUN[1] = scmd->device->lun;
|
int_to_scsilun(scmd->device->lun, (struct scsi_lun *)io_request->LUN);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1713,7 +1713,7 @@ megasas_build_io_fusion(struct megasas_instance *instance,
|
||||||
device_id = MEGASAS_DEV_INDEX(instance, scp);
|
device_id = MEGASAS_DEV_INDEX(instance, scp);
|
||||||
|
|
||||||
/* Zero out some fields so they don't get reused */
|
/* Zero out some fields so they don't get reused */
|
||||||
io_request->LUN[1] = 0;
|
memset(io_request->LUN, 0x0, 8);
|
||||||
io_request->CDB.EEDP32.PrimaryReferenceTag = 0;
|
io_request->CDB.EEDP32.PrimaryReferenceTag = 0;
|
||||||
io_request->CDB.EEDP32.PrimaryApplicationTagMask = 0;
|
io_request->CDB.EEDP32.PrimaryApplicationTagMask = 0;
|
||||||
io_request->EEDPFlags = 0;
|
io_request->EEDPFlags = 0;
|
||||||
|
|
|
@ -1230,7 +1230,7 @@ static void handle_msgin(struct mesh_state *ms)
|
||||||
ms->msgphase = msg_out;
|
ms->msgphase = msg_out;
|
||||||
} else if (code != cmd->device->lun + IDENTIFY_BASE) {
|
} else if (code != cmd->device->lun + IDENTIFY_BASE) {
|
||||||
printk(KERN_WARNING "mesh: lun mismatch "
|
printk(KERN_WARNING "mesh: lun mismatch "
|
||||||
"(%d != %d) on reselection from "
|
"(%d != %llu) on reselection from "
|
||||||
"target %d\n", code - IDENTIFY_BASE,
|
"target %d\n", code - IDENTIFY_BASE,
|
||||||
cmd->device->lun, ms->conn_tgt);
|
cmd->device->lun, ms->conn_tgt);
|
||||||
}
|
}
|
||||||
|
|
|
@ -6633,7 +6633,7 @@ static void ncr_sir_to_redo(struct ncb *np, int num, struct ccb *cp)
|
||||||
** patch requested size into sense command
|
** patch requested size into sense command
|
||||||
*/
|
*/
|
||||||
cp->sensecmd[0] = 0x03;
|
cp->sensecmd[0] = 0x03;
|
||||||
cp->sensecmd[1] = cmd->device->lun << 5;
|
cp->sensecmd[1] = (cmd->device->lun & 0x7) << 5;
|
||||||
cp->sensecmd[4] = sizeof(cp->sense_buf);
|
cp->sensecmd[4] = sizeof(cp->sense_buf);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -915,7 +915,7 @@ static int nsp32_queuecommand_lck(struct scsi_cmnd *SCpnt, void (*done)(struct s
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
nsp32_dbg(NSP32_DEBUG_QUEUECOMMAND,
|
nsp32_dbg(NSP32_DEBUG_QUEUECOMMAND,
|
||||||
"enter. target: 0x%x LUN: 0x%x cmnd: 0x%x cmndlen: 0x%x "
|
"enter. target: 0x%x LUN: 0x%llu cmnd: 0x%x cmndlen: 0x%x "
|
||||||
"use_sg: 0x%x reqbuf: 0x%lx reqlen: 0x%x",
|
"use_sg: 0x%x reqbuf: 0x%lx reqlen: 0x%x",
|
||||||
SCpnt->device->id, SCpnt->device->lun, SCpnt->cmnd[0], SCpnt->cmd_len,
|
SCpnt->device->id, SCpnt->device->lun, SCpnt->cmnd[0], SCpnt->cmd_len,
|
||||||
scsi_sg_count(SCpnt), scsi_sglist(SCpnt), scsi_bufflen(SCpnt));
|
scsi_sg_count(SCpnt), scsi_sglist(SCpnt), scsi_bufflen(SCpnt));
|
||||||
|
|
|
@ -195,7 +195,7 @@ static int nsp_queuecommand_lck(struct scsi_cmnd *SCpnt,
|
||||||
nsp_hw_data *data = (nsp_hw_data *)SCpnt->device->host->hostdata;
|
nsp_hw_data *data = (nsp_hw_data *)SCpnt->device->host->hostdata;
|
||||||
|
|
||||||
nsp_dbg(NSP_DEBUG_QUEUECOMMAND,
|
nsp_dbg(NSP_DEBUG_QUEUECOMMAND,
|
||||||
"SCpnt=0x%p target=%d lun=%d sglist=0x%p bufflen=%d sg_count=%d",
|
"SCpnt=0x%p target=%d lun=%llu sglist=0x%p bufflen=%d sg_count=%d",
|
||||||
SCpnt, target, SCpnt->device->lun, scsi_sglist(SCpnt),
|
SCpnt, target, SCpnt->device->lun, scsi_sglist(SCpnt),
|
||||||
scsi_bufflen(SCpnt), scsi_sg_count(SCpnt));
|
scsi_bufflen(SCpnt), scsi_sg_count(SCpnt));
|
||||||
//nsp_dbg(NSP_DEBUG_QUEUECOMMAND, "before CurrentSC=0x%p", data->CurrentSC);
|
//nsp_dbg(NSP_DEBUG_QUEUECOMMAND, "before CurrentSC=0x%p", data->CurrentSC);
|
||||||
|
|
|
@ -558,7 +558,7 @@ SYM53C500_queue_lck(struct scsi_cmnd *SCpnt, void (*done)(struct scsi_cmnd *))
|
||||||
|
|
||||||
DEB(printk("cmd=%02x, cmd_len=%02x, target=%02x, lun=%02x, bufflen=%d\n",
|
DEB(printk("cmd=%02x, cmd_len=%02x, target=%02x, lun=%02x, bufflen=%d\n",
|
||||||
SCpnt->cmnd[0], SCpnt->cmd_len, SCpnt->device->id,
|
SCpnt->cmnd[0], SCpnt->cmd_len, SCpnt->device->id,
|
||||||
SCpnt->device->lun, scsi_bufflen(SCpnt)));
|
(u8)SCpnt->device->lun, scsi_bufflen(SCpnt)));
|
||||||
|
|
||||||
VDEB(for (i = 0; i < SCpnt->cmd_len; i++)
|
VDEB(for (i = 0; i < SCpnt->cmd_len; i++)
|
||||||
printk("cmd[%d]=%02x ", i, SCpnt->cmnd[i]));
|
printk("cmd[%d]=%02x ", i, SCpnt->cmnd[i]));
|
||||||
|
|
|
@ -237,7 +237,7 @@ static int pmcraid_slave_configure(struct scsi_device *scsi_dev)
|
||||||
scsi_dev->host->unique_id,
|
scsi_dev->host->unique_id,
|
||||||
scsi_dev->channel,
|
scsi_dev->channel,
|
||||||
scsi_dev->id,
|
scsi_dev->id,
|
||||||
scsi_dev->lun);
|
(u8)scsi_dev->lun);
|
||||||
|
|
||||||
if (RES_IS_GSCSI(res->cfg_entry)) {
|
if (RES_IS_GSCSI(res->cfg_entry)) {
|
||||||
scsi_dev->allow_restart = 1;
|
scsi_dev->allow_restart = 1;
|
||||||
|
|
|
@ -78,7 +78,7 @@ static int ps3rom_slave_configure(struct scsi_device *scsi_dev)
|
||||||
struct ps3rom_private *priv = shost_priv(scsi_dev->host);
|
struct ps3rom_private *priv = shost_priv(scsi_dev->host);
|
||||||
struct ps3_storage_device *dev = priv->dev;
|
struct ps3_storage_device *dev = priv->dev;
|
||||||
|
|
||||||
dev_dbg(&dev->sbd.core, "%s:%u: id %u, lun %u, channel %u\n", __func__,
|
dev_dbg(&dev->sbd.core, "%s:%u: id %u, lun %llu, channel %u\n", __func__,
|
||||||
__LINE__, scsi_dev->id, scsi_dev->lun, scsi_dev->channel);
|
__LINE__, scsi_dev->id, scsi_dev->lun, scsi_dev->channel);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -320,8 +320,8 @@ struct srb_iocb {
|
||||||
* defined in tsk_mgmt_entry struct
|
* defined in tsk_mgmt_entry struct
|
||||||
* for control_flags field in qla_fw.h.
|
* for control_flags field in qla_fw.h.
|
||||||
*/
|
*/
|
||||||
|
uint64_t lun;
|
||||||
uint32_t flags;
|
uint32_t flags;
|
||||||
uint32_t lun;
|
|
||||||
uint32_t data;
|
uint32_t data;
|
||||||
struct completion comp;
|
struct completion comp;
|
||||||
__le16 comp_status;
|
__le16 comp_status;
|
||||||
|
@ -2529,8 +2529,8 @@ struct isp_operations {
|
||||||
void (*disable_intrs) (struct qla_hw_data *);
|
void (*disable_intrs) (struct qla_hw_data *);
|
||||||
|
|
||||||
int (*abort_command) (srb_t *);
|
int (*abort_command) (srb_t *);
|
||||||
int (*target_reset) (struct fc_port *, unsigned int, int);
|
int (*target_reset) (struct fc_port *, uint64_t, int);
|
||||||
int (*lun_reset) (struct fc_port *, unsigned int, int);
|
int (*lun_reset) (struct fc_port *, uint64_t, int);
|
||||||
int (*fabric_login) (struct scsi_qla_host *, uint16_t, uint8_t,
|
int (*fabric_login) (struct scsi_qla_host *, uint16_t, uint8_t,
|
||||||
uint8_t, uint8_t, uint16_t *, uint8_t);
|
uint8_t, uint8_t, uint16_t *, uint8_t);
|
||||||
int (*fabric_logout) (struct scsi_qla_host *, uint16_t, uint8_t,
|
int (*fabric_logout) (struct scsi_qla_host *, uint16_t, uint8_t,
|
||||||
|
|
|
@ -212,7 +212,7 @@ extern void qla2x00_build_scsi_iocbs_64(srb_t *, cmd_entry_t *, uint16_t);
|
||||||
extern int qla2x00_start_scsi(srb_t *sp);
|
extern int qla2x00_start_scsi(srb_t *sp);
|
||||||
extern int qla24xx_start_scsi(srb_t *sp);
|
extern int qla24xx_start_scsi(srb_t *sp);
|
||||||
int qla2x00_marker(struct scsi_qla_host *, struct req_que *, struct rsp_que *,
|
int qla2x00_marker(struct scsi_qla_host *, struct req_que *, struct rsp_que *,
|
||||||
uint16_t, uint16_t, uint8_t);
|
uint16_t, uint64_t, uint8_t);
|
||||||
extern int qla2x00_start_sp(srb_t *);
|
extern int qla2x00_start_sp(srb_t *);
|
||||||
extern int qla24xx_dif_start_scsi(srb_t *);
|
extern int qla24xx_dif_start_scsi(srb_t *);
|
||||||
extern int qla2x00_start_bidir(srb_t *, struct scsi_qla_host *, uint32_t);
|
extern int qla2x00_start_bidir(srb_t *, struct scsi_qla_host *, uint32_t);
|
||||||
|
@ -262,10 +262,10 @@ extern int
|
||||||
qla2x00_abort_command(srb_t *);
|
qla2x00_abort_command(srb_t *);
|
||||||
|
|
||||||
extern int
|
extern int
|
||||||
qla2x00_abort_target(struct fc_port *, unsigned int, int);
|
qla2x00_abort_target(struct fc_port *, uint64_t, int);
|
||||||
|
|
||||||
extern int
|
extern int
|
||||||
qla2x00_lun_reset(struct fc_port *, unsigned int, int);
|
qla2x00_lun_reset(struct fc_port *, uint64_t, int);
|
||||||
|
|
||||||
extern int
|
extern int
|
||||||
qla2x00_get_adapter_id(scsi_qla_host_t *, uint16_t *, uint8_t *, uint8_t *,
|
qla2x00_get_adapter_id(scsi_qla_host_t *, uint16_t *, uint8_t *, uint8_t *,
|
||||||
|
@ -339,12 +339,12 @@ qla24xx_get_isp_stats(scsi_qla_host_t *, struct link_statistics *,
|
||||||
extern int qla24xx_abort_command(srb_t *);
|
extern int qla24xx_abort_command(srb_t *);
|
||||||
extern int qla24xx_async_abort_command(srb_t *);
|
extern int qla24xx_async_abort_command(srb_t *);
|
||||||
extern int
|
extern int
|
||||||
qla24xx_abort_target(struct fc_port *, unsigned int, int);
|
qla24xx_abort_target(struct fc_port *, uint64_t, int);
|
||||||
extern int
|
extern int
|
||||||
qla24xx_lun_reset(struct fc_port *, unsigned int, int);
|
qla24xx_lun_reset(struct fc_port *, uint64_t, int);
|
||||||
extern int
|
extern int
|
||||||
qla2x00_eh_wait_for_pending_commands(scsi_qla_host_t *, unsigned int,
|
qla2x00_eh_wait_for_pending_commands(scsi_qla_host_t *, unsigned int,
|
||||||
unsigned int, enum nexus_wait_type);
|
uint64_t, enum nexus_wait_type);
|
||||||
extern int
|
extern int
|
||||||
qla2x00_system_error(scsi_qla_host_t *);
|
qla2x00_system_error(scsi_qla_host_t *);
|
||||||
|
|
||||||
|
@ -617,8 +617,8 @@ extern char *qlafx00_fw_version_str(struct scsi_qla_host *, char *);
|
||||||
extern irqreturn_t qlafx00_intr_handler(int, void *);
|
extern irqreturn_t qlafx00_intr_handler(int, void *);
|
||||||
extern void qlafx00_enable_intrs(struct qla_hw_data *);
|
extern void qlafx00_enable_intrs(struct qla_hw_data *);
|
||||||
extern void qlafx00_disable_intrs(struct qla_hw_data *);
|
extern void qlafx00_disable_intrs(struct qla_hw_data *);
|
||||||
extern int qlafx00_abort_target(fc_port_t *, unsigned int, int);
|
extern int qlafx00_abort_target(fc_port_t *, uint64_t, int);
|
||||||
extern int qlafx00_lun_reset(fc_port_t *, unsigned int, int);
|
extern int qlafx00_lun_reset(fc_port_t *, uint64_t, int);
|
||||||
extern int qlafx00_start_scsi(srb_t *);
|
extern int qlafx00_start_scsi(srb_t *);
|
||||||
extern int qlafx00_abort_isp(scsi_qla_host_t *);
|
extern int qlafx00_abort_isp(scsi_qla_host_t *);
|
||||||
extern int qlafx00_iospace_config(struct qla_hw_data *);
|
extern int qlafx00_iospace_config(struct qla_hw_data *);
|
||||||
|
|
|
@ -520,7 +520,7 @@ qla2x00_start_iocbs(struct scsi_qla_host *vha, struct req_que *req)
|
||||||
static int
|
static int
|
||||||
__qla2x00_marker(struct scsi_qla_host *vha, struct req_que *req,
|
__qla2x00_marker(struct scsi_qla_host *vha, struct req_que *req,
|
||||||
struct rsp_que *rsp, uint16_t loop_id,
|
struct rsp_que *rsp, uint16_t loop_id,
|
||||||
uint16_t lun, uint8_t type)
|
uint64_t lun, uint8_t type)
|
||||||
{
|
{
|
||||||
mrk_entry_t *mrk;
|
mrk_entry_t *mrk;
|
||||||
struct mrk_entry_24xx *mrk24 = NULL;
|
struct mrk_entry_24xx *mrk24 = NULL;
|
||||||
|
@ -543,14 +543,13 @@ __qla2x00_marker(struct scsi_qla_host *vha, struct req_que *req,
|
||||||
if (IS_FWI2_CAPABLE(ha)) {
|
if (IS_FWI2_CAPABLE(ha)) {
|
||||||
mrk24 = (struct mrk_entry_24xx *) mrk;
|
mrk24 = (struct mrk_entry_24xx *) mrk;
|
||||||
mrk24->nport_handle = cpu_to_le16(loop_id);
|
mrk24->nport_handle = cpu_to_le16(loop_id);
|
||||||
mrk24->lun[1] = LSB(lun);
|
int_to_scsilun(lun, (struct scsi_lun *)&mrk24->lun);
|
||||||
mrk24->lun[2] = MSB(lun);
|
|
||||||
host_to_fcp_swap(mrk24->lun, sizeof(mrk24->lun));
|
host_to_fcp_swap(mrk24->lun, sizeof(mrk24->lun));
|
||||||
mrk24->vp_index = vha->vp_idx;
|
mrk24->vp_index = vha->vp_idx;
|
||||||
mrk24->handle = MAKE_HANDLE(req->id, mrk24->handle);
|
mrk24->handle = MAKE_HANDLE(req->id, mrk24->handle);
|
||||||
} else {
|
} else {
|
||||||
SET_TARGET_ID(ha, mrk->target, loop_id);
|
SET_TARGET_ID(ha, mrk->target, loop_id);
|
||||||
mrk->lun = cpu_to_le16(lun);
|
mrk->lun = cpu_to_le16((uint16_t)lun);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
wmb();
|
wmb();
|
||||||
|
@ -562,7 +561,7 @@ __qla2x00_marker(struct scsi_qla_host *vha, struct req_que *req,
|
||||||
|
|
||||||
int
|
int
|
||||||
qla2x00_marker(struct scsi_qla_host *vha, struct req_que *req,
|
qla2x00_marker(struct scsi_qla_host *vha, struct req_que *req,
|
||||||
struct rsp_que *rsp, uint16_t loop_id, uint16_t lun,
|
struct rsp_que *rsp, uint16_t loop_id, uint64_t lun,
|
||||||
uint8_t type)
|
uint8_t type)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -2047,7 +2046,7 @@ static void
|
||||||
qla24xx_tm_iocb(srb_t *sp, struct tsk_mgmt_entry *tsk)
|
qla24xx_tm_iocb(srb_t *sp, struct tsk_mgmt_entry *tsk)
|
||||||
{
|
{
|
||||||
uint32_t flags;
|
uint32_t flags;
|
||||||
unsigned int lun;
|
uint64_t lun;
|
||||||
struct fc_port *fcport = sp->fcport;
|
struct fc_port *fcport = sp->fcport;
|
||||||
scsi_qla_host_t *vha = fcport->vha;
|
scsi_qla_host_t *vha = fcport->vha;
|
||||||
struct qla_hw_data *ha = vha->hw;
|
struct qla_hw_data *ha = vha->hw;
|
||||||
|
|
|
@ -1659,7 +1659,7 @@ qla2x00_handle_sense(srb_t *sp, uint8_t *sense_data, uint32_t par_sense_len,
|
||||||
|
|
||||||
if (sense_len) {
|
if (sense_len) {
|
||||||
ql_dbg(ql_dbg_io + ql_dbg_buffer, vha, 0x301c,
|
ql_dbg(ql_dbg_io + ql_dbg_buffer, vha, 0x301c,
|
||||||
"Check condition Sense data, nexus%ld:%d:%d cmd=%p.\n",
|
"Check condition Sense data, nexus%ld:%d:%llu cmd=%p.\n",
|
||||||
sp->fcport->vha->host_no, cp->device->id, cp->device->lun,
|
sp->fcport->vha->host_no, cp->device->id, cp->device->lun,
|
||||||
cp);
|
cp);
|
||||||
ql_dump_buffer(ql_dbg_io + ql_dbg_buffer, vha, 0x302b,
|
ql_dump_buffer(ql_dbg_io + ql_dbg_buffer, vha, 0x302b,
|
||||||
|
@ -2281,7 +2281,7 @@ qla2x00_status_entry(scsi_qla_host_t *vha, struct rsp_que *rsp, void *pkt)
|
||||||
out:
|
out:
|
||||||
if (logit)
|
if (logit)
|
||||||
ql_dbg(ql_dbg_io, fcport->vha, 0x3022,
|
ql_dbg(ql_dbg_io, fcport->vha, 0x3022,
|
||||||
"FCP command status: 0x%x-0x%x (0x%x) nexus=%ld:%d:%d "
|
"FCP command status: 0x%x-0x%x (0x%x) nexus=%ld:%d:%llu "
|
||||||
"portid=%02x%02x%02x oxid=0x%x cdb=%10phN len=0x%x "
|
"portid=%02x%02x%02x oxid=0x%x cdb=%10phN len=0x%x "
|
||||||
"rsp_info=0x%x resid=0x%x fw_resid=0x%x.\n",
|
"rsp_info=0x%x resid=0x%x fw_resid=0x%x.\n",
|
||||||
comp_status, scsi_status, res, vha->host_no,
|
comp_status, scsi_status, res, vha->host_no,
|
||||||
|
|
|
@ -947,7 +947,7 @@ qla2x00_abort_command(srb_t *sp)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
qla2x00_abort_target(struct fc_port *fcport, unsigned int l, int tag)
|
qla2x00_abort_target(struct fc_port *fcport, uint64_t l, int tag)
|
||||||
{
|
{
|
||||||
int rval, rval2;
|
int rval, rval2;
|
||||||
mbx_cmd_t mc;
|
mbx_cmd_t mc;
|
||||||
|
@ -1000,7 +1000,7 @@ qla2x00_abort_target(struct fc_port *fcport, unsigned int l, int tag)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
qla2x00_lun_reset(struct fc_port *fcport, unsigned int l, int tag)
|
qla2x00_lun_reset(struct fc_port *fcport, uint64_t l, int tag)
|
||||||
{
|
{
|
||||||
int rval, rval2;
|
int rval, rval2;
|
||||||
mbx_cmd_t mc;
|
mbx_cmd_t mc;
|
||||||
|
@ -1022,7 +1022,7 @@ qla2x00_lun_reset(struct fc_port *fcport, unsigned int l, int tag)
|
||||||
mcp->mb[1] = fcport->loop_id;
|
mcp->mb[1] = fcport->loop_id;
|
||||||
else
|
else
|
||||||
mcp->mb[1] = fcport->loop_id << 8;
|
mcp->mb[1] = fcport->loop_id << 8;
|
||||||
mcp->mb[2] = l;
|
mcp->mb[2] = (u32)l;
|
||||||
mcp->mb[3] = 0;
|
mcp->mb[3] = 0;
|
||||||
mcp->mb[9] = vha->vp_idx;
|
mcp->mb[9] = vha->vp_idx;
|
||||||
|
|
||||||
|
@ -2666,7 +2666,7 @@ struct tsk_mgmt_cmd {
|
||||||
|
|
||||||
static int
|
static int
|
||||||
__qla24xx_issue_tmf(char *name, uint32_t type, struct fc_port *fcport,
|
__qla24xx_issue_tmf(char *name, uint32_t type, struct fc_port *fcport,
|
||||||
unsigned int l, int tag)
|
uint64_t l, int tag)
|
||||||
{
|
{
|
||||||
int rval, rval2;
|
int rval, rval2;
|
||||||
struct tsk_mgmt_cmd *tsk;
|
struct tsk_mgmt_cmd *tsk;
|
||||||
|
@ -2760,7 +2760,7 @@ __qla24xx_issue_tmf(char *name, uint32_t type, struct fc_port *fcport,
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
qla24xx_abort_target(struct fc_port *fcport, unsigned int l, int tag)
|
qla24xx_abort_target(struct fc_port *fcport, uint64_t l, int tag)
|
||||||
{
|
{
|
||||||
struct qla_hw_data *ha = fcport->vha->hw;
|
struct qla_hw_data *ha = fcport->vha->hw;
|
||||||
|
|
||||||
|
@ -2771,7 +2771,7 @@ qla24xx_abort_target(struct fc_port *fcport, unsigned int l, int tag)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
qla24xx_lun_reset(struct fc_port *fcport, unsigned int l, int tag)
|
qla24xx_lun_reset(struct fc_port *fcport, uint64_t l, int tag)
|
||||||
{
|
{
|
||||||
struct qla_hw_data *ha = fcport->vha->hw;
|
struct qla_hw_data *ha = fcport->vha->hw;
|
||||||
|
|
||||||
|
|
|
@ -726,13 +726,13 @@ qlafx00_disable_intrs(struct qla_hw_data *ha)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
qlafx00_abort_target(fc_port_t *fcport, unsigned int l, int tag)
|
qlafx00_abort_target(fc_port_t *fcport, uint64_t l, int tag)
|
||||||
{
|
{
|
||||||
return qla2x00_async_tm_cmd(fcport, TCF_TARGET_RESET, l, tag);
|
return qla2x00_async_tm_cmd(fcport, TCF_TARGET_RESET, l, tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
qlafx00_lun_reset(fc_port_t *fcport, unsigned int l, int tag)
|
qlafx00_lun_reset(fc_port_t *fcport, uint64_t l, int tag)
|
||||||
{
|
{
|
||||||
return qla2x00_async_tm_cmd(fcport, TCF_LUN_RESET, l, tag);
|
return qla2x00_async_tm_cmd(fcport, TCF_LUN_RESET, l, tag);
|
||||||
}
|
}
|
||||||
|
@ -2159,7 +2159,7 @@ qlafx00_handle_sense(srb_t *sp, uint8_t *sense_data, uint32_t par_sense_len,
|
||||||
|
|
||||||
if (sense_len) {
|
if (sense_len) {
|
||||||
ql_dbg(ql_dbg_io + ql_dbg_buffer, vha, 0x3039,
|
ql_dbg(ql_dbg_io + ql_dbg_buffer, vha, 0x3039,
|
||||||
"Check condition Sense data, nexus%ld:%d:%d cmd=%p.\n",
|
"Check condition Sense data, nexus%ld:%d:%llu cmd=%p.\n",
|
||||||
sp->fcport->vha->host_no, cp->device->id, cp->device->lun,
|
sp->fcport->vha->host_no, cp->device->id, cp->device->lun,
|
||||||
cp);
|
cp);
|
||||||
ql_dump_buffer(ql_dbg_io + ql_dbg_buffer, vha, 0x3049,
|
ql_dump_buffer(ql_dbg_io + ql_dbg_buffer, vha, 0x3049,
|
||||||
|
@ -2524,7 +2524,7 @@ qlafx00_status_entry(scsi_qla_host_t *vha, struct rsp_que *rsp, void *pkt)
|
||||||
|
|
||||||
if (logit)
|
if (logit)
|
||||||
ql_dbg(ql_dbg_io, fcport->vha, 0x3058,
|
ql_dbg(ql_dbg_io, fcport->vha, 0x3058,
|
||||||
"FCP command status: 0x%x-0x%x (0x%x) nexus=%ld:%d:%d "
|
"FCP command status: 0x%x-0x%x (0x%x) nexus=%ld:%d:%llu "
|
||||||
"tgt_id: 0x%x lscsi_status: 0x%x cdb=%10phN len=0x%x "
|
"tgt_id: 0x%x lscsi_status: 0x%x cdb=%10phN len=0x%x "
|
||||||
"rsp_info=0x%x resid=0x%x fw_resid=0x%x sense_len=0x%x, "
|
"rsp_info=0x%x resid=0x%x fw_resid=0x%x sense_len=0x%x, "
|
||||||
"par_sense_len=0x%x, rsp_info_len=0x%x\n",
|
"par_sense_len=0x%x, rsp_info_len=0x%x\n",
|
||||||
|
|
|
@ -920,7 +920,8 @@ qla2xxx_eh_abort(struct scsi_cmnd *cmd)
|
||||||
scsi_qla_host_t *vha = shost_priv(cmd->device->host);
|
scsi_qla_host_t *vha = shost_priv(cmd->device->host);
|
||||||
srb_t *sp;
|
srb_t *sp;
|
||||||
int ret;
|
int ret;
|
||||||
unsigned int id, lun;
|
unsigned int id;
|
||||||
|
uint64_t lun;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
int rval, wait = 0;
|
int rval, wait = 0;
|
||||||
struct qla_hw_data *ha = vha->hw;
|
struct qla_hw_data *ha = vha->hw;
|
||||||
|
@ -944,7 +945,7 @@ qla2xxx_eh_abort(struct scsi_cmnd *cmd)
|
||||||
}
|
}
|
||||||
|
|
||||||
ql_dbg(ql_dbg_taskm, vha, 0x8002,
|
ql_dbg(ql_dbg_taskm, vha, 0x8002,
|
||||||
"Aborting from RISC nexus=%ld:%d:%d sp=%p cmd=%p\n",
|
"Aborting from RISC nexus=%ld:%d:%llu sp=%p cmd=%p\n",
|
||||||
vha->host_no, id, lun, sp, cmd);
|
vha->host_no, id, lun, sp, cmd);
|
||||||
|
|
||||||
/* Get a reference to the sp and drop the lock.*/
|
/* Get a reference to the sp and drop the lock.*/
|
||||||
|
@ -995,7 +996,7 @@ qla2xxx_eh_abort(struct scsi_cmnd *cmd)
|
||||||
}
|
}
|
||||||
|
|
||||||
ql_log(ql_log_info, vha, 0x801c,
|
ql_log(ql_log_info, vha, 0x801c,
|
||||||
"Abort command issued nexus=%ld:%d:%d -- %d %x.\n",
|
"Abort command issued nexus=%ld:%d:%llu -- %d %x.\n",
|
||||||
vha->host_no, id, lun, wait, ret);
|
vha->host_no, id, lun, wait, ret);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -1003,7 +1004,7 @@ qla2xxx_eh_abort(struct scsi_cmnd *cmd)
|
||||||
|
|
||||||
int
|
int
|
||||||
qla2x00_eh_wait_for_pending_commands(scsi_qla_host_t *vha, unsigned int t,
|
qla2x00_eh_wait_for_pending_commands(scsi_qla_host_t *vha, unsigned int t,
|
||||||
unsigned int l, enum nexus_wait_type type)
|
uint64_t l, enum nexus_wait_type type)
|
||||||
{
|
{
|
||||||
int cnt, match, status;
|
int cnt, match, status;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
@ -1060,7 +1061,7 @@ static char *reset_errors[] = {
|
||||||
|
|
||||||
static int
|
static int
|
||||||
__qla2xxx_eh_generic_reset(char *name, enum nexus_wait_type type,
|
__qla2xxx_eh_generic_reset(char *name, enum nexus_wait_type type,
|
||||||
struct scsi_cmnd *cmd, int (*do_reset)(struct fc_port *, unsigned int, int))
|
struct scsi_cmnd *cmd, int (*do_reset)(struct fc_port *, uint64_t, int))
|
||||||
{
|
{
|
||||||
scsi_qla_host_t *vha = shost_priv(cmd->device->host);
|
scsi_qla_host_t *vha = shost_priv(cmd->device->host);
|
||||||
fc_port_t *fcport = (struct fc_port *) cmd->device->hostdata;
|
fc_port_t *fcport = (struct fc_port *) cmd->device->hostdata;
|
||||||
|
@ -1075,7 +1076,7 @@ __qla2xxx_eh_generic_reset(char *name, enum nexus_wait_type type,
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
ql_log(ql_log_info, vha, 0x8009,
|
ql_log(ql_log_info, vha, 0x8009,
|
||||||
"%s RESET ISSUED nexus=%ld:%d:%d cmd=%p.\n", name, vha->host_no,
|
"%s RESET ISSUED nexus=%ld:%d:%llu cmd=%p.\n", name, vha->host_no,
|
||||||
cmd->device->id, cmd->device->lun, cmd);
|
cmd->device->id, cmd->device->lun, cmd);
|
||||||
|
|
||||||
err = 0;
|
err = 0;
|
||||||
|
@ -1100,14 +1101,14 @@ __qla2xxx_eh_generic_reset(char *name, enum nexus_wait_type type,
|
||||||
}
|
}
|
||||||
|
|
||||||
ql_log(ql_log_info, vha, 0x800e,
|
ql_log(ql_log_info, vha, 0x800e,
|
||||||
"%s RESET SUCCEEDED nexus:%ld:%d:%d cmd=%p.\n", name,
|
"%s RESET SUCCEEDED nexus:%ld:%d:%llu cmd=%p.\n", name,
|
||||||
vha->host_no, cmd->device->id, cmd->device->lun, cmd);
|
vha->host_no, cmd->device->id, cmd->device->lun, cmd);
|
||||||
|
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
|
|
||||||
eh_reset_failed:
|
eh_reset_failed:
|
||||||
ql_log(ql_log_info, vha, 0x800f,
|
ql_log(ql_log_info, vha, 0x800f,
|
||||||
"%s RESET FAILED: %s nexus=%ld:%d:%d cmd=%p.\n", name,
|
"%s RESET FAILED: %s nexus=%ld:%d:%llu cmd=%p.\n", name,
|
||||||
reset_errors[err], vha->host_no, cmd->device->id, cmd->device->lun,
|
reset_errors[err], vha->host_no, cmd->device->id, cmd->device->lun,
|
||||||
cmd);
|
cmd);
|
||||||
return FAILED;
|
return FAILED;
|
||||||
|
@ -1154,7 +1155,8 @@ qla2xxx_eh_bus_reset(struct scsi_cmnd *cmd)
|
||||||
scsi_qla_host_t *vha = shost_priv(cmd->device->host);
|
scsi_qla_host_t *vha = shost_priv(cmd->device->host);
|
||||||
fc_port_t *fcport = (struct fc_port *) cmd->device->hostdata;
|
fc_port_t *fcport = (struct fc_port *) cmd->device->hostdata;
|
||||||
int ret = FAILED;
|
int ret = FAILED;
|
||||||
unsigned int id, lun;
|
unsigned int id;
|
||||||
|
uint64_t lun;
|
||||||
|
|
||||||
id = cmd->device->id;
|
id = cmd->device->id;
|
||||||
lun = cmd->device->lun;
|
lun = cmd->device->lun;
|
||||||
|
@ -1169,7 +1171,7 @@ qla2xxx_eh_bus_reset(struct scsi_cmnd *cmd)
|
||||||
ret = FAILED;
|
ret = FAILED;
|
||||||
|
|
||||||
ql_log(ql_log_info, vha, 0x8012,
|
ql_log(ql_log_info, vha, 0x8012,
|
||||||
"BUS RESET ISSUED nexus=%ld:%d:%d.\n", vha->host_no, id, lun);
|
"BUS RESET ISSUED nexus=%ld:%d:%llu.\n", vha->host_no, id, lun);
|
||||||
|
|
||||||
if (qla2x00_wait_for_hba_online(vha) != QLA_SUCCESS) {
|
if (qla2x00_wait_for_hba_online(vha) != QLA_SUCCESS) {
|
||||||
ql_log(ql_log_fatal, vha, 0x8013,
|
ql_log(ql_log_fatal, vha, 0x8013,
|
||||||
|
@ -1193,7 +1195,7 @@ qla2xxx_eh_bus_reset(struct scsi_cmnd *cmd)
|
||||||
|
|
||||||
eh_bus_reset_done:
|
eh_bus_reset_done:
|
||||||
ql_log(ql_log_warn, vha, 0x802b,
|
ql_log(ql_log_warn, vha, 0x802b,
|
||||||
"BUS RESET %s nexus=%ld:%d:%d.\n",
|
"BUS RESET %s nexus=%ld:%d:%llu.\n",
|
||||||
(ret == FAILED) ? "FAILED" : "SUCCEEDED", vha->host_no, id, lun);
|
(ret == FAILED) ? "FAILED" : "SUCCEEDED", vha->host_no, id, lun);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -1220,14 +1222,15 @@ qla2xxx_eh_host_reset(struct scsi_cmnd *cmd)
|
||||||
scsi_qla_host_t *vha = shost_priv(cmd->device->host);
|
scsi_qla_host_t *vha = shost_priv(cmd->device->host);
|
||||||
struct qla_hw_data *ha = vha->hw;
|
struct qla_hw_data *ha = vha->hw;
|
||||||
int ret = FAILED;
|
int ret = FAILED;
|
||||||
unsigned int id, lun;
|
unsigned int id;
|
||||||
|
uint64_t lun;
|
||||||
scsi_qla_host_t *base_vha = pci_get_drvdata(ha->pdev);
|
scsi_qla_host_t *base_vha = pci_get_drvdata(ha->pdev);
|
||||||
|
|
||||||
id = cmd->device->id;
|
id = cmd->device->id;
|
||||||
lun = cmd->device->lun;
|
lun = cmd->device->lun;
|
||||||
|
|
||||||
ql_log(ql_log_info, vha, 0x8018,
|
ql_log(ql_log_info, vha, 0x8018,
|
||||||
"ADAPTER RESET ISSUED nexus=%ld:%d:%d.\n", vha->host_no, id, lun);
|
"ADAPTER RESET ISSUED nexus=%ld:%d:%llu.\n", vha->host_no, id, lun);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* No point in issuing another reset if one is active. Also do not
|
* No point in issuing another reset if one is active. Also do not
|
||||||
|
@ -1273,7 +1276,7 @@ qla2xxx_eh_host_reset(struct scsi_cmnd *cmd)
|
||||||
|
|
||||||
eh_host_reset_lock:
|
eh_host_reset_lock:
|
||||||
ql_log(ql_log_info, vha, 0x8017,
|
ql_log(ql_log_info, vha, 0x8017,
|
||||||
"ADAPTER RESET %s nexus=%ld:%d:%d.\n",
|
"ADAPTER RESET %s nexus=%ld:%d:%llu.\n",
|
||||||
(ret == FAILED) ? "FAILED" : "SUCCEEDED", vha->host_no, id, lun);
|
(ret == FAILED) ? "FAILED" : "SUCCEEDED", vha->host_no, id, lun);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -1409,7 +1412,7 @@ static void qla2x00_handle_queue_full(struct scsi_device *sdev, int qdepth)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ql_dbg(ql_dbg_io, fcport->vha, 0x3029,
|
ql_dbg(ql_dbg_io, fcport->vha, 0x3029,
|
||||||
"Queue depth adjusted-down to %d for nexus=%ld:%d:%d.\n",
|
"Queue depth adjusted-down to %d for nexus=%ld:%d:%llu.\n",
|
||||||
sdev->queue_depth, fcport->vha->host_no, sdev->id, sdev->lun);
|
sdev->queue_depth, fcport->vha->host_no, sdev->id, sdev->lun);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1432,7 +1435,7 @@ static void qla2x00_adjust_sdev_qdepth_up(struct scsi_device *sdev, int qdepth)
|
||||||
scsi_adjust_queue_depth(sdev, MSG_SIMPLE_TAG, qdepth);
|
scsi_adjust_queue_depth(sdev, MSG_SIMPLE_TAG, qdepth);
|
||||||
|
|
||||||
ql_dbg(ql_dbg_io, vha, 0x302a,
|
ql_dbg(ql_dbg_io, vha, 0x302a,
|
||||||
"Queue depth adjusted-up to %d for nexus=%ld:%d:%d.\n",
|
"Queue depth adjusted-up to %d for nexus=%ld:%d:%llu.\n",
|
||||||
sdev->queue_depth, fcport->vha->host_no, sdev->id, sdev->lun);
|
sdev->queue_depth, fcport->vha->host_no, sdev->id, sdev->lun);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ void qla4xxx_process_aen(struct scsi_qla_host *ha, uint8_t process_aen);
|
||||||
int qla4xxx_get_dhcp_ip_address(struct scsi_qla_host *ha);
|
int qla4xxx_get_dhcp_ip_address(struct scsi_qla_host *ha);
|
||||||
int qla4xxx_abort_task(struct scsi_qla_host *ha, struct srb *srb);
|
int qla4xxx_abort_task(struct scsi_qla_host *ha, struct srb *srb);
|
||||||
int qla4xxx_reset_lun(struct scsi_qla_host *ha, struct ddb_entry *ddb_entry,
|
int qla4xxx_reset_lun(struct scsi_qla_host *ha, struct ddb_entry *ddb_entry,
|
||||||
int lun);
|
uint64_t lun);
|
||||||
int qla4xxx_reset_target(struct scsi_qla_host *ha,
|
int qla4xxx_reset_target(struct scsi_qla_host *ha,
|
||||||
struct ddb_entry *ddb_entry);
|
struct ddb_entry *ddb_entry);
|
||||||
int qla4xxx_get_flash(struct scsi_qla_host *ha, dma_addr_t dma_addr,
|
int qla4xxx_get_flash(struct scsi_qla_host *ha, dma_addr_t dma_addr,
|
||||||
|
@ -76,7 +76,7 @@ int qla4xxx_process_ddb_changed(struct scsi_qla_host *ha, uint32_t fw_ddb_index,
|
||||||
uint32_t state, uint32_t conn_error);
|
uint32_t state, uint32_t conn_error);
|
||||||
void qla4xxx_dump_buffer(void *b, uint32_t size);
|
void qla4xxx_dump_buffer(void *b, uint32_t size);
|
||||||
int qla4xxx_send_marker_iocb(struct scsi_qla_host *ha,
|
int qla4xxx_send_marker_iocb(struct scsi_qla_host *ha,
|
||||||
struct ddb_entry *ddb_entry, int lun, uint16_t mrkr_mod);
|
struct ddb_entry *ddb_entry, uint64_t lun, uint16_t mrkr_mod);
|
||||||
int qla4xxx_set_flash(struct scsi_qla_host *ha, dma_addr_t dma_addr,
|
int qla4xxx_set_flash(struct scsi_qla_host *ha, dma_addr_t dma_addr,
|
||||||
uint32_t offset, uint32_t length, uint32_t options);
|
uint32_t offset, uint32_t length, uint32_t options);
|
||||||
int qla4xxx_mailbox_command(struct scsi_qla_host *ha, uint8_t inCount,
|
int qla4xxx_mailbox_command(struct scsi_qla_host *ha, uint8_t inCount,
|
||||||
|
|
|
@ -83,7 +83,7 @@ static int qla4xxx_get_req_pkt(struct scsi_qla_host *ha,
|
||||||
* This routine issues a marker IOCB.
|
* This routine issues a marker IOCB.
|
||||||
**/
|
**/
|
||||||
int qla4xxx_send_marker_iocb(struct scsi_qla_host *ha,
|
int qla4xxx_send_marker_iocb(struct scsi_qla_host *ha,
|
||||||
struct ddb_entry *ddb_entry, int lun, uint16_t mrkr_mod)
|
struct ddb_entry *ddb_entry, uint64_t lun, uint16_t mrkr_mod)
|
||||||
{
|
{
|
||||||
struct qla4_marker_entry *marker_entry;
|
struct qla4_marker_entry *marker_entry;
|
||||||
unsigned long flags = 0;
|
unsigned long flags = 0;
|
||||||
|
|
|
@ -26,7 +26,7 @@ static void qla4xxx_copy_sense(struct scsi_qla_host *ha,
|
||||||
memset(cmd->sense_buffer, 0, SCSI_SENSE_BUFFERSIZE);
|
memset(cmd->sense_buffer, 0, SCSI_SENSE_BUFFERSIZE);
|
||||||
sense_len = le16_to_cpu(sts_entry->senseDataByteCnt);
|
sense_len = le16_to_cpu(sts_entry->senseDataByteCnt);
|
||||||
if (sense_len == 0) {
|
if (sense_len == 0) {
|
||||||
DEBUG2(ql4_printk(KERN_INFO, ha, "scsi%ld:%d:%d:%d: %s:"
|
DEBUG2(ql4_printk(KERN_INFO, ha, "scsi%ld:%d:%d:%llu: %s:"
|
||||||
" sense len 0\n", ha->host_no,
|
" sense len 0\n", ha->host_no,
|
||||||
cmd->device->channel, cmd->device->id,
|
cmd->device->channel, cmd->device->id,
|
||||||
cmd->device->lun, __func__));
|
cmd->device->lun, __func__));
|
||||||
|
@ -43,7 +43,7 @@ static void qla4xxx_copy_sense(struct scsi_qla_host *ha,
|
||||||
sense_len = min_t(uint16_t, sense_len, IOCB_MAX_SENSEDATA_LEN);
|
sense_len = min_t(uint16_t, sense_len, IOCB_MAX_SENSEDATA_LEN);
|
||||||
memcpy(cmd->sense_buffer, sts_entry->senseData, sense_len);
|
memcpy(cmd->sense_buffer, sts_entry->senseData, sense_len);
|
||||||
|
|
||||||
DEBUG2(printk(KERN_INFO "scsi%ld:%d:%d:%d: %s: sense key = %x, "
|
DEBUG2(printk(KERN_INFO "scsi%ld:%d:%d:%llu: %s: sense key = %x, "
|
||||||
"ASL= %02x, ASC/ASCQ = %02x/%02x\n", ha->host_no,
|
"ASL= %02x, ASC/ASCQ = %02x/%02x\n", ha->host_no,
|
||||||
cmd->device->channel, cmd->device->id,
|
cmd->device->channel, cmd->device->id,
|
||||||
cmd->device->lun, __func__,
|
cmd->device->lun, __func__,
|
||||||
|
@ -169,7 +169,7 @@ static void qla4xxx_status_entry(struct scsi_qla_host *ha,
|
||||||
|
|
||||||
cmd->result = DID_ERROR << 16;
|
cmd->result = DID_ERROR << 16;
|
||||||
|
|
||||||
DEBUG2(printk("scsi%ld:%d:%d:%d: %s: "
|
DEBUG2(printk("scsi%ld:%d:%d:%llu: %s: "
|
||||||
"Mid-layer Data underrun0, "
|
"Mid-layer Data underrun0, "
|
||||||
"xferlen = 0x%x, "
|
"xferlen = 0x%x, "
|
||||||
"residual = 0x%x\n", ha->host_no,
|
"residual = 0x%x\n", ha->host_no,
|
||||||
|
@ -197,7 +197,7 @@ static void qla4xxx_status_entry(struct scsi_qla_host *ha,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SCS_RESET_OCCURRED:
|
case SCS_RESET_OCCURRED:
|
||||||
DEBUG2(printk("scsi%ld:%d:%d:%d: %s: Device RESET occurred\n",
|
DEBUG2(printk("scsi%ld:%d:%d:%llu: %s: Device RESET occurred\n",
|
||||||
ha->host_no, cmd->device->channel,
|
ha->host_no, cmd->device->channel,
|
||||||
cmd->device->id, cmd->device->lun, __func__));
|
cmd->device->id, cmd->device->lun, __func__));
|
||||||
|
|
||||||
|
@ -205,7 +205,7 @@ static void qla4xxx_status_entry(struct scsi_qla_host *ha,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SCS_ABORTED:
|
case SCS_ABORTED:
|
||||||
DEBUG2(printk("scsi%ld:%d:%d:%d: %s: Abort occurred\n",
|
DEBUG2(printk("scsi%ld:%d:%d:%llu: %s: Abort occurred\n",
|
||||||
ha->host_no, cmd->device->channel,
|
ha->host_no, cmd->device->channel,
|
||||||
cmd->device->id, cmd->device->lun, __func__));
|
cmd->device->id, cmd->device->lun, __func__));
|
||||||
|
|
||||||
|
@ -213,7 +213,7 @@ static void qla4xxx_status_entry(struct scsi_qla_host *ha,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SCS_TIMEOUT:
|
case SCS_TIMEOUT:
|
||||||
DEBUG2(printk(KERN_INFO "scsi%ld:%d:%d:%d: Timeout\n",
|
DEBUG2(printk(KERN_INFO "scsi%ld:%d:%d:%llu: Timeout\n",
|
||||||
ha->host_no, cmd->device->channel,
|
ha->host_no, cmd->device->channel,
|
||||||
cmd->device->id, cmd->device->lun));
|
cmd->device->id, cmd->device->lun));
|
||||||
|
|
||||||
|
@ -232,7 +232,7 @@ static void qla4xxx_status_entry(struct scsi_qla_host *ha,
|
||||||
case SCS_DATA_OVERRUN:
|
case SCS_DATA_OVERRUN:
|
||||||
if ((sts_entry->iscsiFlags & ISCSI_FLAG_RESIDUAL_OVER) ||
|
if ((sts_entry->iscsiFlags & ISCSI_FLAG_RESIDUAL_OVER) ||
|
||||||
(sts_entry->completionStatus == SCS_DATA_OVERRUN)) {
|
(sts_entry->completionStatus == SCS_DATA_OVERRUN)) {
|
||||||
DEBUG2(printk("scsi%ld:%d:%d:%d: %s: " "Data overrun\n",
|
DEBUG2(printk("scsi%ld:%d:%d:%llu: %s: " "Data overrun\n",
|
||||||
ha->host_no,
|
ha->host_no,
|
||||||
cmd->device->channel, cmd->device->id,
|
cmd->device->channel, cmd->device->id,
|
||||||
cmd->device->lun, __func__));
|
cmd->device->lun, __func__));
|
||||||
|
@ -259,7 +259,7 @@ static void qla4xxx_status_entry(struct scsi_qla_host *ha,
|
||||||
if (!scsi_status && (scsi_bufflen(cmd) - residual) <
|
if (!scsi_status && (scsi_bufflen(cmd) - residual) <
|
||||||
cmd->underflow) {
|
cmd->underflow) {
|
||||||
DEBUG2(ql4_printk(KERN_INFO, ha,
|
DEBUG2(ql4_printk(KERN_INFO, ha,
|
||||||
"scsi%ld:%d:%d:%d: %s: Mid-layer Data underrun, xferlen = 0x%x,residual = 0x%x\n",
|
"scsi%ld:%d:%d:%llu: %s: Mid-layer Data underrun, xferlen = 0x%x,residual = 0x%x\n",
|
||||||
ha->host_no,
|
ha->host_no,
|
||||||
cmd->device->channel,
|
cmd->device->channel,
|
||||||
cmd->device->id,
|
cmd->device->id,
|
||||||
|
@ -291,7 +291,7 @@ static void qla4xxx_status_entry(struct scsi_qla_host *ha,
|
||||||
*/
|
*/
|
||||||
|
|
||||||
DEBUG2(ql4_printk(KERN_INFO, ha,
|
DEBUG2(ql4_printk(KERN_INFO, ha,
|
||||||
"scsi%ld:%d:%d:%d: %s: Dropped frame(s) detected (0x%x of 0x%x bytes).\n",
|
"scsi%ld:%d:%d:%llu: %s: Dropped frame(s) detected (0x%x of 0x%x bytes).\n",
|
||||||
ha->host_no,
|
ha->host_no,
|
||||||
cmd->device->channel,
|
cmd->device->channel,
|
||||||
cmd->device->id,
|
cmd->device->id,
|
||||||
|
@ -313,7 +313,7 @@ static void qla4xxx_status_entry(struct scsi_qla_host *ha,
|
||||||
|
|
||||||
case SCS_DEVICE_LOGGED_OUT:
|
case SCS_DEVICE_LOGGED_OUT:
|
||||||
case SCS_DEVICE_UNAVAILABLE:
|
case SCS_DEVICE_UNAVAILABLE:
|
||||||
DEBUG2(printk(KERN_INFO "scsi%ld:%d:%d:%d: SCS_DEVICE "
|
DEBUG2(printk(KERN_INFO "scsi%ld:%d:%d:%llu: SCS_DEVICE "
|
||||||
"state: 0x%x\n", ha->host_no,
|
"state: 0x%x\n", ha->host_no,
|
||||||
cmd->device->channel, cmd->device->id,
|
cmd->device->channel, cmd->device->id,
|
||||||
cmd->device->lun, sts_entry->completionStatus));
|
cmd->device->lun, sts_entry->completionStatus));
|
||||||
|
@ -333,7 +333,7 @@ static void qla4xxx_status_entry(struct scsi_qla_host *ha,
|
||||||
* SCSI Mid-Layer handles device queue full
|
* SCSI Mid-Layer handles device queue full
|
||||||
*/
|
*/
|
||||||
cmd->result = DID_OK << 16 | sts_entry->scsiStatus;
|
cmd->result = DID_OK << 16 | sts_entry->scsiStatus;
|
||||||
DEBUG2(printk("scsi%ld:%d:%d: %s: QUEUE FULL detected "
|
DEBUG2(printk("scsi%ld:%d:%llu: %s: QUEUE FULL detected "
|
||||||
"compl=%02x, scsi=%02x, state=%02x, iFlags=%02x,"
|
"compl=%02x, scsi=%02x, state=%02x, iFlags=%02x,"
|
||||||
" iResp=%02x\n", ha->host_no, cmd->device->id,
|
" iResp=%02x\n", ha->host_no, cmd->device->id,
|
||||||
cmd->device->lun, __func__,
|
cmd->device->lun, __func__,
|
||||||
|
|
|
@ -1205,7 +1205,7 @@ int qla4xxx_abort_task(struct scsi_qla_host *ha, struct srb *srb)
|
||||||
if (mbox_sts[0] != MBOX_STS_COMMAND_COMPLETE) {
|
if (mbox_sts[0] != MBOX_STS_COMMAND_COMPLETE) {
|
||||||
status = QLA_ERROR;
|
status = QLA_ERROR;
|
||||||
|
|
||||||
DEBUG2(printk(KERN_WARNING "scsi%ld:%d:%d: abort task FAILED: "
|
DEBUG2(printk(KERN_WARNING "scsi%ld:%d:%llu: abort task FAILED: "
|
||||||
"mbx0=%04X, mb1=%04X, mb2=%04X, mb3=%04X, mb4=%04X\n",
|
"mbx0=%04X, mb1=%04X, mb2=%04X, mb3=%04X, mb4=%04X\n",
|
||||||
ha->host_no, cmd->device->id, cmd->device->lun, mbox_sts[0],
|
ha->host_no, cmd->device->id, cmd->device->lun, mbox_sts[0],
|
||||||
mbox_sts[1], mbox_sts[2], mbox_sts[3], mbox_sts[4]));
|
mbox_sts[1], mbox_sts[2], mbox_sts[3], mbox_sts[4]));
|
||||||
|
@ -1225,14 +1225,14 @@ int qla4xxx_abort_task(struct scsi_qla_host *ha, struct srb *srb)
|
||||||
* are valid before calling this routine.
|
* are valid before calling this routine.
|
||||||
**/
|
**/
|
||||||
int qla4xxx_reset_lun(struct scsi_qla_host * ha, struct ddb_entry * ddb_entry,
|
int qla4xxx_reset_lun(struct scsi_qla_host * ha, struct ddb_entry * ddb_entry,
|
||||||
int lun)
|
uint64_t lun)
|
||||||
{
|
{
|
||||||
uint32_t mbox_cmd[MBOX_REG_COUNT];
|
uint32_t mbox_cmd[MBOX_REG_COUNT];
|
||||||
uint32_t mbox_sts[MBOX_REG_COUNT];
|
uint32_t mbox_sts[MBOX_REG_COUNT];
|
||||||
uint32_t scsi_lun[2];
|
uint32_t scsi_lun[2];
|
||||||
int status = QLA_SUCCESS;
|
int status = QLA_SUCCESS;
|
||||||
|
|
||||||
DEBUG2(printk("scsi%ld:%d:%d: lun reset issued\n", ha->host_no,
|
DEBUG2(printk("scsi%ld:%d:%llu: lun reset issued\n", ha->host_no,
|
||||||
ddb_entry->fw_ddb_index, lun));
|
ddb_entry->fw_ddb_index, lun));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -9223,20 +9223,20 @@ static int qla4xxx_eh_abort(struct scsi_cmnd *cmd)
|
||||||
{
|
{
|
||||||
struct scsi_qla_host *ha = to_qla_host(cmd->device->host);
|
struct scsi_qla_host *ha = to_qla_host(cmd->device->host);
|
||||||
unsigned int id = cmd->device->id;
|
unsigned int id = cmd->device->id;
|
||||||
unsigned int lun = cmd->device->lun;
|
uint64_t lun = cmd->device->lun;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
struct srb *srb = NULL;
|
struct srb *srb = NULL;
|
||||||
int ret = SUCCESS;
|
int ret = SUCCESS;
|
||||||
int wait = 0;
|
int wait = 0;
|
||||||
|
|
||||||
ql4_printk(KERN_INFO, ha, "scsi%ld:%d:%d: Abort command issued cmd=%p, cdb=0x%x\n",
|
ql4_printk(KERN_INFO, ha, "scsi%ld:%d:%llu: Abort command issued cmd=%p, cdb=0x%x\n",
|
||||||
ha->host_no, id, lun, cmd, cmd->cmnd[0]);
|
ha->host_no, id, lun, cmd, cmd->cmnd[0]);
|
||||||
|
|
||||||
spin_lock_irqsave(&ha->hardware_lock, flags);
|
spin_lock_irqsave(&ha->hardware_lock, flags);
|
||||||
srb = (struct srb *) CMD_SP(cmd);
|
srb = (struct srb *) CMD_SP(cmd);
|
||||||
if (!srb) {
|
if (!srb) {
|
||||||
spin_unlock_irqrestore(&ha->hardware_lock, flags);
|
spin_unlock_irqrestore(&ha->hardware_lock, flags);
|
||||||
ql4_printk(KERN_INFO, ha, "scsi%ld:%d:%d: Specified command has already completed.\n",
|
ql4_printk(KERN_INFO, ha, "scsi%ld:%d:%llu: Specified command has already completed.\n",
|
||||||
ha->host_no, id, lun);
|
ha->host_no, id, lun);
|
||||||
return SUCCESS;
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -9244,11 +9244,11 @@ static int qla4xxx_eh_abort(struct scsi_cmnd *cmd)
|
||||||
spin_unlock_irqrestore(&ha->hardware_lock, flags);
|
spin_unlock_irqrestore(&ha->hardware_lock, flags);
|
||||||
|
|
||||||
if (qla4xxx_abort_task(ha, srb) != QLA_SUCCESS) {
|
if (qla4xxx_abort_task(ha, srb) != QLA_SUCCESS) {
|
||||||
DEBUG3(printk("scsi%ld:%d:%d: Abort_task mbx failed.\n",
|
DEBUG3(printk("scsi%ld:%d:%llu: Abort_task mbx failed.\n",
|
||||||
ha->host_no, id, lun));
|
ha->host_no, id, lun));
|
||||||
ret = FAILED;
|
ret = FAILED;
|
||||||
} else {
|
} else {
|
||||||
DEBUG3(printk("scsi%ld:%d:%d: Abort_task mbx success.\n",
|
DEBUG3(printk("scsi%ld:%d:%llu: Abort_task mbx success.\n",
|
||||||
ha->host_no, id, lun));
|
ha->host_no, id, lun));
|
||||||
wait = 1;
|
wait = 1;
|
||||||
}
|
}
|
||||||
|
@ -9258,14 +9258,14 @@ static int qla4xxx_eh_abort(struct scsi_cmnd *cmd)
|
||||||
/* Wait for command to complete */
|
/* Wait for command to complete */
|
||||||
if (wait) {
|
if (wait) {
|
||||||
if (!qla4xxx_eh_wait_on_command(ha, cmd)) {
|
if (!qla4xxx_eh_wait_on_command(ha, cmd)) {
|
||||||
DEBUG2(printk("scsi%ld:%d:%d: Abort handler timed out\n",
|
DEBUG2(printk("scsi%ld:%d:%llu: Abort handler timed out\n",
|
||||||
ha->host_no, id, lun));
|
ha->host_no, id, lun));
|
||||||
ret = FAILED;
|
ret = FAILED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ql4_printk(KERN_INFO, ha,
|
ql4_printk(KERN_INFO, ha,
|
||||||
"scsi%ld:%d:%d: Abort command - %s\n",
|
"scsi%ld:%d:%llu: Abort command - %s\n",
|
||||||
ha->host_no, id, lun, (ret == SUCCESS) ? "succeeded" : "failed");
|
ha->host_no, id, lun, (ret == SUCCESS) ? "succeeded" : "failed");
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -9293,7 +9293,7 @@ static int qla4xxx_eh_device_reset(struct scsi_cmnd *cmd)
|
||||||
ret = FAILED;
|
ret = FAILED;
|
||||||
|
|
||||||
ql4_printk(KERN_INFO, ha,
|
ql4_printk(KERN_INFO, ha,
|
||||||
"scsi%ld:%d:%d:%d: DEVICE RESET ISSUED.\n", ha->host_no,
|
"scsi%ld:%d:%d:%llu: DEVICE RESET ISSUED.\n", ha->host_no,
|
||||||
cmd->device->channel, cmd->device->id, cmd->device->lun);
|
cmd->device->channel, cmd->device->id, cmd->device->lun);
|
||||||
|
|
||||||
DEBUG2(printk(KERN_INFO
|
DEBUG2(printk(KERN_INFO
|
||||||
|
@ -9323,7 +9323,7 @@ static int qla4xxx_eh_device_reset(struct scsi_cmnd *cmd)
|
||||||
goto eh_dev_reset_done;
|
goto eh_dev_reset_done;
|
||||||
|
|
||||||
ql4_printk(KERN_INFO, ha,
|
ql4_printk(KERN_INFO, ha,
|
||||||
"scsi(%ld:%d:%d:%d): DEVICE RESET SUCCEEDED.\n",
|
"scsi(%ld:%d:%d:%llu): DEVICE RESET SUCCEEDED.\n",
|
||||||
ha->host_no, cmd->device->channel, cmd->device->id,
|
ha->host_no, cmd->device->channel, cmd->device->id,
|
||||||
cmd->device->lun);
|
cmd->device->lun);
|
||||||
|
|
||||||
|
@ -9440,7 +9440,7 @@ static int qla4xxx_eh_host_reset(struct scsi_cmnd *cmd)
|
||||||
}
|
}
|
||||||
|
|
||||||
ql4_printk(KERN_INFO, ha,
|
ql4_printk(KERN_INFO, ha,
|
||||||
"scsi(%ld:%d:%d:%d): HOST RESET ISSUED.\n", ha->host_no,
|
"scsi(%ld:%d:%d:%llu): HOST RESET ISSUED.\n", ha->host_no,
|
||||||
cmd->device->channel, cmd->device->id, cmd->device->lun);
|
cmd->device->channel, cmd->device->id, cmd->device->lun);
|
||||||
|
|
||||||
if (qla4xxx_wait_for_hba_online(ha) != QLA_SUCCESS) {
|
if (qla4xxx_wait_for_hba_online(ha) != QLA_SUCCESS) {
|
||||||
|
|
|
@ -1291,7 +1291,7 @@ EXPORT_SYMBOL(__starget_for_each_device);
|
||||||
* really want to use scsi_device_lookup_by_target instead.
|
* really want to use scsi_device_lookup_by_target instead.
|
||||||
**/
|
**/
|
||||||
struct scsi_device *__scsi_device_lookup_by_target(struct scsi_target *starget,
|
struct scsi_device *__scsi_device_lookup_by_target(struct scsi_target *starget,
|
||||||
uint lun)
|
u64 lun)
|
||||||
{
|
{
|
||||||
struct scsi_device *sdev;
|
struct scsi_device *sdev;
|
||||||
|
|
||||||
|
@ -1316,7 +1316,7 @@ EXPORT_SYMBOL(__scsi_device_lookup_by_target);
|
||||||
* needs to be released with scsi_device_put once you're done with it.
|
* needs to be released with scsi_device_put once you're done with it.
|
||||||
**/
|
**/
|
||||||
struct scsi_device *scsi_device_lookup_by_target(struct scsi_target *starget,
|
struct scsi_device *scsi_device_lookup_by_target(struct scsi_target *starget,
|
||||||
uint lun)
|
u64 lun)
|
||||||
{
|
{
|
||||||
struct scsi_device *sdev;
|
struct scsi_device *sdev;
|
||||||
struct Scsi_Host *shost = dev_to_shost(starget->dev.parent);
|
struct Scsi_Host *shost = dev_to_shost(starget->dev.parent);
|
||||||
|
@ -1349,7 +1349,7 @@ EXPORT_SYMBOL(scsi_device_lookup_by_target);
|
||||||
* really want to use scsi_device_lookup instead.
|
* really want to use scsi_device_lookup instead.
|
||||||
**/
|
**/
|
||||||
struct scsi_device *__scsi_device_lookup(struct Scsi_Host *shost,
|
struct scsi_device *__scsi_device_lookup(struct Scsi_Host *shost,
|
||||||
uint channel, uint id, uint lun)
|
uint channel, uint id, u64 lun)
|
||||||
{
|
{
|
||||||
struct scsi_device *sdev;
|
struct scsi_device *sdev;
|
||||||
|
|
||||||
|
@ -1375,7 +1375,7 @@ EXPORT_SYMBOL(__scsi_device_lookup);
|
||||||
* needs to be released with scsi_device_put once you're done with it.
|
* needs to be released with scsi_device_put once you're done with it.
|
||||||
**/
|
**/
|
||||||
struct scsi_device *scsi_device_lookup(struct Scsi_Host *shost,
|
struct scsi_device *scsi_device_lookup(struct Scsi_Host *shost,
|
||||||
uint channel, uint id, uint lun)
|
uint channel, uint id, u64 lun)
|
||||||
{
|
{
|
||||||
struct scsi_device *sdev;
|
struct scsi_device *sdev;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
|
|
@ -228,9 +228,9 @@ struct sdebug_dev_info {
|
||||||
unsigned char sense_buff[SDEBUG_SENSE_LEN]; /* weak nexus */
|
unsigned char sense_buff[SDEBUG_SENSE_LEN]; /* weak nexus */
|
||||||
unsigned int channel;
|
unsigned int channel;
|
||||||
unsigned int target;
|
unsigned int target;
|
||||||
unsigned int lun;
|
u64 lun;
|
||||||
struct sdebug_host_info *sdbg_host;
|
struct sdebug_host_info *sdbg_host;
|
||||||
unsigned int wlun;
|
u64 wlun;
|
||||||
char reset;
|
char reset;
|
||||||
char stopped;
|
char stopped;
|
||||||
char used;
|
char used;
|
||||||
|
@ -2278,7 +2278,8 @@ static int resp_report_luns(struct scsi_cmnd * scp,
|
||||||
struct sdebug_dev_info * devip)
|
struct sdebug_dev_info * devip)
|
||||||
{
|
{
|
||||||
unsigned int alloc_len;
|
unsigned int alloc_len;
|
||||||
int lun_cnt, i, upper, num, n, wlun, lun;
|
int lun_cnt, i, upper, num, n;
|
||||||
|
u64 wlun, lun;
|
||||||
unsigned char *cmd = (unsigned char *)scp->cmnd;
|
unsigned char *cmd = (unsigned char *)scp->cmnd;
|
||||||
int select_report = (int)cmd[2];
|
int select_report = (int)cmd[2];
|
||||||
struct scsi_lun *one_lun;
|
struct scsi_lun *one_lun;
|
||||||
|
@ -2462,7 +2463,7 @@ static struct sdebug_dev_info * devInfoReg(struct scsi_device * sdev)
|
||||||
static int scsi_debug_slave_alloc(struct scsi_device *sdp)
|
static int scsi_debug_slave_alloc(struct scsi_device *sdp)
|
||||||
{
|
{
|
||||||
if (SCSI_DEBUG_OPT_NOISE & scsi_debug_opts)
|
if (SCSI_DEBUG_OPT_NOISE & scsi_debug_opts)
|
||||||
printk(KERN_INFO "scsi_debug: slave_alloc <%u %u %u %u>\n",
|
printk(KERN_INFO "scsi_debug: slave_alloc <%u %u %u %llu>\n",
|
||||||
sdp->host->host_no, sdp->channel, sdp->id, sdp->lun);
|
sdp->host->host_no, sdp->channel, sdp->id, sdp->lun);
|
||||||
queue_flag_set_unlocked(QUEUE_FLAG_BIDI, sdp->request_queue);
|
queue_flag_set_unlocked(QUEUE_FLAG_BIDI, sdp->request_queue);
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -2473,7 +2474,7 @@ static int scsi_debug_slave_configure(struct scsi_device *sdp)
|
||||||
struct sdebug_dev_info *devip;
|
struct sdebug_dev_info *devip;
|
||||||
|
|
||||||
if (SCSI_DEBUG_OPT_NOISE & scsi_debug_opts)
|
if (SCSI_DEBUG_OPT_NOISE & scsi_debug_opts)
|
||||||
printk(KERN_INFO "scsi_debug: slave_configure <%u %u %u %u>\n",
|
printk(KERN_INFO "scsi_debug: slave_configure <%u %u %u %llu>\n",
|
||||||
sdp->host->host_no, sdp->channel, sdp->id, sdp->lun);
|
sdp->host->host_no, sdp->channel, sdp->id, sdp->lun);
|
||||||
if (sdp->host->max_cmd_len != SCSI_DEBUG_MAX_CMD_LEN)
|
if (sdp->host->max_cmd_len != SCSI_DEBUG_MAX_CMD_LEN)
|
||||||
sdp->host->max_cmd_len = SCSI_DEBUG_MAX_CMD_LEN;
|
sdp->host->max_cmd_len = SCSI_DEBUG_MAX_CMD_LEN;
|
||||||
|
@ -2496,7 +2497,7 @@ static void scsi_debug_slave_destroy(struct scsi_device *sdp)
|
||||||
(struct sdebug_dev_info *)sdp->hostdata;
|
(struct sdebug_dev_info *)sdp->hostdata;
|
||||||
|
|
||||||
if (SCSI_DEBUG_OPT_NOISE & scsi_debug_opts)
|
if (SCSI_DEBUG_OPT_NOISE & scsi_debug_opts)
|
||||||
printk(KERN_INFO "scsi_debug: slave_destroy <%u %u %u %u>\n",
|
printk(KERN_INFO "scsi_debug: slave_destroy <%u %u %u %llu>\n",
|
||||||
sdp->host->host_no, sdp->channel, sdp->id, sdp->lun);
|
sdp->host->host_no, sdp->channel, sdp->id, sdp->lun);
|
||||||
if (devip) {
|
if (devip) {
|
||||||
/* make this slot available for re-use */
|
/* make this slot available for re-use */
|
||||||
|
@ -2708,7 +2709,7 @@ static int schedule_resp(struct scsi_cmnd * cmnd,
|
||||||
if (scsi_result) {
|
if (scsi_result) {
|
||||||
struct scsi_device * sdp = cmnd->device;
|
struct scsi_device * sdp = cmnd->device;
|
||||||
|
|
||||||
printk(KERN_INFO "scsi_debug: <%u %u %u %u> "
|
printk(KERN_INFO "scsi_debug: <%u %u %u %llu> "
|
||||||
"non-zero result=0x%x\n", sdp->host->host_no,
|
"non-zero result=0x%x\n", sdp->host->host_no,
|
||||||
sdp->channel, sdp->id, sdp->lun, scsi_result);
|
sdp->channel, sdp->id, sdp->lun, scsi_result);
|
||||||
}
|
}
|
||||||
|
|
|
@ -115,7 +115,7 @@ extern void scsi_exit_procfs(void);
|
||||||
extern char scsi_scan_type[];
|
extern char scsi_scan_type[];
|
||||||
extern int scsi_complete_async_scans(void);
|
extern int scsi_complete_async_scans(void);
|
||||||
extern int scsi_scan_host_selected(struct Scsi_Host *, unsigned int,
|
extern int scsi_scan_host_selected(struct Scsi_Host *, unsigned int,
|
||||||
unsigned int, unsigned int, int);
|
unsigned int, u64, int);
|
||||||
extern void scsi_forget_host(struct Scsi_Host *);
|
extern void scsi_forget_host(struct Scsi_Host *);
|
||||||
extern void scsi_rescan_device(struct device *);
|
extern void scsi_rescan_device(struct device *);
|
||||||
|
|
||||||
|
|
|
@ -185,7 +185,7 @@ static int proc_print_scsidevice(struct device *dev, void *data)
|
||||||
|
|
||||||
sdev = to_scsi_device(dev);
|
sdev = to_scsi_device(dev);
|
||||||
seq_printf(s,
|
seq_printf(s,
|
||||||
"Host: scsi%d Channel: %02d Id: %02d Lun: %02d\n Vendor: ",
|
"Host: scsi%d Channel: %02d Id: %02d Lun: %02llu\n Vendor: ",
|
||||||
sdev->host->host_no, sdev->channel, sdev->id, sdev->lun);
|
sdev->host->host_no, sdev->channel, sdev->id, sdev->lun);
|
||||||
for (i = 0; i < 8; i++) {
|
for (i = 0; i < 8; i++) {
|
||||||
if (sdev->vendor[i] >= 0x20)
|
if (sdev->vendor[i] >= 0x20)
|
||||||
|
|
|
@ -220,7 +220,7 @@ static void scsi_unlock_floptical(struct scsi_device *sdev,
|
||||||
* scsi_Device pointer, or NULL on failure.
|
* scsi_Device pointer, or NULL on failure.
|
||||||
**/
|
**/
|
||||||
static struct scsi_device *scsi_alloc_sdev(struct scsi_target *starget,
|
static struct scsi_device *scsi_alloc_sdev(struct scsi_target *starget,
|
||||||
unsigned int lun, void *hostdata)
|
u64 lun, void *hostdata)
|
||||||
{
|
{
|
||||||
struct scsi_device *sdev;
|
struct scsi_device *sdev;
|
||||||
int display_failure_msg = 1, ret;
|
int display_failure_msg = 1, ret;
|
||||||
|
@ -1028,7 +1028,7 @@ static unsigned char *scsi_inq_str(unsigned char *buf, unsigned char *inq,
|
||||||
* SCSI_SCAN_LUN_PRESENT: a new scsi_device was allocated and initialized
|
* SCSI_SCAN_LUN_PRESENT: a new scsi_device was allocated and initialized
|
||||||
**/
|
**/
|
||||||
static int scsi_probe_and_add_lun(struct scsi_target *starget,
|
static int scsi_probe_and_add_lun(struct scsi_target *starget,
|
||||||
uint lun, int *bflagsp,
|
u64 lun, int *bflagsp,
|
||||||
struct scsi_device **sdevp, int rescan,
|
struct scsi_device **sdevp, int rescan,
|
||||||
void *hostdata)
|
void *hostdata)
|
||||||
{
|
{
|
||||||
|
@ -1181,7 +1181,8 @@ static int scsi_probe_and_add_lun(struct scsi_target *starget,
|
||||||
static void scsi_sequential_lun_scan(struct scsi_target *starget,
|
static void scsi_sequential_lun_scan(struct scsi_target *starget,
|
||||||
int bflags, int scsi_level, int rescan)
|
int bflags, int scsi_level, int rescan)
|
||||||
{
|
{
|
||||||
unsigned int sparse_lun, lun, max_dev_lun;
|
uint max_dev_lun;
|
||||||
|
u64 sparse_lun, lun;
|
||||||
struct Scsi_Host *shost = dev_to_shost(starget->dev.parent);
|
struct Scsi_Host *shost = dev_to_shost(starget->dev.parent);
|
||||||
|
|
||||||
SCSI_LOG_SCAN_BUS(3, printk(KERN_INFO "scsi scan: Sequential scan of"
|
SCSI_LOG_SCAN_BUS(3, printk(KERN_INFO "scsi scan: Sequential scan of"
|
||||||
|
@ -1271,10 +1272,10 @@ static void scsi_sequential_lun_scan(struct scsi_target *starget,
|
||||||
* Given a struct scsi_lun of: 0a 04 0b 03 00 00 00 00, this function returns
|
* Given a struct scsi_lun of: 0a 04 0b 03 00 00 00 00, this function returns
|
||||||
* the integer: 0x0b030a04
|
* the integer: 0x0b030a04
|
||||||
**/
|
**/
|
||||||
int scsilun_to_int(struct scsi_lun *scsilun)
|
u64 scsilun_to_int(struct scsi_lun *scsilun)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
unsigned int lun;
|
u64 lun;
|
||||||
|
|
||||||
lun = 0;
|
lun = 0;
|
||||||
for (i = 0; i < sizeof(lun); i += 2)
|
for (i = 0; i < sizeof(lun); i += 2)
|
||||||
|
@ -1302,7 +1303,7 @@ EXPORT_SYMBOL(scsilun_to_int);
|
||||||
* scsi_lun of : struct scsi_lun of: 0a 04 0b 03 00 00 00 00
|
* scsi_lun of : struct scsi_lun of: 0a 04 0b 03 00 00 00 00
|
||||||
*
|
*
|
||||||
**/
|
**/
|
||||||
void int_to_scsilun(unsigned int lun, struct scsi_lun *scsilun)
|
void int_to_scsilun(u64 lun, struct scsi_lun *scsilun)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -1342,7 +1343,7 @@ static int scsi_report_lun_scan(struct scsi_target *starget, int bflags,
|
||||||
char devname[64];
|
char devname[64];
|
||||||
unsigned char scsi_cmd[MAX_COMMAND_SIZE];
|
unsigned char scsi_cmd[MAX_COMMAND_SIZE];
|
||||||
unsigned int length;
|
unsigned int length;
|
||||||
unsigned int lun;
|
u64 lun;
|
||||||
unsigned int num_luns;
|
unsigned int num_luns;
|
||||||
unsigned int retries;
|
unsigned int retries;
|
||||||
int result;
|
int result;
|
||||||
|
@ -1485,25 +1486,8 @@ static int scsi_report_lun_scan(struct scsi_target *starget, int bflags,
|
||||||
for (lunp = &lun_data[1]; lunp <= &lun_data[num_luns]; lunp++) {
|
for (lunp = &lun_data[1]; lunp <= &lun_data[num_luns]; lunp++) {
|
||||||
lun = scsilun_to_int(lunp);
|
lun = scsilun_to_int(lunp);
|
||||||
|
|
||||||
/*
|
if (lun > sdev->host->max_lun) {
|
||||||
* Check if the unused part of lunp is non-zero, and so
|
printk(KERN_WARNING "scsi: %s lun%llu has a LUN larger"
|
||||||
* does not fit in lun.
|
|
||||||
*/
|
|
||||||
if (memcmp(&lunp->scsi_lun[sizeof(lun)], "\0\0\0\0", 4)) {
|
|
||||||
int i;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Output an error displaying the LUN in byte order,
|
|
||||||
* this differs from what linux would print for the
|
|
||||||
* integer LUN value.
|
|
||||||
*/
|
|
||||||
printk(KERN_WARNING "scsi: %s lun 0x", devname);
|
|
||||||
data = (char *)lunp->scsi_lun;
|
|
||||||
for (i = 0; i < sizeof(struct scsi_lun); i++)
|
|
||||||
printk("%02x", data[i]);
|
|
||||||
printk(" has a LUN larger than currently supported.\n");
|
|
||||||
} else if (lun > sdev->host->max_lun) {
|
|
||||||
printk(KERN_WARNING "scsi: %s lun%d has a LUN larger"
|
|
||||||
" than allowed by the host adapter\n",
|
" than allowed by the host adapter\n",
|
||||||
devname, lun);
|
devname, lun);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1517,8 +1501,8 @@ static int scsi_report_lun_scan(struct scsi_target *starget, int bflags,
|
||||||
*/
|
*/
|
||||||
sdev_printk(KERN_ERR, sdev,
|
sdev_printk(KERN_ERR, sdev,
|
||||||
"Unexpected response"
|
"Unexpected response"
|
||||||
" from lun %d while scanning, scan"
|
" from lun %llu while scanning, scan"
|
||||||
" aborted\n", lun);
|
" aborted\n", (unsigned long long)lun);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1537,7 +1521,7 @@ static int scsi_report_lun_scan(struct scsi_target *starget, int bflags,
|
||||||
}
|
}
|
||||||
|
|
||||||
struct scsi_device *__scsi_add_device(struct Scsi_Host *shost, uint channel,
|
struct scsi_device *__scsi_add_device(struct Scsi_Host *shost, uint channel,
|
||||||
uint id, uint lun, void *hostdata)
|
uint id, u64 lun, void *hostdata)
|
||||||
{
|
{
|
||||||
struct scsi_device *sdev = ERR_PTR(-ENODEV);
|
struct scsi_device *sdev = ERR_PTR(-ENODEV);
|
||||||
struct device *parent = &shost->shost_gendev;
|
struct device *parent = &shost->shost_gendev;
|
||||||
|
@ -1573,7 +1557,7 @@ struct scsi_device *__scsi_add_device(struct Scsi_Host *shost, uint channel,
|
||||||
EXPORT_SYMBOL(__scsi_add_device);
|
EXPORT_SYMBOL(__scsi_add_device);
|
||||||
|
|
||||||
int scsi_add_device(struct Scsi_Host *host, uint channel,
|
int scsi_add_device(struct Scsi_Host *host, uint channel,
|
||||||
uint target, uint lun)
|
uint target, u64 lun)
|
||||||
{
|
{
|
||||||
struct scsi_device *sdev =
|
struct scsi_device *sdev =
|
||||||
__scsi_add_device(host, channel, target, lun, NULL);
|
__scsi_add_device(host, channel, target, lun, NULL);
|
||||||
|
@ -1602,7 +1586,7 @@ void scsi_rescan_device(struct device *dev)
|
||||||
EXPORT_SYMBOL(scsi_rescan_device);
|
EXPORT_SYMBOL(scsi_rescan_device);
|
||||||
|
|
||||||
static void __scsi_scan_target(struct device *parent, unsigned int channel,
|
static void __scsi_scan_target(struct device *parent, unsigned int channel,
|
||||||
unsigned int id, unsigned int lun, int rescan)
|
unsigned int id, u64 lun, int rescan)
|
||||||
{
|
{
|
||||||
struct Scsi_Host *shost = dev_to_shost(parent);
|
struct Scsi_Host *shost = dev_to_shost(parent);
|
||||||
int bflags = 0;
|
int bflags = 0;
|
||||||
|
@ -1670,7 +1654,7 @@ static void __scsi_scan_target(struct device *parent, unsigned int channel,
|
||||||
* sequential scan of LUNs on the target id.
|
* sequential scan of LUNs on the target id.
|
||||||
**/
|
**/
|
||||||
void scsi_scan_target(struct device *parent, unsigned int channel,
|
void scsi_scan_target(struct device *parent, unsigned int channel,
|
||||||
unsigned int id, unsigned int lun, int rescan)
|
unsigned int id, u64 lun, int rescan)
|
||||||
{
|
{
|
||||||
struct Scsi_Host *shost = dev_to_shost(parent);
|
struct Scsi_Host *shost = dev_to_shost(parent);
|
||||||
|
|
||||||
|
@ -1690,7 +1674,7 @@ void scsi_scan_target(struct device *parent, unsigned int channel,
|
||||||
EXPORT_SYMBOL(scsi_scan_target);
|
EXPORT_SYMBOL(scsi_scan_target);
|
||||||
|
|
||||||
static void scsi_scan_channel(struct Scsi_Host *shost, unsigned int channel,
|
static void scsi_scan_channel(struct Scsi_Host *shost, unsigned int channel,
|
||||||
unsigned int id, unsigned int lun, int rescan)
|
unsigned int id, u64 lun, int rescan)
|
||||||
{
|
{
|
||||||
uint order_id;
|
uint order_id;
|
||||||
|
|
||||||
|
@ -1721,10 +1705,10 @@ static void scsi_scan_channel(struct Scsi_Host *shost, unsigned int channel,
|
||||||
}
|
}
|
||||||
|
|
||||||
int scsi_scan_host_selected(struct Scsi_Host *shost, unsigned int channel,
|
int scsi_scan_host_selected(struct Scsi_Host *shost, unsigned int channel,
|
||||||
unsigned int id, unsigned int lun, int rescan)
|
unsigned int id, u64 lun, int rescan)
|
||||||
{
|
{
|
||||||
SCSI_LOG_SCAN_BUS(3, shost_printk (KERN_INFO, shost,
|
SCSI_LOG_SCAN_BUS(3, shost_printk (KERN_INFO, shost,
|
||||||
"%s: <%u:%u:%u>\n",
|
"%s: <%u:%u:%llu>\n",
|
||||||
__func__, channel, id, lun));
|
__func__, channel, id, lun));
|
||||||
|
|
||||||
if (((channel != SCAN_WILD_CARD) && (channel > shost->max_channel)) ||
|
if (((channel != SCAN_WILD_CARD) && (channel > shost->max_channel)) ||
|
||||||
|
|
|
@ -80,7 +80,7 @@ const char *scsi_host_state_name(enum scsi_host_state state)
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int check_set(unsigned int *val, char *src)
|
static int check_set(unsigned long long *val, char *src)
|
||||||
{
|
{
|
||||||
char *last;
|
char *last;
|
||||||
|
|
||||||
|
@ -90,7 +90,7 @@ static int check_set(unsigned int *val, char *src)
|
||||||
/*
|
/*
|
||||||
* Doesn't check for int overflow
|
* Doesn't check for int overflow
|
||||||
*/
|
*/
|
||||||
*val = simple_strtoul(src, &last, 0);
|
*val = simple_strtoull(src, &last, 0);
|
||||||
if (*last != '\0')
|
if (*last != '\0')
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -99,11 +99,11 @@ static int check_set(unsigned int *val, char *src)
|
||||||
|
|
||||||
static int scsi_scan(struct Scsi_Host *shost, const char *str)
|
static int scsi_scan(struct Scsi_Host *shost, const char *str)
|
||||||
{
|
{
|
||||||
char s1[15], s2[15], s3[15], junk;
|
char s1[15], s2[15], s3[17], junk;
|
||||||
unsigned int channel, id, lun;
|
unsigned long long channel, id, lun;
|
||||||
int res;
|
int res;
|
||||||
|
|
||||||
res = sscanf(str, "%10s %10s %10s %c", s1, s2, s3, &junk);
|
res = sscanf(str, "%10s %10s %16s %c", s1, s2, s3, &junk);
|
||||||
if (res != 3)
|
if (res != 3)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
if (check_set(&channel, s1))
|
if (check_set(&channel, s1))
|
||||||
|
@ -1230,13 +1230,13 @@ void scsi_sysfs_device_initialize(struct scsi_device *sdev)
|
||||||
device_initialize(&sdev->sdev_gendev);
|
device_initialize(&sdev->sdev_gendev);
|
||||||
sdev->sdev_gendev.bus = &scsi_bus_type;
|
sdev->sdev_gendev.bus = &scsi_bus_type;
|
||||||
sdev->sdev_gendev.type = &scsi_dev_type;
|
sdev->sdev_gendev.type = &scsi_dev_type;
|
||||||
dev_set_name(&sdev->sdev_gendev, "%d:%d:%d:%d",
|
dev_set_name(&sdev->sdev_gendev, "%d:%d:%d:%llu",
|
||||||
sdev->host->host_no, sdev->channel, sdev->id, sdev->lun);
|
sdev->host->host_no, sdev->channel, sdev->id, sdev->lun);
|
||||||
|
|
||||||
device_initialize(&sdev->sdev_dev);
|
device_initialize(&sdev->sdev_dev);
|
||||||
sdev->sdev_dev.parent = get_device(&sdev->sdev_gendev);
|
sdev->sdev_dev.parent = get_device(&sdev->sdev_gendev);
|
||||||
sdev->sdev_dev.class = &sdev_class;
|
sdev->sdev_dev.class = &sdev_class;
|
||||||
dev_set_name(&sdev->sdev_dev, "%d:%d:%d:%d",
|
dev_set_name(&sdev->sdev_dev, "%d:%d:%d:%llu",
|
||||||
sdev->host->host_no, sdev->channel, sdev->id, sdev->lun);
|
sdev->host->host_no, sdev->channel, sdev->id, sdev->lun);
|
||||||
sdev->scsi_level = starget->scsi_level;
|
sdev->scsi_level = starget->scsi_level;
|
||||||
transport_setup_device(&sdev->sdev_gendev);
|
transport_setup_device(&sdev->sdev_gendev);
|
||||||
|
|
|
@ -2089,7 +2089,7 @@ fc_timed_out(struct scsi_cmnd *scmd)
|
||||||
* on the rport.
|
* on the rport.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
fc_user_scan_tgt(struct Scsi_Host *shost, uint channel, uint id, uint lun)
|
fc_user_scan_tgt(struct Scsi_Host *shost, uint channel, uint id, u64 lun)
|
||||||
{
|
{
|
||||||
struct fc_rport *rport;
|
struct fc_rport *rport;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
@ -2121,7 +2121,7 @@ fc_user_scan_tgt(struct Scsi_Host *shost, uint channel, uint id, uint lun)
|
||||||
* object as the parent.
|
* object as the parent.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
fc_user_scan(struct Scsi_Host *shost, uint channel, uint id, uint lun)
|
fc_user_scan(struct Scsi_Host *shost, uint channel, uint id, u64 lun)
|
||||||
{
|
{
|
||||||
uint chlo, chhi;
|
uint chlo, chhi;
|
||||||
uint tgtlo, tgthi;
|
uint tgtlo, tgthi;
|
||||||
|
|
|
@ -1780,7 +1780,7 @@ EXPORT_SYMBOL_GPL(iscsi_scan_finished);
|
||||||
struct iscsi_scan_data {
|
struct iscsi_scan_data {
|
||||||
unsigned int channel;
|
unsigned int channel;
|
||||||
unsigned int id;
|
unsigned int id;
|
||||||
unsigned int lun;
|
u64 lun;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int iscsi_user_scan_session(struct device *dev, void *data)
|
static int iscsi_user_scan_session(struct device *dev, void *data)
|
||||||
|
@ -1827,7 +1827,7 @@ static int iscsi_user_scan_session(struct device *dev, void *data)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int iscsi_user_scan(struct Scsi_Host *shost, uint channel,
|
static int iscsi_user_scan(struct Scsi_Host *shost, uint channel,
|
||||||
uint id, uint lun)
|
uint id, u64 lun)
|
||||||
{
|
{
|
||||||
struct iscsi_scan_data scan_data;
|
struct iscsi_scan_data scan_data;
|
||||||
|
|
||||||
|
|
|
@ -1705,7 +1705,7 @@ EXPORT_SYMBOL(scsi_is_sas_rphy);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int sas_user_scan(struct Scsi_Host *shost, uint channel,
|
static int sas_user_scan(struct Scsi_Host *shost, uint channel,
|
||||||
uint id, uint lun)
|
uint id, u64 lun)
|
||||||
{
|
{
|
||||||
struct sas_host_attrs *sas_host = to_sas_host_attrs(shost);
|
struct sas_host_attrs *sas_host = to_sas_host_attrs(shost);
|
||||||
struct sas_rphy *rphy;
|
struct sas_rphy *rphy;
|
||||||
|
|
|
@ -2542,7 +2542,7 @@ static int sg_proc_seq_show_dev(struct seq_file *s, void *v)
|
||||||
seq_puts(s, "-1\t-1\t-1\t-1\t-1\t-1\t-1\t-1\t-1\n");
|
seq_puts(s, "-1\t-1\t-1\t-1\t-1\t-1\t-1\t-1\t-1\n");
|
||||||
else {
|
else {
|
||||||
scsidp = sdp->device;
|
scsidp = sdp->device;
|
||||||
seq_printf(s, "%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\t%d\n",
|
seq_printf(s, "%d\t%d\t%d\t%llu\t%d\t%d\t%d\t%d\t%d\n",
|
||||||
scsidp->host->host_no, scsidp->channel,
|
scsidp->host->host_no, scsidp->channel,
|
||||||
scsidp->id, scsidp->lun, (int) scsidp->type,
|
scsidp->id, scsidp->lun, (int) scsidp->type,
|
||||||
1,
|
1,
|
||||||
|
@ -2671,7 +2671,7 @@ static int sg_proc_seq_show_debug(struct seq_file *s, void *v)
|
||||||
else if (sdp->device) {
|
else if (sdp->device) {
|
||||||
struct scsi_device *scsidp = sdp->device;
|
struct scsi_device *scsidp = sdp->device;
|
||||||
|
|
||||||
seq_printf(s, "%d:%d:%d:%d em=%d",
|
seq_printf(s, "%d:%d:%d:%llu em=%d",
|
||||||
scsidp->host->host_no,
|
scsidp->host->host_no,
|
||||||
scsidp->channel, scsidp->id,
|
scsidp->channel, scsidp->id,
|
||||||
scsidp->lun,
|
scsidp->lun,
|
||||||
|
|
|
@ -355,17 +355,18 @@ static void __init init_tags( void )
|
||||||
|
|
||||||
static int is_lun_busy(struct scsi_cmnd *cmd, int should_be_tagged)
|
static int is_lun_busy(struct scsi_cmnd *cmd, int should_be_tagged)
|
||||||
{
|
{
|
||||||
|
u8 lun = cmd->device->lun;
|
||||||
SETUP_HOSTDATA(cmd->device->host);
|
SETUP_HOSTDATA(cmd->device->host);
|
||||||
|
|
||||||
if (hostdata->busy[cmd->device->id] & (1 << cmd->device->lun))
|
if (hostdata->busy[cmd->device->id] & (1 << lun))
|
||||||
return( 1 );
|
return( 1 );
|
||||||
if (!should_be_tagged ||
|
if (!should_be_tagged ||
|
||||||
!setup_use_tagged_queuing || !cmd->device->tagged_supported)
|
!setup_use_tagged_queuing || !cmd->device->tagged_supported)
|
||||||
return( 0 );
|
return( 0 );
|
||||||
if (TagAlloc[cmd->device->id][cmd->device->lun].nr_allocated >=
|
if (TagAlloc[cmd->device->id][lun].nr_allocated >=
|
||||||
TagAlloc[cmd->device->id][cmd->device->lun].queue_size ) {
|
TagAlloc[cmd->device->id][lun].queue_size ) {
|
||||||
dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %d: no free tags\n",
|
dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %d: no free tags\n",
|
||||||
H_NO(cmd), cmd->device->id, cmd->device->lun );
|
H_NO(cmd), cmd->device->id, lun );
|
||||||
return( 1 );
|
return( 1 );
|
||||||
}
|
}
|
||||||
return( 0 );
|
return( 0 );
|
||||||
|
@ -379,6 +380,7 @@ static int is_lun_busy(struct scsi_cmnd *cmd, int should_be_tagged)
|
||||||
|
|
||||||
static void cmd_get_tag(struct scsi_cmnd *cmd, int should_be_tagged)
|
static void cmd_get_tag(struct scsi_cmnd *cmd, int should_be_tagged)
|
||||||
{
|
{
|
||||||
|
u8 lun = cmd->device->lun;
|
||||||
SETUP_HOSTDATA(cmd->device->host);
|
SETUP_HOSTDATA(cmd->device->host);
|
||||||
|
|
||||||
/* If we or the target don't support tagged queuing, allocate the LUN for
|
/* If we or the target don't support tagged queuing, allocate the LUN for
|
||||||
|
@ -387,19 +389,19 @@ static void cmd_get_tag(struct scsi_cmnd *cmd, int should_be_tagged)
|
||||||
if (!should_be_tagged ||
|
if (!should_be_tagged ||
|
||||||
!setup_use_tagged_queuing || !cmd->device->tagged_supported) {
|
!setup_use_tagged_queuing || !cmd->device->tagged_supported) {
|
||||||
cmd->tag = TAG_NONE;
|
cmd->tag = TAG_NONE;
|
||||||
hostdata->busy[cmd->device->id] |= (1 << cmd->device->lun);
|
hostdata->busy[cmd->device->id] |= (1 << lun);
|
||||||
dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %d now allocated by untagged "
|
dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %d now allocated by untagged "
|
||||||
"command\n", H_NO(cmd), cmd->device->id, cmd->device->lun );
|
"command\n", H_NO(cmd), cmd->device->id, lun );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
TAG_ALLOC *ta = &TagAlloc[cmd->device->id][cmd->device->lun];
|
TAG_ALLOC *ta = &TagAlloc[cmd->device->id][lun];
|
||||||
|
|
||||||
cmd->tag = find_first_zero_bit( &ta->allocated, MAX_TAGS );
|
cmd->tag = find_first_zero_bit( &ta->allocated, MAX_TAGS );
|
||||||
set_bit( cmd->tag, &ta->allocated );
|
set_bit( cmd->tag, &ta->allocated );
|
||||||
ta->nr_allocated++;
|
ta->nr_allocated++;
|
||||||
dprintk(NDEBUG_TAGS, "scsi%d: using tag %d for target %d lun %d "
|
dprintk(NDEBUG_TAGS, "scsi%d: using tag %d for target %d lun %d "
|
||||||
"(now %d tags in use)\n",
|
"(now %d tags in use)\n",
|
||||||
H_NO(cmd), cmd->tag, cmd->device->id, cmd->device->lun,
|
H_NO(cmd), cmd->tag, cmd->device->id, lun,
|
||||||
ta->nr_allocated );
|
ta->nr_allocated );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -411,23 +413,24 @@ static void cmd_get_tag(struct scsi_cmnd *cmd, int should_be_tagged)
|
||||||
|
|
||||||
static void cmd_free_tag(struct scsi_cmnd *cmd)
|
static void cmd_free_tag(struct scsi_cmnd *cmd)
|
||||||
{
|
{
|
||||||
|
u8 lun = cmd->device->lun;
|
||||||
SETUP_HOSTDATA(cmd->device->host);
|
SETUP_HOSTDATA(cmd->device->host);
|
||||||
|
|
||||||
if (cmd->tag == TAG_NONE) {
|
if (cmd->tag == TAG_NONE) {
|
||||||
hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun);
|
hostdata->busy[cmd->device->id] &= ~(1 << lun);
|
||||||
dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %d untagged cmd finished\n",
|
dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %d untagged cmd finished\n",
|
||||||
H_NO(cmd), cmd->device->id, cmd->device->lun );
|
H_NO(cmd), cmd->device->id, lun );
|
||||||
}
|
}
|
||||||
else if (cmd->tag >= MAX_TAGS) {
|
else if (cmd->tag >= MAX_TAGS) {
|
||||||
printk(KERN_NOTICE "scsi%d: trying to free bad tag %d!\n",
|
printk(KERN_NOTICE "scsi%d: trying to free bad tag %d!\n",
|
||||||
H_NO(cmd), cmd->tag );
|
H_NO(cmd), cmd->tag );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
TAG_ALLOC *ta = &TagAlloc[cmd->device->id][cmd->device->lun];
|
TAG_ALLOC *ta = &TagAlloc[cmd->device->id][lun];
|
||||||
clear_bit( cmd->tag, &ta->allocated );
|
clear_bit( cmd->tag, &ta->allocated );
|
||||||
ta->nr_allocated--;
|
ta->nr_allocated--;
|
||||||
dprintk(NDEBUG_TAGS, "scsi%d: freed tag %d for target %d lun %d\n",
|
dprintk(NDEBUG_TAGS, "scsi%d: freed tag %d for target %d lun %d\n",
|
||||||
H_NO(cmd), cmd->tag, cmd->device->id, cmd->device->lun );
|
H_NO(cmd), cmd->tag, cmd->device->id, lun );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -659,7 +662,7 @@ static void lprint_Scsi_Cmnd(Scsi_Cmnd *cmd)
|
||||||
{
|
{
|
||||||
int i, s;
|
int i, s;
|
||||||
unsigned char *command;
|
unsigned char *command;
|
||||||
printk("scsi%d: destination target %d, lun %d\n",
|
printk("scsi%d: destination target %d, lun %llu\n",
|
||||||
H_NO(cmd), cmd->device->id, cmd->device->lun);
|
H_NO(cmd), cmd->device->id, cmd->device->lun);
|
||||||
printk(KERN_CONT " command = ");
|
printk(KERN_CONT " command = ");
|
||||||
command = cmd->cmnd;
|
command = cmd->cmnd;
|
||||||
|
@ -705,7 +708,7 @@ static void show_Scsi_Cmnd(Scsi_Cmnd *cmd, struct seq_file *m)
|
||||||
{
|
{
|
||||||
int i, s;
|
int i, s;
|
||||||
unsigned char *command;
|
unsigned char *command;
|
||||||
seq_printf(m, "scsi%d: destination target %d, lun %d\n",
|
seq_printf(m, "scsi%d: destination target %d, lun %llu\n",
|
||||||
H_NO(cmd), cmd->device->id, cmd->device->lun);
|
H_NO(cmd), cmd->device->id, cmd->device->lun);
|
||||||
seq_printf(m, " command = ");
|
seq_printf(m, " command = ");
|
||||||
command = cmd->cmnd;
|
command = cmd->cmnd;
|
||||||
|
@ -1007,7 +1010,7 @@ static void NCR5380_main (struct work_struct *bl)
|
||||||
prev = NULL; tmp; prev = tmp, tmp = NEXT(tmp) ) {
|
prev = NULL; tmp; prev = tmp, tmp = NEXT(tmp) ) {
|
||||||
|
|
||||||
if (prev != tmp)
|
if (prev != tmp)
|
||||||
dprintk(NDEBUG_LISTS, "MAIN tmp=%p target=%d busy=%d lun=%d\n", tmp, tmp->device->id, hostdata->busy[tmp->device->id], tmp->device->lun);
|
dprintk(NDEBUG_LISTS, "MAIN tmp=%p target=%d busy=%d lun=%llu\n", tmp, tmp->device->id, hostdata->busy[tmp->device->id], tmp->device->lun);
|
||||||
/* When we find one, remove it from the issue queue. */
|
/* When we find one, remove it from the issue queue. */
|
||||||
/* ++guenther: possible race with Falcon locking */
|
/* ++guenther: possible race with Falcon locking */
|
||||||
if (
|
if (
|
||||||
|
@ -1038,7 +1041,7 @@ static void NCR5380_main (struct work_struct *bl)
|
||||||
* issue queue so we can keep trying.
|
* issue queue so we can keep trying.
|
||||||
*/
|
*/
|
||||||
dprintk(NDEBUG_MAIN, "scsi%d: main(): command for target %d "
|
dprintk(NDEBUG_MAIN, "scsi%d: main(): command for target %d "
|
||||||
"lun %d removed from issue_queue\n",
|
"lun %llu removed from issue_queue\n",
|
||||||
HOSTNO, tmp->device->id, tmp->device->lun);
|
HOSTNO, tmp->device->id, tmp->device->lun);
|
||||||
/*
|
/*
|
||||||
* REQUEST SENSE commands are issued without tagged
|
* REQUEST SENSE commands are issued without tagged
|
||||||
|
@ -2020,7 +2023,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
|
||||||
* accesses to this device will use the
|
* accesses to this device will use the
|
||||||
* polled-IO. */
|
* polled-IO. */
|
||||||
printk(KERN_NOTICE "scsi%d: switching target %d "
|
printk(KERN_NOTICE "scsi%d: switching target %d "
|
||||||
"lun %d to slow handshake\n", HOSTNO,
|
"lun %llu to slow handshake\n", HOSTNO,
|
||||||
cmd->device->id, cmd->device->lun);
|
cmd->device->id, cmd->device->lun);
|
||||||
cmd->device->borken = 1;
|
cmd->device->borken = 1;
|
||||||
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE |
|
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE |
|
||||||
|
@ -2078,7 +2081,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
|
||||||
/* Accept message by clearing ACK */
|
/* Accept message by clearing ACK */
|
||||||
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
|
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
|
||||||
|
|
||||||
dprintk(NDEBUG_LINKED, "scsi%d: target %d lun %d linked command "
|
dprintk(NDEBUG_LINKED, "scsi%d: target %d lun %llu linked command "
|
||||||
"complete.\n", HOSTNO, cmd->device->id, cmd->device->lun);
|
"complete.\n", HOSTNO, cmd->device->id, cmd->device->lun);
|
||||||
|
|
||||||
/* Enable reselect interrupts */
|
/* Enable reselect interrupts */
|
||||||
|
@ -2090,7 +2093,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!cmd->next_link) {
|
if (!cmd->next_link) {
|
||||||
printk(KERN_NOTICE "scsi%d: target %d lun %d "
|
printk(KERN_NOTICE "scsi%d: target %d lun %llu "
|
||||||
"linked command complete, no next_link\n",
|
"linked command complete, no next_link\n",
|
||||||
HOSTNO, cmd->device->id, cmd->device->lun);
|
HOSTNO, cmd->device->id, cmd->device->lun);
|
||||||
sink = 1;
|
sink = 1;
|
||||||
|
@ -2103,7 +2106,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
|
||||||
* and don't free it! */
|
* and don't free it! */
|
||||||
cmd->next_link->tag = cmd->tag;
|
cmd->next_link->tag = cmd->tag;
|
||||||
cmd->result = cmd->SCp.Status | (cmd->SCp.Message << 8);
|
cmd->result = cmd->SCp.Status | (cmd->SCp.Message << 8);
|
||||||
dprintk(NDEBUG_LINKED, "scsi%d: target %d lun %d linked request "
|
dprintk(NDEBUG_LINKED, "scsi%d: target %d lun %llu linked request "
|
||||||
"done, calling scsi_done().\n",
|
"done, calling scsi_done().\n",
|
||||||
HOSTNO, cmd->device->id, cmd->device->lun);
|
HOSTNO, cmd->device->id, cmd->device->lun);
|
||||||
#ifdef NCR5380_STATS
|
#ifdef NCR5380_STATS
|
||||||
|
@ -2118,7 +2121,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
|
||||||
/* Accept message by clearing ACK */
|
/* Accept message by clearing ACK */
|
||||||
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
|
NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
|
||||||
hostdata->connected = NULL;
|
hostdata->connected = NULL;
|
||||||
dprintk(NDEBUG_QUEUES, "scsi%d: command for target %d, lun %d "
|
dprintk(NDEBUG_QUEUES, "scsi%d: command for target %d, lun %llu "
|
||||||
"completed\n", HOSTNO, cmd->device->id, cmd->device->lun);
|
"completed\n", HOSTNO, cmd->device->id, cmd->device->lun);
|
||||||
#ifdef SUPPORT_TAGS
|
#ifdef SUPPORT_TAGS
|
||||||
cmd_free_tag( cmd );
|
cmd_free_tag( cmd );
|
||||||
|
@ -2132,7 +2135,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
|
||||||
/* ++Andreas: the mid level code knows about
|
/* ++Andreas: the mid level code knows about
|
||||||
QUEUE_FULL now. */
|
QUEUE_FULL now. */
|
||||||
TAG_ALLOC *ta = &TagAlloc[cmd->device->id][cmd->device->lun];
|
TAG_ALLOC *ta = &TagAlloc[cmd->device->id][cmd->device->lun];
|
||||||
dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %d returned "
|
dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %llu returned "
|
||||||
"QUEUE_FULL after %d commands\n",
|
"QUEUE_FULL after %d commands\n",
|
||||||
HOSTNO, cmd->device->id, cmd->device->lun,
|
HOSTNO, cmd->device->id, cmd->device->lun,
|
||||||
ta->nr_allocated);
|
ta->nr_allocated);
|
||||||
|
@ -2228,7 +2231,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
|
||||||
cmd->device->tagged_supported = 0;
|
cmd->device->tagged_supported = 0;
|
||||||
hostdata->busy[cmd->device->id] |= (1 << cmd->device->lun);
|
hostdata->busy[cmd->device->id] |= (1 << cmd->device->lun);
|
||||||
cmd->tag = TAG_NONE;
|
cmd->tag = TAG_NONE;
|
||||||
dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %d rejected "
|
dprintk(NDEBUG_TAGS, "scsi%d: target %d lun %llu rejected "
|
||||||
"QUEUE_TAG message; tagged queuing "
|
"QUEUE_TAG message; tagged queuing "
|
||||||
"disabled\n",
|
"disabled\n",
|
||||||
HOSTNO, cmd->device->id, cmd->device->lun);
|
HOSTNO, cmd->device->id, cmd->device->lun);
|
||||||
|
@ -2245,7 +2248,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
|
||||||
hostdata->connected = NULL;
|
hostdata->connected = NULL;
|
||||||
hostdata->disconnected_queue = cmd;
|
hostdata->disconnected_queue = cmd;
|
||||||
local_irq_restore(flags);
|
local_irq_restore(flags);
|
||||||
dprintk(NDEBUG_QUEUES, "scsi%d: command for target %d lun %d was "
|
dprintk(NDEBUG_QUEUES, "scsi%d: command for target %d lun %llu was "
|
||||||
"moved from connected to the "
|
"moved from connected to the "
|
||||||
"disconnected_queue\n", HOSTNO,
|
"disconnected_queue\n", HOSTNO,
|
||||||
cmd->device->id, cmd->device->lun);
|
cmd->device->id, cmd->device->lun);
|
||||||
|
@ -2349,12 +2352,12 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
|
||||||
printk("\n");
|
printk("\n");
|
||||||
} else if (tmp != EXTENDED_MESSAGE)
|
} else if (tmp != EXTENDED_MESSAGE)
|
||||||
printk(KERN_DEBUG "scsi%d: rejecting unknown "
|
printk(KERN_DEBUG "scsi%d: rejecting unknown "
|
||||||
"message %02x from target %d, lun %d\n",
|
"message %02x from target %d, lun %llu\n",
|
||||||
HOSTNO, tmp, cmd->device->id, cmd->device->lun);
|
HOSTNO, tmp, cmd->device->id, cmd->device->lun);
|
||||||
else
|
else
|
||||||
printk(KERN_DEBUG "scsi%d: rejecting unknown "
|
printk(KERN_DEBUG "scsi%d: rejecting unknown "
|
||||||
"extended message "
|
"extended message "
|
||||||
"code %02x, length %d from target %d, lun %d\n",
|
"code %02x, length %d from target %d, lun %llu\n",
|
||||||
HOSTNO, extended_msg[1], extended_msg[0],
|
HOSTNO, extended_msg[1], extended_msg[0],
|
||||||
cmd->device->id, cmd->device->lun);
|
cmd->device->id, cmd->device->lun);
|
||||||
|
|
||||||
|
@ -2576,7 +2579,7 @@ static void NCR5380_reselect (struct Scsi_Host *instance)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
hostdata->connected = tmp;
|
hostdata->connected = tmp;
|
||||||
dprintk(NDEBUG_RESELECTION, "scsi%d: nexus established, target = %d, lun = %d, tag = %d\n",
|
dprintk(NDEBUG_RESELECTION, "scsi%d: nexus established, target = %d, lun = %llu, tag = %d\n",
|
||||||
HOSTNO, tmp->device->id, tmp->device->lun, tmp->tag);
|
HOSTNO, tmp->device->id, tmp->device->lun, tmp->tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -851,7 +851,7 @@ static void sym53c8xx_slave_destroy(struct scsi_device *sdev)
|
||||||
* so let's try to stop all on-going I/O.
|
* so let's try to stop all on-going I/O.
|
||||||
*/
|
*/
|
||||||
starget_printk(KERN_WARNING, tp->starget,
|
starget_printk(KERN_WARNING, tp->starget,
|
||||||
"Removing busy LCB (%d)\n", sdev->lun);
|
"Removing busy LCB (%d)\n", (u8)sdev->lun);
|
||||||
sym_reset_scsi_bus(np, 1);
|
sym_reset_scsi_bus(np, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -581,7 +581,7 @@ struct sym_pmc {
|
||||||
#define sym_lp(tp, lun) (!lun) ? (tp)->lun0p : NULL
|
#define sym_lp(tp, lun) (!lun) ? (tp)->lun0p : NULL
|
||||||
#else
|
#else
|
||||||
#define sym_lp(tp, lun) \
|
#define sym_lp(tp, lun) \
|
||||||
(!lun) ? (tp)->lun0p : (tp)->lunmp ? (tp)->lunmp[(lun)] : NULL
|
(!lun) ? (tp)->lun0p : (tp)->lunmp ? (tp)->lunmp[((u8)lun)] : NULL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -621,7 +621,7 @@ dc390_StartSCSI( struct dc390_acb* pACB, struct dc390_dcb* pDCB, struct dc390_sr
|
||||||
{
|
{
|
||||||
dc390_freetag (pDCB, pSRB);
|
dc390_freetag (pDCB, pSRB);
|
||||||
DEBUG0(printk ("DC390: Interrupt during Start SCSI (target %02i-%02i)\n",
|
DEBUG0(printk ("DC390: Interrupt during Start SCSI (target %02i-%02i)\n",
|
||||||
scmd->device->id, scmd->device->lun));
|
scmd->device->id, (u8)scmd->device->lun));
|
||||||
pSRB->SRBState = SRB_READY;
|
pSRB->SRBState = SRB_READY;
|
||||||
//DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD);
|
//DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD);
|
||||||
pACB->SelLost++;
|
pACB->SelLost++;
|
||||||
|
@ -1726,7 +1726,7 @@ dc390_SRBdone( struct dc390_acb* pACB, struct dc390_dcb* pDCB, struct dc390_srb*
|
||||||
} else {
|
} else {
|
||||||
SET_RES_DRV(pcmd->result, DRIVER_SENSE);
|
SET_RES_DRV(pcmd->result, DRIVER_SENSE);
|
||||||
//pSRB->ScsiCmdLen = (u8) (pSRB->Segment1[0] >> 8);
|
//pSRB->ScsiCmdLen = (u8) (pSRB->Segment1[0] >> 8);
|
||||||
DEBUG0 (printk ("DC390: RETRY (%02x), target %02i-%02i\n", pcmd->cmnd[0], pcmd->device->id, pcmd->device->lun));
|
DEBUG0 (printk ("DC390: RETRY (%02x), target %02i-%02i\n", pcmd->cmnd[0], pcmd->device->id, (u8)pcmd->device->lun));
|
||||||
pSRB->TotalXferredLen = 0;
|
pSRB->TotalXferredLen = 0;
|
||||||
SET_RES_DID(pcmd->result, DID_SOFT_ERROR);
|
SET_RES_DID(pcmd->result, DID_SOFT_ERROR);
|
||||||
}
|
}
|
||||||
|
@ -1746,7 +1746,7 @@ dc390_SRBdone( struct dc390_acb* pACB, struct dc390_dcb* pDCB, struct dc390_srb*
|
||||||
else if (status == SAM_STAT_TASK_SET_FULL)
|
else if (status == SAM_STAT_TASK_SET_FULL)
|
||||||
{
|
{
|
||||||
scsi_track_queue_full(pcmd->device, pDCB->GoingSRBCnt - 1);
|
scsi_track_queue_full(pcmd->device, pDCB->GoingSRBCnt - 1);
|
||||||
DEBUG0 (printk ("DC390: RETRY (%02x), target %02i-%02i\n", pcmd->cmnd[0], pcmd->device->id, pcmd->device->lun));
|
DEBUG0 (printk ("DC390: RETRY (%02x), target %02i-%02i\n", pcmd->cmnd[0], pcmd->device->id, (u8)pcmd->device->lun));
|
||||||
pSRB->TotalXferredLen = 0;
|
pSRB->TotalXferredLen = 0;
|
||||||
SET_RES_DID(pcmd->result, DID_SOFT_ERROR);
|
SET_RES_DID(pcmd->result, DID_SOFT_ERROR);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1285,14 +1285,14 @@ static int u14_34f_queuecommand_lck(struct scsi_cmnd *SCpnt, void (*done)(struct
|
||||||
cpp->cpp_index = i;
|
cpp->cpp_index = i;
|
||||||
SCpnt->host_scribble = (unsigned char *) &cpp->cpp_index;
|
SCpnt->host_scribble = (unsigned char *) &cpp->cpp_index;
|
||||||
|
|
||||||
if (do_trace) printk("%s: qcomm, mbox %d, target %d.%d:%d.\n",
|
if (do_trace) printk("%s: qcomm, mbox %d, target %d.%d:%llu.\n",
|
||||||
BN(j), i, SCpnt->device->channel, SCpnt->device->id,
|
BN(j), i, SCpnt->device->channel, SCpnt->device->id,
|
||||||
SCpnt->device->lun);
|
(u8)SCpnt->device->lun);
|
||||||
|
|
||||||
cpp->opcode = OP_SCSI;
|
cpp->opcode = OP_SCSI;
|
||||||
cpp->channel = SCpnt->device->channel;
|
cpp->channel = SCpnt->device->channel;
|
||||||
cpp->target = SCpnt->device->id;
|
cpp->target = SCpnt->device->id;
|
||||||
cpp->lun = SCpnt->device->lun;
|
cpp->lun = (u8)SCpnt->device->lun;
|
||||||
cpp->SCpnt = SCpnt;
|
cpp->SCpnt = SCpnt;
|
||||||
cpp->cdb_len = SCpnt->cmd_len;
|
cpp->cdb_len = SCpnt->cmd_len;
|
||||||
memcpy(cpp->cdb, SCpnt->cmnd, SCpnt->cmd_len);
|
memcpy(cpp->cdb, SCpnt->cmnd, SCpnt->cmd_len);
|
||||||
|
@ -1663,10 +1663,10 @@ static int reorder(unsigned int j, unsigned long cursec,
|
||||||
if (link_statistics && (overlap || !(flushcount % link_statistics)))
|
if (link_statistics && (overlap || !(flushcount % link_statistics)))
|
||||||
for (n = 0; n < n_ready; n++) {
|
for (n = 0; n < n_ready; n++) {
|
||||||
k = il[n]; cpp = &HD(j)->cp[k]; SCpnt = cpp->SCpnt;
|
k = il[n]; cpp = &HD(j)->cp[k]; SCpnt = cpp->SCpnt;
|
||||||
printk("%s %d.%d:%d mb %d fc %d nr %d sec %ld ns %u"\
|
printk("%s %d.%d:%llu mb %d fc %d nr %d sec %ld ns %u"\
|
||||||
" cur %ld s:%c r:%c rev:%c in:%c ov:%c xd %d.\n",
|
" cur %ld s:%c r:%c rev:%c in:%c ov:%c xd %d.\n",
|
||||||
(ihdlr ? "ihdlr" : "qcomm"), SCpnt->channel, SCpnt->target,
|
(ihdlr ? "ihdlr" : "qcomm"), SCpnt->channel, SCpnt->target,
|
||||||
SCpnt->lun, k, flushcount, n_ready,
|
(u8)SCpnt->lun, k, flushcount, n_ready,
|
||||||
blk_rq_pos(SCpnt->request), blk_rq_sectors(SCpnt->request),
|
blk_rq_pos(SCpnt->request), blk_rq_sectors(SCpnt->request),
|
||||||
cursec, YESNO(s), YESNO(r), YESNO(rev), YESNO(input_only),
|
cursec, YESNO(s), YESNO(r), YESNO(rev), YESNO(input_only),
|
||||||
YESNO(overlap), cpp->xdir);
|
YESNO(overlap), cpp->xdir);
|
||||||
|
|
|
@ -502,7 +502,8 @@ wd33c93_execute(struct Scsi_Host *instance)
|
||||||
cmd = (struct scsi_cmnd *) hostdata->input_Q;
|
cmd = (struct scsi_cmnd *) hostdata->input_Q;
|
||||||
prev = NULL;
|
prev = NULL;
|
||||||
while (cmd) {
|
while (cmd) {
|
||||||
if (!(hostdata->busy[cmd->device->id] & (1 << cmd->device->lun)))
|
if (!(hostdata->busy[cmd->device->id] &
|
||||||
|
(1 << (cmd->device->lun & 0xff))))
|
||||||
break;
|
break;
|
||||||
prev = cmd;
|
prev = cmd;
|
||||||
cmd = (struct scsi_cmnd *) cmd->host_scribble;
|
cmd = (struct scsi_cmnd *) cmd->host_scribble;
|
||||||
|
@ -593,10 +594,10 @@ wd33c93_execute(struct Scsi_Host *instance)
|
||||||
|
|
||||||
write_wd33c93(regs, WD_SOURCE_ID, ((cmd->SCp.phase) ? SRCID_ER : 0));
|
write_wd33c93(regs, WD_SOURCE_ID, ((cmd->SCp.phase) ? SRCID_ER : 0));
|
||||||
|
|
||||||
write_wd33c93(regs, WD_TARGET_LUN, cmd->device->lun);
|
write_wd33c93(regs, WD_TARGET_LUN, (u8)cmd->device->lun);
|
||||||
write_wd33c93(regs, WD_SYNCHRONOUS_TRANSFER,
|
write_wd33c93(regs, WD_SYNCHRONOUS_TRANSFER,
|
||||||
hostdata->sync_xfer[cmd->device->id]);
|
hostdata->sync_xfer[cmd->device->id]);
|
||||||
hostdata->busy[cmd->device->id] |= (1 << cmd->device->lun);
|
hostdata->busy[cmd->device->id] |= (1 << (cmd->device->lun & 0xFF));
|
||||||
|
|
||||||
if ((hostdata->level2 == L2_NONE) ||
|
if ((hostdata->level2 == L2_NONE) ||
|
||||||
(hostdata->sync_stat[cmd->device->id] == SS_UNSET)) {
|
(hostdata->sync_stat[cmd->device->id] == SS_UNSET)) {
|
||||||
|
@ -862,7 +863,7 @@ wd33c93_intr(struct Scsi_Host *instance)
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd->result = DID_NO_CONNECT << 16;
|
cmd->result = DID_NO_CONNECT << 16;
|
||||||
hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun);
|
hostdata->busy[cmd->device->id] &= ~(1 << (cmd->device->lun & 0xff));
|
||||||
hostdata->state = S_UNCONNECTED;
|
hostdata->state = S_UNCONNECTED;
|
||||||
cmd->scsi_done(cmd);
|
cmd->scsi_done(cmd);
|
||||||
|
|
||||||
|
@ -895,7 +896,7 @@ wd33c93_intr(struct Scsi_Host *instance)
|
||||||
|
|
||||||
/* construct an IDENTIFY message with correct disconnect bit */
|
/* construct an IDENTIFY message with correct disconnect bit */
|
||||||
|
|
||||||
hostdata->outgoing_msg[0] = (0x80 | 0x00 | cmd->device->lun);
|
hostdata->outgoing_msg[0] = IDENTIFY(0, cmd->device->lun);
|
||||||
if (cmd->SCp.phase)
|
if (cmd->SCp.phase)
|
||||||
hostdata->outgoing_msg[0] |= 0x40;
|
hostdata->outgoing_msg[0] |= 0x40;
|
||||||
|
|
||||||
|
@ -1179,7 +1180,7 @@ wd33c93_intr(struct Scsi_Host *instance)
|
||||||
lun = read_wd33c93(regs, WD_TARGET_LUN);
|
lun = read_wd33c93(regs, WD_TARGET_LUN);
|
||||||
DB(DB_INTR, printk(":%d.%d", cmd->SCp.Status, lun))
|
DB(DB_INTR, printk(":%d.%d", cmd->SCp.Status, lun))
|
||||||
hostdata->connected = NULL;
|
hostdata->connected = NULL;
|
||||||
hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun);
|
hostdata->busy[cmd->device->id] &= ~(1 << (cmd->device->lun & 0xff));
|
||||||
hostdata->state = S_UNCONNECTED;
|
hostdata->state = S_UNCONNECTED;
|
||||||
if (cmd->SCp.Status == ILLEGAL_STATUS_BYTE)
|
if (cmd->SCp.Status == ILLEGAL_STATUS_BYTE)
|
||||||
cmd->SCp.Status = lun;
|
cmd->SCp.Status = lun;
|
||||||
|
@ -1268,7 +1269,7 @@ wd33c93_intr(struct Scsi_Host *instance)
|
||||||
}
|
}
|
||||||
DB(DB_INTR, printk("UNEXP_DISC"))
|
DB(DB_INTR, printk("UNEXP_DISC"))
|
||||||
hostdata->connected = NULL;
|
hostdata->connected = NULL;
|
||||||
hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun);
|
hostdata->busy[cmd->device->id] &= ~(1 << (cmd->device->lun & 0xff));
|
||||||
hostdata->state = S_UNCONNECTED;
|
hostdata->state = S_UNCONNECTED;
|
||||||
if (cmd->cmnd[0] == REQUEST_SENSE && cmd->SCp.Status != GOOD)
|
if (cmd->cmnd[0] == REQUEST_SENSE && cmd->SCp.Status != GOOD)
|
||||||
cmd->result =
|
cmd->result =
|
||||||
|
@ -1300,7 +1301,7 @@ wd33c93_intr(struct Scsi_Host *instance)
|
||||||
switch (hostdata->state) {
|
switch (hostdata->state) {
|
||||||
case S_PRE_CMP_DISC:
|
case S_PRE_CMP_DISC:
|
||||||
hostdata->connected = NULL;
|
hostdata->connected = NULL;
|
||||||
hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun);
|
hostdata->busy[cmd->device->id] &= ~(1 << (cmd->device->lun & 0xff));
|
||||||
hostdata->state = S_UNCONNECTED;
|
hostdata->state = S_UNCONNECTED;
|
||||||
DB(DB_INTR, printk(":%d", cmd->SCp.Status))
|
DB(DB_INTR, printk(":%d", cmd->SCp.Status))
|
||||||
if (cmd->cmnd[0] == REQUEST_SENSE
|
if (cmd->cmnd[0] == REQUEST_SENSE
|
||||||
|
@ -1353,7 +1354,7 @@ wd33c93_intr(struct Scsi_Host *instance)
|
||||||
if (hostdata->selecting) {
|
if (hostdata->selecting) {
|
||||||
cmd = (struct scsi_cmnd *) hostdata->selecting;
|
cmd = (struct scsi_cmnd *) hostdata->selecting;
|
||||||
hostdata->selecting = NULL;
|
hostdata->selecting = NULL;
|
||||||
hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun);
|
hostdata->busy[cmd->device->id] &= ~(1 << (cmd->device->lun & 0xff));
|
||||||
cmd->host_scribble =
|
cmd->host_scribble =
|
||||||
(uchar *) hostdata->input_Q;
|
(uchar *) hostdata->input_Q;
|
||||||
hostdata->input_Q = cmd;
|
hostdata->input_Q = cmd;
|
||||||
|
@ -1365,7 +1366,7 @@ wd33c93_intr(struct Scsi_Host *instance)
|
||||||
if (cmd) {
|
if (cmd) {
|
||||||
if (phs == 0x00) {
|
if (phs == 0x00) {
|
||||||
hostdata->busy[cmd->device->id] &=
|
hostdata->busy[cmd->device->id] &=
|
||||||
~(1 << cmd->device->lun);
|
~(1 << (cmd->device->lun & 0xff));
|
||||||
cmd->host_scribble =
|
cmd->host_scribble =
|
||||||
(uchar *) hostdata->input_Q;
|
(uchar *) hostdata->input_Q;
|
||||||
hostdata->input_Q = cmd;
|
hostdata->input_Q = cmd;
|
||||||
|
@ -1448,7 +1449,7 @@ wd33c93_intr(struct Scsi_Host *instance)
|
||||||
cmd = (struct scsi_cmnd *) hostdata->disconnected_Q;
|
cmd = (struct scsi_cmnd *) hostdata->disconnected_Q;
|
||||||
patch = NULL;
|
patch = NULL;
|
||||||
while (cmd) {
|
while (cmd) {
|
||||||
if (id == cmd->device->id && lun == cmd->device->lun)
|
if (id == cmd->device->id && lun == (u8)cmd->device->lun)
|
||||||
break;
|
break;
|
||||||
patch = cmd;
|
patch = cmd;
|
||||||
cmd = (struct scsi_cmnd *) cmd->host_scribble;
|
cmd = (struct scsi_cmnd *) cmd->host_scribble;
|
||||||
|
@ -1459,7 +1460,7 @@ wd33c93_intr(struct Scsi_Host *instance)
|
||||||
if (!cmd) {
|
if (!cmd) {
|
||||||
printk
|
printk
|
||||||
("---TROUBLE: target %d.%d not in disconnect queue---",
|
("---TROUBLE: target %d.%d not in disconnect queue---",
|
||||||
id, lun);
|
id, (u8)lun);
|
||||||
spin_unlock_irqrestore(&hostdata->lock, flags);
|
spin_unlock_irqrestore(&hostdata->lock, flags);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1705,7 +1706,7 @@ wd33c93_abort(struct scsi_cmnd * cmd)
|
||||||
sr = read_wd33c93(regs, WD_SCSI_STATUS);
|
sr = read_wd33c93(regs, WD_SCSI_STATUS);
|
||||||
printk("asr=%02x, sr=%02x.", asr, sr);
|
printk("asr=%02x, sr=%02x.", asr, sr);
|
||||||
|
|
||||||
hostdata->busy[cmd->device->id] &= ~(1 << cmd->device->lun);
|
hostdata->busy[cmd->device->id] &= ~(1 << (cmd->device->lun & 0xff));
|
||||||
hostdata->connected = NULL;
|
hostdata->connected = NULL;
|
||||||
hostdata->state = S_UNCONNECTED;
|
hostdata->state = S_UNCONNECTED;
|
||||||
cmd->result = DID_ABORT << 16;
|
cmd->result = DID_ABORT << 16;
|
||||||
|
@ -2169,7 +2170,7 @@ wd33c93_show_info(struct seq_file *m, struct Scsi_Host *instance)
|
||||||
seq_printf(m, "\nconnected: ");
|
seq_printf(m, "\nconnected: ");
|
||||||
if (hd->connected) {
|
if (hd->connected) {
|
||||||
cmd = (struct scsi_cmnd *) hd->connected;
|
cmd = (struct scsi_cmnd *) hd->connected;
|
||||||
seq_printf(m, " %d:%d(%02x)",
|
seq_printf(m, " %d:%llu(%02x)",
|
||||||
cmd->device->id, cmd->device->lun, cmd->cmnd[0]);
|
cmd->device->id, cmd->device->lun, cmd->cmnd[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2177,7 +2178,7 @@ wd33c93_show_info(struct seq_file *m, struct Scsi_Host *instance)
|
||||||
seq_printf(m, "\ninput_Q: ");
|
seq_printf(m, "\ninput_Q: ");
|
||||||
cmd = (struct scsi_cmnd *) hd->input_Q;
|
cmd = (struct scsi_cmnd *) hd->input_Q;
|
||||||
while (cmd) {
|
while (cmd) {
|
||||||
seq_printf(m, " %d:%d(%02x)",
|
seq_printf(m, " %d:%llu(%02x)",
|
||||||
cmd->device->id, cmd->device->lun, cmd->cmnd[0]);
|
cmd->device->id, cmd->device->lun, cmd->cmnd[0]);
|
||||||
cmd = (struct scsi_cmnd *) cmd->host_scribble;
|
cmd = (struct scsi_cmnd *) cmd->host_scribble;
|
||||||
}
|
}
|
||||||
|
@ -2186,7 +2187,7 @@ wd33c93_show_info(struct seq_file *m, struct Scsi_Host *instance)
|
||||||
seq_printf(m, "\ndisconnected_Q:");
|
seq_printf(m, "\ndisconnected_Q:");
|
||||||
cmd = (struct scsi_cmnd *) hd->disconnected_Q;
|
cmd = (struct scsi_cmnd *) hd->disconnected_Q;
|
||||||
while (cmd) {
|
while (cmd) {
|
||||||
seq_printf(m, " %d:%d(%02x)",
|
seq_printf(m, " %d:%llu(%02x)",
|
||||||
cmd->device->id, cmd->device->lun, cmd->cmnd[0]);
|
cmd->device->id, cmd->device->lun, cmd->cmnd[0]);
|
||||||
cmd = (struct scsi_cmnd *) cmd->host_scribble;
|
cmd = (struct scsi_cmnd *) cmd->host_scribble;
|
||||||
}
|
}
|
||||||
|
|
|
@ -465,14 +465,14 @@ static int rtsx_control_thread(void *__dev)
|
||||||
else if (chip->srb->device->id) {
|
else if (chip->srb->device->id) {
|
||||||
dev_err(&dev->pci->dev, "Bad target number (%d:%d)\n",
|
dev_err(&dev->pci->dev, "Bad target number (%d:%d)\n",
|
||||||
chip->srb->device->id,
|
chip->srb->device->id,
|
||||||
chip->srb->device->lun);
|
(u8)chip->srb->device->lun);
|
||||||
chip->srb->result = DID_BAD_TARGET << 16;
|
chip->srb->result = DID_BAD_TARGET << 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (chip->srb->device->lun > chip->max_lun) {
|
else if (chip->srb->device->lun > chip->max_lun) {
|
||||||
dev_err(&dev->pci->dev, "Bad LUN (%d:%d)\n",
|
dev_err(&dev->pci->dev, "Bad LUN (%d:%d)\n",
|
||||||
chip->srb->device->id,
|
chip->srb->device->id,
|
||||||
chip->srb->device->lun);
|
(u8)chip->srb->device->lun);
|
||||||
chip->srb->result = DID_BAD_TARGET << 16;
|
chip->srb->result = DID_BAD_TARGET << 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -252,7 +252,7 @@ static int tcm_loop_queuecommand(struct Scsi_Host *sh, struct scsi_cmnd *sc)
|
||||||
{
|
{
|
||||||
struct tcm_loop_cmd *tl_cmd;
|
struct tcm_loop_cmd *tl_cmd;
|
||||||
|
|
||||||
pr_debug("tcm_loop_queuecommand() %d:%d:%d:%d got CDB: 0x%02x"
|
pr_debug("tcm_loop_queuecommand() %d:%d:%d:%llu got CDB: 0x%02x"
|
||||||
" scsi_buf_len: %u\n", sc->device->host->host_no,
|
" scsi_buf_len: %u\n", sc->device->host->host_no,
|
||||||
sc->device->id, sc->device->channel, sc->device->lun,
|
sc->device->id, sc->device->channel, sc->device->lun,
|
||||||
sc->cmnd[0], scsi_bufflen(sc));
|
sc->cmnd[0], scsi_bufflen(sc));
|
||||||
|
|
|
@ -312,7 +312,7 @@ static int pscsi_add_device_to_list(struct se_device *dev,
|
||||||
if (!sd->queue_depth) {
|
if (!sd->queue_depth) {
|
||||||
sd->queue_depth = PSCSI_DEFAULT_QUEUEDEPTH;
|
sd->queue_depth = PSCSI_DEFAULT_QUEUEDEPTH;
|
||||||
|
|
||||||
pr_err("Set broken SCSI Device %d:%d:%d"
|
pr_err("Set broken SCSI Device %d:%d:%llu"
|
||||||
" queue_depth to %d\n", sd->channel, sd->id,
|
" queue_depth to %d\n", sd->channel, sd->id,
|
||||||
sd->lun, sd->queue_depth);
|
sd->lun, sd->queue_depth);
|
||||||
}
|
}
|
||||||
|
@ -375,7 +375,7 @@ static int pscsi_create_type_disk(struct se_device *dev, struct scsi_device *sd)
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (scsi_device_get(sd)) {
|
if (scsi_device_get(sd)) {
|
||||||
pr_err("scsi_device_get() failed for %d:%d:%d:%d\n",
|
pr_err("scsi_device_get() failed for %d:%d:%d:%llu\n",
|
||||||
sh->host_no, sd->channel, sd->id, sd->lun);
|
sh->host_no, sd->channel, sd->id, sd->lun);
|
||||||
spin_unlock_irq(sh->host_lock);
|
spin_unlock_irq(sh->host_lock);
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
@ -401,7 +401,7 @@ static int pscsi_create_type_disk(struct se_device *dev, struct scsi_device *sd)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
pr_debug("CORE_PSCSI[%d] - Added TYPE_DISK for %d:%d:%d:%d\n",
|
pr_debug("CORE_PSCSI[%d] - Added TYPE_DISK for %d:%d:%d:%llu\n",
|
||||||
phv->phv_host_id, sh->host_no, sd->channel, sd->id, sd->lun);
|
phv->phv_host_id, sh->host_no, sd->channel, sd->id, sd->lun);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -417,7 +417,7 @@ static int pscsi_create_type_rom(struct se_device *dev, struct scsi_device *sd)
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (scsi_device_get(sd)) {
|
if (scsi_device_get(sd)) {
|
||||||
pr_err("scsi_device_get() failed for %d:%d:%d:%d\n",
|
pr_err("scsi_device_get() failed for %d:%d:%d:%llu\n",
|
||||||
sh->host_no, sd->channel, sd->id, sd->lun);
|
sh->host_no, sd->channel, sd->id, sd->lun);
|
||||||
spin_unlock_irq(sh->host_lock);
|
spin_unlock_irq(sh->host_lock);
|
||||||
return -EIO;
|
return -EIO;
|
||||||
|
@ -429,7 +429,7 @@ static int pscsi_create_type_rom(struct se_device *dev, struct scsi_device *sd)
|
||||||
scsi_device_put(sd);
|
scsi_device_put(sd);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
pr_debug("CORE_PSCSI[%d] - Added Type: %s for %d:%d:%d:%d\n",
|
pr_debug("CORE_PSCSI[%d] - Added Type: %s for %d:%d:%d:%llu\n",
|
||||||
phv->phv_host_id, scsi_device_type(sd->type), sh->host_no,
|
phv->phv_host_id, scsi_device_type(sd->type), sh->host_no,
|
||||||
sd->channel, sd->id, sd->lun);
|
sd->channel, sd->id, sd->lun);
|
||||||
|
|
||||||
|
@ -452,7 +452,7 @@ static int pscsi_create_type_other(struct se_device *dev,
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
pr_debug("CORE_PSCSI[%d] - Added Type: %s for %d:%d:%d:%d\n",
|
pr_debug("CORE_PSCSI[%d] - Added Type: %s for %d:%d:%d:%llu\n",
|
||||||
phv->phv_host_id, scsi_device_type(sd->type), sh->host_no,
|
phv->phv_host_id, scsi_device_type(sd->type), sh->host_no,
|
||||||
sd->channel, sd->id, sd->lun);
|
sd->channel, sd->id, sd->lun);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -1498,7 +1498,7 @@ static int dpcm_transport(struct scsi_cmnd *srb, struct us_data *us)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
usb_stor_dbg(us, "LUN=%d\n", srb->device->lun);
|
usb_stor_dbg(us, "LUN=%d\n", (u8)srb->device->lun);
|
||||||
|
|
||||||
switch (srb->device->lun) {
|
switch (srb->device->lun) {
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -1524,7 +1524,7 @@ static int dpcm_transport(struct scsi_cmnd *srb, struct us_data *us)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
usb_stor_dbg(us, "Invalid LUN %d\n", srb->device->lun);
|
usb_stor_dbg(us, "Invalid LUN %d\n", (u8)srb->device->lun);
|
||||||
ret = USB_STOR_TRANSPORT_ERROR;
|
ret = USB_STOR_TRANSPORT_ERROR;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -347,14 +347,16 @@ static int usb_stor_control_thread(void * __us)
|
||||||
*/
|
*/
|
||||||
else if (us->srb->device->id &&
|
else if (us->srb->device->id &&
|
||||||
!(us->fflags & US_FL_SCM_MULT_TARG)) {
|
!(us->fflags & US_FL_SCM_MULT_TARG)) {
|
||||||
usb_stor_dbg(us, "Bad target number (%d:%d)\n",
|
usb_stor_dbg(us, "Bad target number (%d:%llu)\n",
|
||||||
us->srb->device->id, us->srb->device->lun);
|
us->srb->device->id,
|
||||||
|
us->srb->device->lun);
|
||||||
us->srb->result = DID_BAD_TARGET << 16;
|
us->srb->result = DID_BAD_TARGET << 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (us->srb->device->lun > us->max_lun) {
|
else if (us->srb->device->lun > us->max_lun) {
|
||||||
usb_stor_dbg(us, "Bad LUN (%d:%d)\n",
|
usb_stor_dbg(us, "Bad LUN (%d:%llu)\n",
|
||||||
us->srb->device->id, us->srb->device->lun);
|
us->srb->device->id,
|
||||||
|
us->srb->device->lun);
|
||||||
us->srb->result = DID_BAD_TARGET << 16;
|
us->srb->result = DID_BAD_TARGET << 16;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -385,7 +385,7 @@ struct scsi_lun {
|
||||||
#define SCSI_W_LUN_ACCESS_CONTROL (SCSI_W_LUN_BASE + 2)
|
#define SCSI_W_LUN_ACCESS_CONTROL (SCSI_W_LUN_BASE + 2)
|
||||||
#define SCSI_W_LUN_TARGET_LOG_PAGE (SCSI_W_LUN_BASE + 3)
|
#define SCSI_W_LUN_TARGET_LOG_PAGE (SCSI_W_LUN_BASE + 3)
|
||||||
|
|
||||||
static inline int scsi_is_wlun(unsigned int lun)
|
static inline int scsi_is_wlun(u64 lun)
|
||||||
{
|
{
|
||||||
return (lun & 0xff00) == SCSI_W_LUN_BASE;
|
return (lun & 0xff00) == SCSI_W_LUN_BASE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -98,8 +98,8 @@ struct scsi_device {
|
||||||
|
|
||||||
unsigned long last_queue_ramp_up; /* last queue ramp up time */
|
unsigned long last_queue_ramp_up; /* last queue ramp up time */
|
||||||
|
|
||||||
unsigned int id, lun, channel;
|
unsigned int id, channel;
|
||||||
|
u64 lun;
|
||||||
unsigned int manufacturer; /* Manufacturer of device, for using
|
unsigned int manufacturer; /* Manufacturer of device, for using
|
||||||
* vendor-specific cmd's */
|
* vendor-specific cmd's */
|
||||||
unsigned sector_size; /* size in bytes */
|
unsigned sector_size; /* size in bytes */
|
||||||
|
@ -321,9 +321,9 @@ static inline struct scsi_target *scsi_target(struct scsi_device *sdev)
|
||||||
dev_printk(prefix, &(starget)->dev, fmt, ##a)
|
dev_printk(prefix, &(starget)->dev, fmt, ##a)
|
||||||
|
|
||||||
extern struct scsi_device *__scsi_add_device(struct Scsi_Host *,
|
extern struct scsi_device *__scsi_add_device(struct Scsi_Host *,
|
||||||
uint, uint, uint, void *hostdata);
|
uint, uint, u64, void *hostdata);
|
||||||
extern int scsi_add_device(struct Scsi_Host *host, uint channel,
|
extern int scsi_add_device(struct Scsi_Host *host, uint channel,
|
||||||
uint target, uint lun);
|
uint target, u64 lun);
|
||||||
extern int scsi_register_device_handler(struct scsi_device_handler *scsi_dh);
|
extern int scsi_register_device_handler(struct scsi_device_handler *scsi_dh);
|
||||||
extern void scsi_remove_device(struct scsi_device *);
|
extern void scsi_remove_device(struct scsi_device *);
|
||||||
extern int scsi_unregister_device_handler(struct scsi_device_handler *scsi_dh);
|
extern int scsi_unregister_device_handler(struct scsi_device_handler *scsi_dh);
|
||||||
|
@ -332,13 +332,13 @@ void scsi_attach_vpd(struct scsi_device *sdev);
|
||||||
extern int scsi_device_get(struct scsi_device *);
|
extern int scsi_device_get(struct scsi_device *);
|
||||||
extern void scsi_device_put(struct scsi_device *);
|
extern void scsi_device_put(struct scsi_device *);
|
||||||
extern struct scsi_device *scsi_device_lookup(struct Scsi_Host *,
|
extern struct scsi_device *scsi_device_lookup(struct Scsi_Host *,
|
||||||
uint, uint, uint);
|
uint, uint, u64);
|
||||||
extern struct scsi_device *__scsi_device_lookup(struct Scsi_Host *,
|
extern struct scsi_device *__scsi_device_lookup(struct Scsi_Host *,
|
||||||
uint, uint, uint);
|
uint, uint, u64);
|
||||||
extern struct scsi_device *scsi_device_lookup_by_target(struct scsi_target *,
|
extern struct scsi_device *scsi_device_lookup_by_target(struct scsi_target *,
|
||||||
uint);
|
u64);
|
||||||
extern struct scsi_device *__scsi_device_lookup_by_target(struct scsi_target *,
|
extern struct scsi_device *__scsi_device_lookup_by_target(struct scsi_target *,
|
||||||
uint);
|
u64);
|
||||||
extern void starget_for_each_device(struct scsi_target *, void *,
|
extern void starget_for_each_device(struct scsi_target *, void *,
|
||||||
void (*fn)(struct scsi_device *, void *));
|
void (*fn)(struct scsi_device *, void *));
|
||||||
extern void __starget_for_each_device(struct scsi_target *, void *,
|
extern void __starget_for_each_device(struct scsi_target *, void *,
|
||||||
|
@ -411,13 +411,13 @@ extern void scsi_device_resume(struct scsi_device *sdev);
|
||||||
extern void scsi_target_quiesce(struct scsi_target *);
|
extern void scsi_target_quiesce(struct scsi_target *);
|
||||||
extern void scsi_target_resume(struct scsi_target *);
|
extern void scsi_target_resume(struct scsi_target *);
|
||||||
extern void scsi_scan_target(struct device *parent, unsigned int channel,
|
extern void scsi_scan_target(struct device *parent, unsigned int channel,
|
||||||
unsigned int id, unsigned int lun, int rescan);
|
unsigned int id, u64 lun, int rescan);
|
||||||
extern void scsi_target_reap(struct scsi_target *);
|
extern void scsi_target_reap(struct scsi_target *);
|
||||||
extern void scsi_target_block(struct device *);
|
extern void scsi_target_block(struct device *);
|
||||||
extern void scsi_target_unblock(struct device *, enum scsi_device_state);
|
extern void scsi_target_unblock(struct device *, enum scsi_device_state);
|
||||||
extern void scsi_remove_target(struct device *);
|
extern void scsi_remove_target(struct device *);
|
||||||
extern void int_to_scsilun(unsigned int, struct scsi_lun *);
|
extern void int_to_scsilun(u64, struct scsi_lun *);
|
||||||
extern int scsilun_to_int(struct scsi_lun *);
|
extern u64 scsilun_to_int(struct scsi_lun *);
|
||||||
extern const char *scsi_device_state_name(enum scsi_device_state);
|
extern const char *scsi_device_state_name(enum scsi_device_state);
|
||||||
extern int scsi_is_sdev_device(const struct device *);
|
extern int scsi_is_sdev_device(const struct device *);
|
||||||
extern int scsi_is_target_device(const struct device *);
|
extern int scsi_is_target_device(const struct device *);
|
||||||
|
|
|
@ -35,7 +35,7 @@ struct scsi_transport_template {
|
||||||
/*
|
/*
|
||||||
* If set, called from sysfs and legacy procfs rescanning code.
|
* If set, called from sysfs and legacy procfs rescanning code.
|
||||||
*/
|
*/
|
||||||
int (*user_scan)(struct Scsi_Host *, uint, uint, uint);
|
int (*user_scan)(struct Scsi_Host *, uint, uint, u64);
|
||||||
|
|
||||||
/* The size of the specific transport attribute structure (a
|
/* The size of the specific transport attribute structure (a
|
||||||
* space of this size will be left at the end of the
|
* space of this size will be left at the end of the
|
||||||
|
|
Loading…
Reference in New Issue