]> git.karo-electronics.de Git - linux-beck.git/commitdiff
scsi: use 64-bit LUNs
authorHannes Reinecke <hare@suse.de>
Wed, 25 Jun 2014 13:27:36 +0000 (15:27 +0200)
committerChristoph Hellwig <hch@lst.de>
Thu, 17 Jul 2014 20:07:37 +0000 (22:07 +0200)
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>
86 files changed:
drivers/ata/libata-scsi.c
drivers/ata/libata.h
drivers/message/fusion/mptbase.h
drivers/message/fusion/mptfc.c
drivers/message/fusion/mptscsih.c
drivers/message/fusion/mptscsih.h
drivers/message/i2o/i2o_scsi.c
drivers/s390/scsi/zfcp_dbf.c
drivers/s390/scsi/zfcp_unit.c
drivers/scsi/53c700.c
drivers/scsi/NCR5380.c
drivers/scsi/NCR53c406a.c
drivers/scsi/a100u2w.c
drivers/scsi/aacraid/linit.c
drivers/scsi/aha152x.c
drivers/scsi/aic7xxx/aic79xx.h
drivers/scsi/aic7xxx/aic79xx_osm.c
drivers/scsi/aic7xxx/aic79xx_proc.c
drivers/scsi/aic7xxx/aic7xxx_osm.c
drivers/scsi/aic7xxx/aic7xxx_proc.c
drivers/scsi/arcmsr/arcmsr_hba.c
drivers/scsi/arm/acornscsi.c
drivers/scsi/arm/fas216.c
drivers/scsi/arm/queue.c
drivers/scsi/atari_NCR5380.c
drivers/scsi/bnx2fc/bnx2fc_io.c
drivers/scsi/ch.c
drivers/scsi/csiostor/csio_scsi.c
drivers/scsi/dc395x.c
drivers/scsi/dpt_i2o.c
drivers/scsi/dpti.h
drivers/scsi/eata.c
drivers/scsi/fnic/fnic_scsi.c
drivers/scsi/g_NCR5380.c
drivers/scsi/hpsa.c
drivers/scsi/hptiop.c
drivers/scsi/in2000.c
drivers/scsi/libiscsi.c
drivers/scsi/libsas/sas_scsi_host.c
drivers/scsi/lpfc/lpfc_scsi.c
drivers/scsi/megaraid.c
drivers/scsi/megaraid/mega_common.h
drivers/scsi/megaraid/megaraid_sas_fusion.c
drivers/scsi/mesh.c
drivers/scsi/ncr53c8xx.c
drivers/scsi/nsp32.c
drivers/scsi/pcmcia/nsp_cs.c
drivers/scsi/pcmcia/sym53c500_cs.c
drivers/scsi/pmcraid.c
drivers/scsi/ps3rom.c
drivers/scsi/qla2xxx/qla_def.h
drivers/scsi/qla2xxx/qla_gbl.h
drivers/scsi/qla2xxx/qla_iocb.c
drivers/scsi/qla2xxx/qla_isr.c
drivers/scsi/qla2xxx/qla_mbx.c
drivers/scsi/qla2xxx/qla_mr.c
drivers/scsi/qla2xxx/qla_os.c
drivers/scsi/qla4xxx/ql4_glbl.h
drivers/scsi/qla4xxx/ql4_iocb.c
drivers/scsi/qla4xxx/ql4_isr.c
drivers/scsi/qla4xxx/ql4_mbx.c
drivers/scsi/qla4xxx/ql4_os.c
drivers/scsi/scsi.c
drivers/scsi/scsi_debug.c
drivers/scsi/scsi_priv.h
drivers/scsi/scsi_proc.c
drivers/scsi/scsi_scan.c
drivers/scsi/scsi_sysfs.c
drivers/scsi/scsi_transport_fc.c
drivers/scsi/scsi_transport_iscsi.c
drivers/scsi/scsi_transport_sas.c
drivers/scsi/sg.c
drivers/scsi/sun3_NCR5380.c
drivers/scsi/sym53c8xx_2/sym_glue.c
drivers/scsi/sym53c8xx_2/sym_hipd.h
drivers/scsi/tmscsim.c
drivers/scsi/u14-34f.c
drivers/scsi/wd33c93.c
drivers/staging/rts5208/rtsx.c
drivers/target/loopback/tcm_loop.c
drivers/target/target_core_pscsi.c
drivers/usb/storage/sddr09.c
drivers/usb/storage/usb.c
include/scsi/scsi.h
include/scsi/scsi_device.h
include/scsi/scsi_transport.h

index 72691fd939483af322e4460d8d168b2bf5899b46..0586f66d70fad3a52e37e2cc87bc6c5de5e8ec7c 100644 (file)
@@ -3945,7 +3945,7 @@ void ata_scsi_hotplug(struct work_struct *work)
  *     Zero.
  */
 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);
        unsigned long flags;
index 45b5ab3a95d51158c9ef0e618d6c8ae0fdeb373b..5f4e0cca56ec5fdc2cf539e3052bd9e2d51bca76 100644 (file)
@@ -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 int ata_bus_probe(struct ata_port *ap);
 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 */
index 76c05bc24cb7ab27b9787bc50cc043681077a8da..f37ea6fdc6ae8f4187cb230635b7327df345c266 100644 (file)
@@ -405,7 +405,7 @@ typedef struct _VirtTarget {
 typedef struct _VirtDevice {
        VirtTarget              *vtarget;
        u8                       configured_lun;
-       int                      lun;
+       u64                      lun;
 } VirtDevice;
 
 /*
index 02a3eefd6931480e096b79e708c10ec9d936d522..bf2a2cef562bed6bdfe71a8945f308d0bb2bb478 100644 (file)
@@ -204,7 +204,7 @@ mptfc_block_error_handler(struct scsi_cmnd *SCpnt,
         || (loops > 0 && ioc->active == 0)) {
                spin_unlock_irqrestore(shost->host_lock, flags);
                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",
                        ioc->name, ioc->sh->host_no,
                        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
         || ioc->active == 0) {
                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,
                        ioc->name, ioc->sh->host_no,
                        SCpnt->device->id, SCpnt->device->lun, ready,
@@ -226,7 +226,7 @@ mptfc_block_error_handler(struct scsi_cmnd *SCpnt,
                return FAILED;
        }
        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,
                SCpnt->device->id, SCpnt->device->lun));
        return (*func)(SCpnt);
index 2a1c6f21af2789205e51bd2ecdb1d29eab058580..39e566803089bb2b685dc6eb4ea918e0c620ed26 100644 (file)
@@ -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);
 
 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_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);
-       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);
        printk(MYIOC_s_DEBUG_FMT "\trequest_len = %d, underflow = %d, "
            "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 &&
                    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,
                        sc->device->host->host_no, sc->device->channel,
                        sc->device->id, sc->device->lun,
@@ -1155,7 +1155,7 @@ mptscsih_report_queue_full(struct scsi_cmnd *sc, SCSIIOReply_t *pScsiReply, SCSI
                return;
        ioc = hd->ioc;
        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));
                hd->last_queue_full = time;
        }
@@ -1518,7 +1518,7 @@ mptscsih_freeChainBuffers(MPT_ADAPTER *ioc, int req_idx)
  *
  **/
 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)
 {
        MPT_FRAME_HDR   *mf;
@@ -2380,7 +2380,7 @@ mptscsih_slave_configure(struct scsi_device *sdev)
        vdevice = sdev->hostdata;
 
        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));
        if (ioc->bus_type == SPI)
                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));
 
        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));
 
        if (dir == MPI_SCSIIO_CONTROL_READ)
index 99e3390807f3bef9fedd0c2eb8225dd86cd84999..e1b1a198a62aaa98d3c559c189e46a9bc200da3d 100644 (file)
@@ -98,7 +98,7 @@ typedef struct _internal_cmd {
        u8              cmd;            /* SCSI Op Code */
        u8              channel;        /* bus number */
        u8              id;             /* SCSI ID (virtual) */
-       int             lun;
+       u64             lun;
        u8              flags;          /* Bit Field - See above */
        u8              physDiskNum;    /* Phys disk number, -1 else */
        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 int mptscsih_qcmd(struct scsi_cmnd *SCpnt);
 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 int mptscsih_slave_configure(struct scsi_device *device);
 extern int mptscsih_abort(struct scsi_cmnd * SCpnt);
index 1d31d7284cbd0b3e0de425ff5c56dd22677fb24a..e7de92c67cf693f04ef96135c73b819d175f527e 100644 (file)
@@ -78,7 +78,7 @@ static unsigned int i2o_scsi_max_lun = 255;
 struct i2o_scsi_host {
        struct Scsi_Host *scsi_host;    /* pointer to the SCSI host */
        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 */
 };
 
@@ -287,9 +287,8 @@ static int i2o_scsi_probe(struct device *dev)
        }
 
        if (le64_to_cpu(lun) >= scsi_host->max_lun) {
-               osm_warn("SCSI device lun (%lu) >= max_lun of I2O host (%d)",
-                        (long unsigned int)le64_to_cpu(lun),
-                        scsi_host->max_lun);
+               osm_warn("SCSI device lun (%llu) >= max_lun of I2O host (%d)",
+                        le64_to_cpu(lun), scsi_host->max_lun);
                return -EFAULT;
        }
 
@@ -308,9 +307,9 @@ static int i2o_scsi_probe(struct device *dev)
        if (rc)
                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),
-                (long unsigned int)le64_to_cpu(lun));
+                le64_to_cpu(lun));
 
        return 0;
 
index 0ca64484cfa3328bd33d5e5b0cb028e7d4991424..5d7fbe4e907e37e464c63e8f3278c78edcb838cf 100644 (file)
@@ -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_allowed = sc->allowed;
        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;
 
        memcpy(rec->scsi_opcode, sc->cmnd,
index 39f5446f721657b10ab684972c091cfdcaf51a9c..157d3d203ba1db0ade520c8f225acf04ff6fd8ad 100644 (file)
@@ -21,7 +21,7 @@
 void zfcp_unit_scsi_scan(struct zfcp_unit *unit)
 {
        struct fc_rport *rport = unit->port->rport;
-       unsigned int lun;
+       u64 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 zfcp_port *port;
-       unsigned int lun;
+       u64 lun;
 
        lun = scsilun_to_int((struct scsi_lun *) &unit->fcp_lun);
        port = unit->port;
index a3adfb4357f54fab69a12fad742e18213328cb50..fabd4be2c98552a7760b8c87d72891086b60dbf4 100644 (file)
@@ -1005,7 +1005,7 @@ process_script_interrupt(__u32 dsps, __u32 dsp, struct scsi_cmnd *SCp,
                                                 DMA_TO_DEVICE);
 
                                cmnd[0] = REQUEST_SENSE;
-                               cmnd[1] = (SCp->device->lun & 0x7) << 5;
+                               cmnd[1] = (lun & 0x7) << 5;
                                cmnd[2] = 0;
                                cmnd[3] = 0;
                                cmnd[4] = SCSI_SENSE_BUFFERSIZE;
@@ -1396,7 +1396,8 @@ NCR_700_start_command(struct scsi_cmnd *SCp)
        struct NCR_700_Host_Parameters *hostdata =
                (struct NCR_700_Host_Parameters *)SCp->device->host->hostdata[0];
        __u16 count = 1;        /* for IDENTIFY message */
-       
+       u8 lun = SCp->device->lun;
+
        if(hostdata->state != NCR_700_HOST_FREE) {
                /* keep this inside the lock to close the race window where
                 * the running command finishes on another CPU while we don't
@@ -1415,7 +1416,7 @@ NCR_700_start_command(struct scsi_cmnd *SCp)
 
        hostdata->msgout[0] = NCR_700_identify((SCp->cmnd[0] != REQUEST_SENSE &&
                                                slot->flags != NCR_700_FLAG_AUTOSENSE),
-                                              SCp->device->lun);
+                                              lun);
        /* for INQUIRY or REQUEST_SENSE commands, we cannot be sure
         * if the negotiated transfer parameters still hold, so
         * always renegotiate them */
index 93d13fc9a2937712dbbe549a539a9add2ca4157c..45da3c8233226f78f49e7a2609707f9eba43d3bd 100644 (file)
@@ -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)
 {
-       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 = ");
        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) 
                        {
                                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. */
-                               if (!(hostdata->busy[tmp->device->id] & (1 << tmp->device->lun))) {
+                               if (!(hostdata->busy[tmp->device->id] &
+                                     (1 << (u8)(tmp->device->lun & 0xff)))) {
                                        if (prev) {
                                                REMOVE(prev, prev->host_scribble, tmp, 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
                                         *   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 
@@ -1524,7 +1525,7 @@ part2:
        dprintk(NDEBUG_SELECTION, "scsi%d : nexus established.\n", instance->host_no);
        /* XXX need to handle errors here */
        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);
 
@@ -2210,14 +2211,14 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
                                case LINKED_FLG_CMD_COMPLETE:
                                        /* Accept message by clearing ACK */
                                        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
                                         * one of these messages if there are more linked commands
                                         * available.
                                         */
                                        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;
                                                do_abort(instance);
                                                return;
@@ -2226,7 +2227,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
                                        /* The next command is still part of this process */
                                        cmd->next_link->tag = cmd->tag;
                                        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);
                                        cmd->scsi_done(cmd);
                                        cmd = hostdata->connected;
@@ -2238,8 +2239,8 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
                                        sink = 1;
                                        NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
                                        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);
-                                       hostdata->busy[cmd->device->id] &= ~(1 << 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 & 0xFF));
 
                                        /* 
                                         * 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 SIMPLE_QUEUE_TAG:
                                                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;
                                        default:
                                                break;
@@ -2318,7 +2319,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
                                                    hostdata->disconnected_queue;
                                                hostdata->connected = NULL;
                                                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, 
                                                 * arbitration can resume.
@@ -2426,7 +2427,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance) {
                                hostdata->last_message = msgout;
                                NCR5380_transfer_pio(instance, &phase, &len, &data);
                                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;
                                        cmd->result = DID_ERROR << 16;
                                        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)
-                       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) {
                                        REMOVE(prev, prev->host_scribble, tmp, tmp->host_scribble);
@@ -2588,7 +2589,7 @@ static void NCR5380_reselect(struct Scsi_Host *instance) {
                do_abort(instance);
        } else {
                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);
        }
 }
 
index c91888a0a23cacf61354f0a3f1fdd1f3a08caef2..10c3374d759fc23b7b85d42d2374c6fdd1fb04bd 100644 (file)
@@ -698,7 +698,7 @@ static int NCR53c406a_queue_lck(Scsi_Cmnd * SCpnt, void (*done) (Scsi_Cmnd *))
        int i;
 
        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
        VDEB(for (i = 0; i < SCpnt->cmd_len; i++)
index 0163457c12bba0abe5859ddc67a99a3dc55338f4..522570d297ca370e37e92279d734f9fd76701492 100644 (file)
@@ -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);
                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                  */
                scb->tag_msg = SIMPLE_QUEUE_TAG;        /* Do simple tag only   */
        } else {
index 4921ed19a027f819b731271c4804be74d2426e5a..63f576c9300a7d317a0b7b5f0b8baa3090dd070d 100644 (file)
@@ -551,7 +551,7 @@ static int aac_eh_abort(struct scsi_cmnd* cmd)
        int count;
        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,
                host->host_no, sdev_channel(dev), sdev_id(dev), dev->lun);
        switch (cmd->cmnd[0]) {
index e86eb6a921fcef1fa54593fa8bcff612d44fc127..e77b72f7800671539ddce4bf8dd5cb3b6efedf1f 100644 (file)
@@ -321,7 +321,7 @@ static LIST_HEAD(aha152x_host_list);
 #define CMDINFO(cmd) \
                        (cmd) ? ((cmd)->device->host->host_no) : -1, \
                         (cmd) ? ((cmd)->device->id & 0x0f) : -1, \
-                       (cmd) ? ((cmd)->device->lun & 0x07) : -1
+                       (cmd) ? ((u8)(cmd)->device->lun & 0x07) : -1
 
 static inline void
 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)
                        int hostno=DONE_SC->device->host->host_no;
                        int id=DONE_SC->device->id & 0xf;
-                       int lun=DONE_SC->device->lun & 0x7;
+                       int lun=((u8)DONE_SC->device->lun) & 0x7;
 #endif
                        Scsi_Cmnd *ptr = DONE_SC;
                        DONE_SC=NULL;
@@ -2984,7 +2984,7 @@ static void get_command(struct seq_file *m, Scsi_Cmnd * ptr)
        int i;
 
        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++)
                SPRINTF("0x%02x ", ptr->cmnd[i]);
index 113874c1284b167d302f10262a75bb620e73cf82..df2e0e5367d2f7b292c3b522372206255acae196 100644 (file)
@@ -115,7 +115,7 @@ struct scb_platform_data;
 #endif
 
 #define AHD_BUILD_COL_IDX(target, lun)                         \
-       (((lun) << 4) | target)
+       ((((u8)lun) << 4) | target)
 
 #define AHD_GET_SCB_COL_IDX(ahd, scb)                          \
        ((SCB_GET_LUN(scb) << 4) | SCB_GET_TARGET(ahd, scb))
index 69d5c43a65e590e8b91651e29447bd2282837ad5..ed333669a7dccf811be095a270414974c37b3836 100644 (file)
@@ -2137,7 +2137,7 @@ ahd_linux_queue_cmd_complete(struct ahd_softc *ahd, struct scsi_cmnd *cmd)
        if (do_fallback) {
                printk("%s: device overrun (status %x) on %d:%d:%d\n",
                       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);
@@ -2253,13 +2253,13 @@ ahd_linux_queue_abort_cmd(struct scsi_cmnd *cmd)
        disconnected = TRUE;
        if (ahd_search_qinfifo(ahd, cmd->device->id, 
                               cmd->device->channel + 'A',
-                              cmd->device->lun, 
+                              cmd->device->lun,
                               pending_scb->hscb->tag,
                               ROLE_INITIATOR, CAM_REQ_ABORTED,
                               SEARCH_COMPLETE) > 0) {
                printk("%s:%d:%d:%d: Cmd aborted from QINFIFO\n",
                       ahd_name(ahd), cmd->device->channel, 
-                      cmd->device->id, cmd->device->lun);
+                      cmd->device->id, (u8)cmd->device->lun);
                retval = SUCCESS;
                goto done;
        }
index e9778b4f7e323fa0331d564aac80707e24081c43..27dbfccea77473c3cb68699abb24752b9e8e2f84 100644 (file)
@@ -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",
                  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 Active %d\n", dev->active);
index 114ff0c6e311a9c7dc23a5fc4d9238c79c2bd4a1..d2c9bf39033d2dfd2d427ef1be833d96167ad94e 100644 (file)
@@ -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",
                       ahc_name(ahc), cmd->device->channel, cmd->device->id,
-                      cmd->device->lun);
+                      (u8)cmd->device->lun);
                retval = SUCCESS;
                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
         && ahc_search_untagged_queues(ahc, cmd, cmd->device->id,
                                       cmd->device->channel + 'A',
-                                      cmd->device->lun,
+                                      (u8)cmd->device->lun,
                                       CAM_REQ_ABORTED, SEARCH_COMPLETE) != 0) {
                printk("%s:%d:%d:%d: Command found on untagged queue\n",
                       ahc_name(ahc), cmd->device->channel, cmd->device->id,
-                      cmd->device->lun);
+                      (u8)cmd->device->lun);
                retval = SUCCESS;
                goto done;
        }
@@ -2188,13 +2188,14 @@ ahc_linux_queue_recovery_cmd(struct scsi_cmnd *cmd, scb_flag flag)
                                       SEARCH_COMPLETE) > 0) {
                        printk("%s:%d:%d:%d: Cmd aborted from QINFIFO\n",
                               ahc_name(ahc), cmd->device->channel,
-                                       cmd->device->id, cmd->device->lun);
+                              cmd->device->id, (u8)cmd->device->lun);
                        retval = SUCCESS;
                        goto done;
                }
        } else if (ahc_search_qinfifo(ahc, cmd->device->id,
                                      cmd->device->channel + 'A',
-                                     cmd->device->lun, pending_scb->hscb->tag,
+                                     cmd->device->lun,
+                                     pending_scb->hscb->tag,
                                      ROLE_INITIATOR, /*status*/0,
                                      SEARCH_COUNT) > 0) {
                disconnected = FALSE;
index 383a3d11652d67f292a09d624b5f08106d2e80d6..64eec6c07a83a2f32328f68a141c655336c5e9d1 100644 (file)
@@ -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",
                  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 Active %d\n", dev->active);
index 652b41b4ddbd5417ef10593354ec0fd0ad0d0617..b13764ca23fdfc9d272fd780c0bd6dc121ac9a24 100644 (file)
@@ -2335,7 +2335,7 @@ static int arcmsr_polling_hba_ccbdone(struct AdapterControlBlock *acb,
                                        " poll command abort successfully \n"
                                        , acb->host->host_no
                                        , ccb->pcmd->device->id
-                                       , ccb->pcmd->device->lun
+                                       , (u32)ccb->pcmd->device->lun
                                        , ccb);
                                ccb->pcmd->result = DID_ABORT << 16;
                                arcmsr_ccb_complete(ccb);
@@ -2399,7 +2399,7 @@ static int arcmsr_polling_hbb_ccbdone(struct AdapterControlBlock *acb,
                                        " poll command abort successfully \n"
                                        ,acb->host->host_no
                                        ,ccb->pcmd->device->id
-                                       ,ccb->pcmd->device->lun
+                                       ,(u32)ccb->pcmd->device->lun
                                        ,ccb);
                                ccb->pcmd->result = DID_ABORT << 16;
                                arcmsr_ccb_complete(ccb);
@@ -2456,7 +2456,7 @@ polling_hbc_ccb_retry:
                                        " poll command abort successfully \n"
                                        , acb->host->host_no
                                        , pCCB->pcmd->device->id
-                                       , pCCB->pcmd->device->lun
+                                       , (u32)pCCB->pcmd->device->lun
                                        , pCCB);
                                        pCCB->pcmd->result = DID_ABORT << 16;
                                        arcmsr_ccb_complete(pCCB);
@@ -3058,7 +3058,7 @@ static int arcmsr_abort(struct scsi_cmnd *cmd)
        int rtn = FAILED;
        printk(KERN_NOTICE
                "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->num_aborts++;
        /*
index 2e797a36760879a685949fbdcb7671e9bb496036..d89b9b4deb3cdd659b615cd870541d726bb61a42 100644 (file)
@@ -760,7 +760,8 @@ intr_ret_t acornscsi_kick(AS_Host *host)
            SCpnt->tag = SCpnt->device->current_tag;
        } else
 #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;
 
@@ -863,7 +864,8 @@ static void acornscsi_done(AS_Host *host, struct scsi_cmnd **SCpntp,
        if (!SCpnt->scsi_done)
            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);
     } else
@@ -1576,7 +1578,8 @@ void acornscsi_message(AS_Host *host)
            printk(KERN_NOTICE "scsi%d.%c: disabling tagged queueing\n",
                    host->host->host_no, acornscsi_target(host));
            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;
 #endif
        case EXTENDED_MESSAGE | (EXTENDED_SDTR << 8):
@@ -2671,7 +2674,8 @@ int acornscsi_abort(struct scsi_cmnd *SCpnt)
 //#if (DEBUG & DEBUG_ABORT)
                printk("clear ");
 //#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
@@ -2853,7 +2857,7 @@ static int acornscsi_show_info(struct seq_file *m, struct Scsi_Host *instance)
 
     shost_for_each_device(scd, instance) {
        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)
                seq_printf(m, "%3sabled(%3d) ",
                             scd->simple_tags ? "en" : "dis",
index b46a6f6c0eb34913afc31af580b4b194678e994b..71cfb1e504c4648a0a412b99cd09d51e969414a0 100644 (file)
@@ -1821,7 +1821,8 @@ static void fas216_allocate_tag(FAS216_Info *info, struct scsi_cmnd *SCpnt)
                        SCpnt->tag = SCpnt->device->current_tag;
        } else
 #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;
        switch (SCpnt->cmnd[0]) {
@@ -2171,7 +2172,8 @@ static void fas216_done(FAS216_Info *info, unsigned int result)
         * status.
         */
        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(info, SCpnt, result);
@@ -2398,7 +2400,8 @@ static enum res_find fas216_find_command(FAS216_Info *info,
                 * been set.
                 */
                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 ");
                res = res_success;
        } else
@@ -3000,7 +3003,7 @@ void fas216_print_devices(FAS216_Info *info, struct seq_file *m)
 
        shost_for_each_device(scd, info->host) {
                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)
                        seq_printf(m, "%3sabled(%3d) ",
                                     scd->simple_tags ? "en" : "dis",
index cb11ccef54e5104d2825d4e6bfdfcefa8260672c..3441ce3ebabfed136f79560d734e37874837177c 100644 (file)
@@ -167,7 +167,8 @@ struct scsi_cmnd *queue_remove_exclude(Queue_t *queue, unsigned long *exclude)
        spin_lock_irqsave(&queue->queue_lock, flags);
        list_for_each(l, &queue->head) {
                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);
                        break;
                }
index 1814aa20b7243f0f50f72b065e91b8a2172d9a94..79e6f045c2a911348a99dfd02a87ab2603b7168c 100644 (file)
@@ -361,17 +361,18 @@ static void __init init_tags(void)
 
 static int is_lun_busy(Scsi_Cmnd *cmd, int should_be_tagged)
 {
+       u8 lun = cmd->device->lun;
        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;
        if (!should_be_tagged ||
            !setup_use_tagged_queuing || !cmd->device->tagged_supported)
                return 0;
-       if (TagAlloc[cmd->device->id][cmd->device->lun].nr_allocated >=
-           TagAlloc[cmd->device->id][cmd->device->lun].queue_size) {
+       if (TagAlloc[cmd->device->id][lun].nr_allocated >=
+           TagAlloc[cmd->device->id][lun].queue_size) {
                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 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)
 {
+       u8 lun = cmd->device->lun;
        SETUP_HOSTDATA(cmd->device->host);
 
        /* 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 ||
            !setup_use_tagged_queuing || !cmd->device->tagged_supported) {
                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 "
-                          "command\n", H_NO(cmd), cmd->device->id, cmd->device->lun);
+                          "command\n", H_NO(cmd), cmd->device->id, lun);
        } 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);
                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 "
                           "(now %d tags in use)\n",
                           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)
 {
+       u8 lun = cmd->device->lun;
        SETUP_HOSTDATA(cmd->device->host);
 
        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",
-                          H_NO(cmd), cmd->device->id, cmd->device->lun);
+                          H_NO(cmd), cmd->device->id, lun);
        } else if (cmd->tag >= MAX_TAGS) {
                printk(KERN_NOTICE "scsi%d: trying to free bad tag %d!\n",
                       H_NO(cmd), cmd->tag);
        } 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);
                ta->nr_allocated--;
                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;
        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);
        printk(KERN_CONT "        command = ");
        command = cmd->cmnd;
@@ -759,7 +762,7 @@ static void show_Scsi_Cmnd(Scsi_Cmnd *cmd, struct seq_file *m)
 {
        int i, s;
        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);
        seq_printf(m, "        command = ");
        command = cmd->cmnd;
@@ -1060,12 +1063,13 @@ static void NCR5380_main(struct work_struct *work)
 #endif
                        for (tmp = (Scsi_Cmnd *) hostdata->issue_queue,
                             prev = NULL; tmp; prev = tmp, tmp = NEXT(tmp)) {
+                               u8 lun = tmp->device->lun;
 
 #if (NDEBUG & NDEBUG_LISTS)
                                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->device->lun);
+                                              lun);
 #endif
                                /*  When we find one, remove it from the issue queue. */
                                /* ++guenther: possible race with Falcon locking */
@@ -1073,7 +1077,7 @@ static void NCR5380_main(struct work_struct *work)
 #ifdef SUPPORT_TAGS
                                    !is_lun_busy( tmp, tmp->cmnd[0] != REQUEST_SENSE)
 #else
-                                   !(hostdata->busy[tmp->device->id] & (1 << tmp->device->lun))
+                                   !(hostdata->busy[tmp->device->id] & (1 << lun))
 #endif
                                    ) {
                                        /* ++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 "
                                                    "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
                                         * 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
                                                 * polled-IO. */
                                                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->borken = 1;
                                                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 */
                                        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);
 
                                        /* Enable reselect interrupts */
@@ -2125,7 +2129,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
                                         */
 
                                        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",
                                                        HOSTNO, cmd->device->id, cmd->device->lun);
                                                sink = 1;
@@ -2138,7 +2142,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
                                         * and don't free it! */
                                        cmd->next_link->tag = cmd->tag;
                                        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",
                                                   HOSTNO, cmd->device->id, cmd->device->lun);
 #ifdef NCR5380_STATS
@@ -2155,7 +2159,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
                                        /* ++guenther: possible race with Falcon locking */
                                        falcon_dont_release++;
                                        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);
 #ifdef SUPPORT_TAGS
                                        cmd_free_tag(cmd);
@@ -2169,7 +2173,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
                                                /* ++Andreas: the mid level code knows about
                                                   QUEUE_FULL now. */
                                                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",
                                                           HOSTNO, cmd->device->id, cmd->device->lun,
                                                           ta->nr_allocated);
@@ -2267,7 +2271,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
                                                cmd->device->tagged_supported = 0;
                                                hostdata->busy[cmd->device->id] |= (1 << cmd->device->lun);
                                                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 "
                                                           "disabled\n",
                                                           HOSTNO, cmd->device->id, cmd->device->lun);
@@ -2284,7 +2288,7 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
                                        hostdata->connected = NULL;
                                        hostdata->disconnected_queue = cmd;
                                        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 "
                                                  "disconnected_queue\n", HOSTNO,
                                                  cmd->device->id, cmd->device->lun);
@@ -2385,12 +2389,12 @@ static void NCR5380_information_transfer(struct Scsi_Host *instance)
                                                printk("\n");
                                        } else if (tmp != EXTENDED_MESSAGE)
                                                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);
                                        else
                                                printk(KERN_DEBUG "scsi%d: rejecting unknown "
                                                       "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],
                                                       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);
 
        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);
        falcon_dont_release--;
 }
index 7bc47fc7c686afe9d4b88e520475b39e8eeba2a8..e0bb209f3af14a5a28d443b08bfafd9d2741dde3 100644 (file)
@@ -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 bnx2fc_rport *tgt = io_req->tgt;
        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 lun;
 
        /* called with tgt_lock held */
        BNX2FC_IO_DBG(io_req, "Entered bnx2fc_lun_reset_cmpl\n");
index 2a323742ce0471957ff4190b51e6acfe7766b2c2..7e952cadbcf1b2d83ace00da2770802ffa5244cd 100644 (file)
@@ -247,7 +247,7 @@ ch_read_element_status(scsi_changer *ch, u_int elem, char *data)
  retry:
        memset(cmd,0,sizeof(cmd));
        cmd[0] = READ_ELEMENT_STATUS;
-       cmd[1] = (ch->device->lun << 5) |
+       cmd[1] = ((ch->device->lun & 0x7) << 5) |
                (ch->voltags ? 0x10 : 0) |
                ch_elem_to_typecode(ch,elem);
        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");
        memset(cmd,0,sizeof(cmd));
        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);
        VPRINTK(KERN_INFO, "... finished\n");
        return err;
@@ -303,7 +303,7 @@ ch_readconfig(scsi_changer *ch)
 
        memset(cmd,0,sizeof(cmd));
        cmd[0] = MODE_SENSE;
-       cmd[1] = ch->device->lun << 5;
+       cmd[1] = (ch->device->lun & 0x7) << 5;
        cmd[2] = 0x1d;
        cmd[4] = 255;
        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];
        memset(cmd,0,sizeof(cmd));
        cmd[0]  = POSITION_TO_ELEMENT;
-       cmd[1]  = ch->device->lun << 5;
+       cmd[1]  = (ch->device->lun & 0x7) << 5;
        cmd[2]  = (trans >> 8) & 0xff;
        cmd[3]  =  trans       & 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];
        memset(cmd,0,sizeof(cmd));
        cmd[0]  = MOVE_MEDIUM;
-       cmd[1]  = ch->device->lun << 5;
+       cmd[1]  = (ch->device->lun & 0x7) << 5;
        cmd[2]  = (trans >> 8) & 0xff;
        cmd[3]  =  trans       & 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];
        memset(cmd,0,sizeof(cmd));
        cmd[0]  = EXCHANGE_MEDIUM;
-       cmd[1]  = ch->device->lun << 5;
+       cmd[1]  = (ch->device->lun & 0x7) << 5;
        cmd[2]  = (trans >> 8) & 0xff;
        cmd[3]  =  trans       & 0xff;
        cmd[4]  = (src   >> 8) & 0xff;
@@ -518,7 +518,7 @@ ch_set_voltag(scsi_changer *ch, u_int elem,
                elem, tag);
        memset(cmd,0,sizeof(cmd));
        cmd[0]  = SEND_VOLUME_TAG;
-       cmd[1] = (ch->device->lun << 5) |
+       cmd[1] = ((ch->device->lun & 0x7) << 5) |
                ch_elem_to_typecode(ch,elem);
        cmd[2] = (elem >> 8) & 0xff;
        cmd[3] = elem        & 0xff;
@@ -754,7 +754,7 @@ static long ch_ioctl(struct file *file,
        voltag_retry:
                memset(ch_cmd, 0, sizeof(ch_cmd));
                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_elem_to_typecode(ch,elem);
                ch_cmd[2] = (elem >> 8) & 0xff;
index 7494e4bc69ccd6a197f8c8e8d8b8f77dbb6abaac..86103c8475d8ed649b456b4e9f83b954a3b04e31 100644 (file)
@@ -1657,7 +1657,7 @@ csio_scsi_err_handler(struct csio_hw *hw, struct csio_ioreq *req)
        case FW_SCSI_UNDER_FLOW_ERR:
                csio_warn(hw,
                          "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),
                          scsi_get_resid(cmnd), cmnd->device->lun,
                          rn->flowid);
@@ -1957,7 +1957,7 @@ csio_eh_abort_handler(struct scsi_cmnd *cmnd)
 
        csio_dbg(hw,
                 "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,
                cmnd->device->lun, csio_q_physiqid(hw, ioreq->iq_idx));
 
@@ -2015,13 +2015,13 @@ inval_scmnd:
        /* FW successfully aborted the request */
        if (host_byte(cmnd->result) == DID_REQUEUE) {
                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->serial_number);
                return SUCCESS;
        } else {
                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->serial_number);
                return FAILED;
@@ -2100,13 +2100,13 @@ csio_eh_lun_reset_handler(struct scsi_cmnd *cmnd)
        if (!rn)
                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);
 
        if (!csio_is_lnode_ready(ln)) {
                csio_err(hw,
                         "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);
                goto fail;
        }
@@ -2126,7 +2126,7 @@ csio_eh_lun_reset_handler(struct scsi_cmnd *cmnd)
        if (fc_remote_port_chkready(rn->rport)) {
                csio_err(hw,
                         "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);
                goto fail;
        }
@@ -2168,7 +2168,7 @@ csio_eh_lun_reset_handler(struct scsi_cmnd *cmnd)
        sld.level = CSIO_LEV_LUN;
        sld.lnode = ioreq->lnode;
        sld.rnode = ioreq->rnode;
-       sld.oslun = (uint64_t)cmnd->device->lun;
+       sld.oslun = cmnd->device->lun;
 
        spin_lock_irqsave(&hw->lock, flags);
        /* Kick off TM SM on the ioreq */
@@ -2190,7 +2190,7 @@ csio_eh_lun_reset_handler(struct scsi_cmnd *cmnd)
 
        /* LUN reset timed-out */
        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);
 
                spin_lock_irq(&hw->lock);
@@ -2203,7 +2203,7 @@ csio_eh_lun_reset_handler(struct scsi_cmnd *cmnd)
 
        /* LUN reset returned, check cached status */
        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);
                goto fail;
        }
@@ -2223,7 +2223,7 @@ csio_eh_lun_reset_handler(struct scsi_cmnd *cmnd)
        /* Aborts may have timed out */
        if (retval != 0) {
                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);
                /* Return I/Os back to active_q */
                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_info(hw, "LUN reset occurred (%d:%d)\n",
+       csio_info(hw, "LUN reset occurred (%d:%llu)\n",
                  cmnd->device->id, cmnd->device->lun);
 
        return SUCCESS;
index ad7bee069d089769b25d0333095c3b8ee81bd7a7..dff461f2338e3ac8c733235f8a2af24d6ce525ba 100644 (file)
@@ -1087,7 +1087,7 @@ static int dc395x_queue_command_lck(struct scsi_cmnd *cmd, void (*done)(struct s
        struct AdapterCtlBlk *acb =
            (struct AdapterCtlBlk *)cmd->device->host->hostdata;
        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 */
        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 */
        if (!(acb->dcb_map[cmd->device->id] & (1 << cmd->device->lun))) {
                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;
        }
 
@@ -1111,7 +1111,7 @@ static int dc395x_queue_command_lck(struct scsi_cmnd *cmd, void (*done)(struct s
        if (!dcb) {
                /* should never happen */
                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;
        }
 
@@ -1207,7 +1207,7 @@ static void dump_register_info(struct AdapterCtlBlk *acb,
                                 "cmnd=0x%02x <%02i-%i>\n",
                                srb, srb->cmd,
                                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",
                       srb->segment_x, srb->sg_count, srb->sg_index,
                       srb->total_xfer_length);
@@ -1302,7 +1302,7 @@ static int __dc395x_eh_bus_reset(struct scsi_cmnd *cmd)
                (struct AdapterCtlBlk *)cmd->device->host->hostdata;
        dprintkl(KERN_INFO,
                "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))
                del_timer(&acb->waiting_timer);
@@ -1369,7 +1369,7 @@ static int dc395x_eh_abort(struct scsi_cmnd *cmd)
        struct DeviceCtlBlk *dcb;
        struct ScsiReqBlk *srb;
        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);
        if (!dcb) {
@@ -1605,7 +1605,7 @@ static u8 start_scsi(struct AdapterCtlBlk* acb, struct DeviceCtlBlk* dcb,
                        dprintkl(KERN_WARNING, "start_scsi: (0x%p) "
                                "Out of tags target=<%02i-%i>)\n",
                                srb->cmd, srb->cmd->device->id,
-                               srb->cmd->device->lun);
+                               (u8)srb->cmd->device->lun);
                        srb->state = SRB_READY;
                        DC395x_write16(acb, TRM_S1040_SCSI_CONTROL,
                                       DO_HWRESELECT);
@@ -1623,7 +1623,7 @@ static u8 start_scsi(struct AdapterCtlBlk* acb, struct DeviceCtlBlk* dcb,
 /*polling:*/
        /* Send CDB ..command block ......... */
        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);
        if (srb->flag & AUTO_REQSENSE) {
                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;
        u32 d_left_counter = 0;
        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!
@@ -2171,7 +2171,7 @@ static void data_out_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
                u16 *pscsi_status)
 {
        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");
        /* do prepare before transfer when data out phase */
        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;
 
        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
@@ -2394,7 +2394,7 @@ static void data_in_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
                u16 *pscsi_status)
 {
        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);
 }
 
@@ -2406,7 +2406,7 @@ static void data_io_transfer(struct AdapterCtlBlk *acb,
        u8 bval;
        dprintkdbg(DBG_0,
                "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'),
                srb->total_xfer_length, srb->sg_index, srb->sg_count);
        if (srb == acb->tmp_srb)
@@ -2579,7 +2579,7 @@ static void status_phase0(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
                u16 *pscsi_status)
 {
        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->end_message = DC395x_read8(acb, TRM_S1040_SCSI_FIFO);      /* get message */
        srb->state = SRB_COMPLETED;
@@ -2593,7 +2593,7 @@ static void status_phase1(struct AdapterCtlBlk *acb, struct ScsiReqBlk *srb,
                u16 *pscsi_status)
 {
        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;
        DC395x_write16(acb, TRM_S1040_SCSI_CONTROL, DO_DATALATCH);      /* it's important for atn stop */
        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;
 
        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",
                   srb, scsi_sg_count(cmd), srb->sg_index, srb->sg_count,
                   scsi_sgtalbe(cmd));
@@ -3498,7 +3498,7 @@ static void srb_done(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb,
                if (srb->total_xfer_length)
                        dprintkdbg(DBG_KG, "srb_done: (0x%p) <%02i-%i> "
                                "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);
        }
 
@@ -3538,7 +3538,7 @@ static void doing_srb_done(struct AdapterCtlBlk *acb, u8 did_flag,
                        dir = p->sc_data_direction;
                        result = MK_RES(0, did_flag, 0, 0);
                        printk("G:%p(%02i-%i) ", p,
-                              p->device->id, p->device->lun);
+                              p->device->id, (u8)p->device->lun);
                        srb_going_remove(dcb, srb);
                        free_tag(dcb, 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);
                        printk("W:%p<%02i-%i>", p, p->device->id,
-                              p->device->lun);
+                              (u8)p->device->lun);
                        srb_waiting_remove(dcb, srb);
                        srb_free_insert(acb, srb);
                        p->result = result;
@@ -3677,7 +3677,7 @@ static void request_sense(struct AdapterCtlBlk *acb, struct DeviceCtlBlk *dcb,
 {
        struct scsi_cmnd *cmd = srb->cmd;
        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->adapter_status = 0;
index c0ae8fa57a3bda23cc2be1c99376c86514472333..67283ef418ac86fcc6d169033c7b68ae99379d0b 100644 (file)
@@ -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
                 * 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 
                        // 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);
@@ -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);
 
                                unit = d->pI2o_dev->lct_data.tid;
-                               seq_printf(m, "\tTID=%d, (Channel=%d, Target=%d, Lun=%d)  (%s)\n\n",
-                                              unit, (int)d->scsi_channel, (int)d->scsi_id, (int)d->scsi_lun,
+                               seq_printf(m, "\tTID=%d, (Channel=%d, Target=%d, Lun=%llu)  (%s)\n\n",
+                                              unit, (int)d->scsi_channel, (int)d->scsi_id, d->scsi_lun,
                                               scsi_device_online(d->pScsi_dev)? "online":"offline"); 
                                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;
 
@@ -1462,7 +1462,7 @@ static int adpt_i2o_parse_lct(adpt_hba* pHba)
        i2o_lct *lct = pHba->lct;
        u8 bus_no = 0;
        s16 scsi_id;
-       s16 scsi_lun;
+       u64 scsi_lun;
        u32 buf[10]; // larger than 7, or 8 ...
        struct adpt_device* pDev; 
        
@@ -1496,7 +1496,7 @@ static int adpt_i2o_parse_lct(adpt_hba* pHba)
                        }
                        bus_no = buf[0]>>16;
                        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
                                printk(KERN_WARNING"%s: Channel number %d out of range \n", pHba->name, bus_no);
                                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) {
                                bus_no = buf[0]>>16;
                                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
                                        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_NO_ADAPTER:
                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",
-                               pHba->name, (u32)cmd->device->channel, (u32)cmd->device->id, (u32)cmd->device->lun, hba_status, dev_status, cmd->cmnd[0]);
+                       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, cmd->device->lun, hba_status, dev_status, cmd->cmnd[0]);
                        cmd->result = (DID_TIME_OUT << 16);
                        break;
                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_REQUEST_INVALID:
                default:
-                       printk(KERN_WARNING"%s: SCSI error %0x-Device(%d,%d,%d) 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,
+                       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, cmd->device->lun,
                               hba_status, dev_status, cmd->cmnd[0]);
                        cmd->result = (DID_ERROR << 16);
                        break;
@@ -2464,8 +2464,8 @@ static s32 adpt_i2o_to_scsi(void __iomem *reply, struct scsi_cmnd* cmd)
                           cmd->sense_buffer[2] == DATA_PROTECT ){
                                /* This is to handle an array failed */
                                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",
-                                       pHba->name, (u32)cmd->device->channel, (u32)cmd->device->id, (u32)cmd->device->lun, 
+                               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, cmd->device->lun,
                                        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.
                 */
                cmd->result = (DID_TIME_OUT << 16);
-               printk(KERN_WARNING"%s: I2O MSG_FAIL - Device (%d,%d,%d) tid=%d, cmd=0x%x\n",
-                       pHba->name, (u32)cmd->device->channel, (u32)cmd->device->id, (u32)cmd->device->lun,
+               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, cmd->device->lun,
                        ((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;
        u8 bus_no = 0;
        s16 scsi_id;
-       s16 scsi_lun;
+       u64 scsi_lun;
        u32 buf[10]; // at least 8 u32's
        struct adpt_device* pDev = 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_lun = (buf[2]>>8 )&0xff;
+                       scsi_lun = scsilun_to_int((struct scsi_lun *)&buf[2]);
                        pDev = pHba->channel[bus_no].device[scsi_id];
                        /* da lun */
                        while(pDev) {
@@ -2633,7 +2633,7 @@ static s32 adpt_i2o_reparse_lct(adpt_hba* pHba)
                        while(pDev) {
                                if(pDev->scsi_lun == scsi_lun) {
                                        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);
                                                if (pDev->pScsi_dev) {
                                                        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
                if (pDev->state & DPTI_DEV_UNSCANNED){
                        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) {
                                scsi_device_set_state(pDev->pScsi_dev, SDEV_OFFLINE);
                        }
index aeb046186c84e4043e204736ba9505f856f44607..1fa345ab8ecba1ec71a5264defeddae15a49b1da 100644 (file)
@@ -184,7 +184,7 @@ struct adpt_device {
        u32     block_size;
        u8      scsi_channel;
        u8      scsi_id;
-       u     scsi_lun;
+       u64     scsi_lun;
        u8      state;
        u16     tid;
        struct i2o_device* pI2o_dev;
@@ -231,7 +231,7 @@ typedef struct _adpt_hba {
        u32  sg_tablesize;      // Scatter/Gather List Size.       
        u8  top_scsi_channel;
        u8  top_scsi_id;
-       u8  top_scsi_lun;
+       u64  top_scsi_lun;
        u8  dma64;
 
        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_inquiry(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_i2o_online_hba(adpt_hba* pHba);
 static void adpt_i2o_post_wait_complete(u32, int);
index ebf57364df912a7b9f4a78a9775fc1d2ddacfd7e..0f27ac19cf0164f5c0d62054bc1d6b2fd1f51aaa 100644 (file)
@@ -2449,7 +2449,7 @@ static irqreturn_t ihdlr(struct Scsi_Host *shost)
                               "target_status 0x%x, sense key 0x%x.\n",
                               ha->board_name,
                               SCpnt->device->channel, SCpnt->device->id,
-                              SCpnt->device->lun,
+                              (u8)SCpnt->device->lun,
                               spp->target_status, SCpnt->sense_buffer[2]);
 
                ha->target_to[SCpnt->device->id][SCpnt->device->channel] = 0;
index ea28b5ca4c734a10da01237fcb880e2a5874c890..3f88f56582a2ec302a85b28beaf00a92f499779e 100644 (file)
@@ -1753,7 +1753,7 @@ int fnic_abort_cmd(struct scsi_cmnd *sc)
        tag = sc->request->tag;
        FNIC_SCSI_DBG(KERN_DEBUG,
                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));
 
        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));
        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);
 
        if (lp->state != LPORT_ST_READY || !(lp->link_up))
index a1bc8ca958e11341c9995b2918475d56141afbcd..b331272e93bc4d8f77a51aadd184fb49ec7ce5f6 100644 (file)
@@ -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)
 {
-       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 = ");
        sprint_command(m, cmd->cmnd);
 }
index 31184b35370fe472099f072cdd7979b428fd07fc..a59e1e022e3716cb13caf2de2e0a9d82636ad20f 100644 (file)
@@ -4590,7 +4590,7 @@ static int hpsa_eh_abort_handler(struct scsi_cmnd *sc)
                return FAILED;
 
        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,
                sc->device->id, sc->device->lun);
 
index ee196b363d81c16cb2c85702bab0bb929d43d1b0..dedb62c21b296f08c86cb9be52f99c2bf7bde253 100644 (file)
@@ -1024,7 +1024,7 @@ static int hptiop_queuecommand_lck(struct scsi_cmnd *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",
                        scp,
                        host->host_no, scp->device->channel,
index b1c4d831137d52603a1c86a04a27d2be47af822e..ddf0694d87f0b2b504d7e62cdc1c4d32da10e9bc 100644 (file)
@@ -2251,14 +2251,14 @@ static int in2000_show_info(struct seq_file *m, struct Scsi_Host *instance)
                seq_printf(m, "\nconnected:     ");
                if (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) {
                seq_printf(m, "\ninput_Q:       ");
                cmd = (Scsi_Cmnd *) hd->input_Q;
                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;
                }
        }
@@ -2266,7 +2266,7 @@ static int in2000_show_info(struct seq_file *m, struct Scsi_Host *instance)
                seq_printf(m, "\ndisconnected_Q:");
                cmd = (Scsi_Cmnd *) hd->disconnected_Q;
                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;
                }
        }
index 3d1bc67bac9dc58ac11b9785694e568b3c3ab285..f2db82beb6468c4f061c80ce767bf2847ec72596 100644 (file)
@@ -260,7 +260,7 @@ static int iscsi_check_tmf_restrictions(struct iscsi_task *task, int opcode)
 {
        struct iscsi_conn *conn = task->conn;
        struct iscsi_tm *tmf = &conn->tmhdr;
-       unsigned int hdr_lun;
+       u64 hdr_lun;
 
        if (conn->tmf_state == TMF_INITIAL)
                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
  * thread flushed
  */
-static void fail_scsi_tasks(struct iscsi_conn *conn, unsigned lun,
-                           int error)
+static void fail_scsi_tasks(struct iscsi_conn *conn, u64 lun, int error)
 {
        struct iscsi_task *task;
        int i;
@@ -2279,7 +2278,8 @@ int iscsi_eh_device_reset(struct scsi_cmnd *sc)
        cls_session = starget_to_session(scsi_target(sc->device));
        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);
        spin_lock_bh(&session->frwd_lock);
index 25d0f127424d9ece9155c9e21c6b3828c193135b..7d02a19419a7467ade36ae5a11d581ac657b2049 100644 (file)
@@ -404,7 +404,7 @@ static int sas_recover_lu(struct domain_device *dev, struct scsi_cmnd *cmd)
 
        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),
                    cmd->device->lun);
 
@@ -490,7 +490,8 @@ static void sas_wait_eh(struct domain_device *dev)
 }
 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;
        int scheduled = 0, tries = 100;
@@ -689,7 +690,7 @@ static void sas_eh_handle_sas_errors(struct Scsi_Host *shost, struct list_head *
  reset:
                        tmf_resp = sas_recover_lu(task->dev, cmd);
                        if (tmf_resp == TMF_RESP_FUNC_COMPLETE) {
-                               SAS_DPRINTK("dev %016llx LU %x is "
+                               SAS_DPRINTK("dev %016llx LU %llx is "
                                            "recovered\n",
                                            SAS_ADDR(task->dev),
                                            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
                         * 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",
                                    SAS_ADDR(task->dev->sas_addr),
                                    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_activate_tcq(scsi_dev, SAS_DEF_QD);
        } 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),
                            scsi_dev->lun);
                scsi_dev->tagged_supported = 0;
index 2df11daad85ba2e64f6f4284a9e6f3384ed8a2e7..7862c554086193aea97a830e0ca6d1f87eca1df5 100644 (file)
@@ -258,7 +258,7 @@ static void
 lpfc_send_sdev_queuedepth_change_event(struct lpfc_hba *phba,
                struct lpfc_vport  *vport,
                struct lpfc_nodelist *ndlp,
-               uint32_t lun,
+               uint64_t lun,
                uint32_t old_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) {
                        lpfc_printf_vlog(vport, KERN_ERR, LOG_FCP,
                                 "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->lun, cmnd->cmnd[0],
                                 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,
                                 "2757 Protocol failure detected during "
                                 "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->lun, cmnd->cmnd[0],
                                 fcprsp->rspInfo3);
@@ -4045,7 +4045,7 @@ lpfc_scsi_cmd_iocb_cmpl(struct lpfc_hba *phba, struct lpfc_iocbq *pIocbIn,
                else
                        logit = LOG_FCP | LOG_FCP_UNDER;
                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 "
                         "sid: x%x did: x%x oxid: x%x "
                         "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;
 
                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",
                                 cmd->device->id, cmd->device->lun, cmd,
                                 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
 lpfc_scsi_prep_task_mgmt_cmd(struct lpfc_vport *vport,
                             struct lpfc_scsi_buf *lpfc_cmd,
-                            unsigned int lun,
+                            uint64_t lun,
                             uint8_t task_mgmt_cmd)
 {
        struct lpfc_iocbq *piocbq;
@@ -4719,12 +4719,12 @@ lpfc_queuecommand(struct Scsi_Host *shost, struct scsi_cmnd *cmnd)
                atomic_dec(&ndlp->cmd_pending);
                lpfc_printf_vlog(vport, KERN_INFO, LOG_FCP,
                                 "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 "
                                 "Data: x%x x%x x%x x%x\n",
                                 err, cmnd->cmnd[0],
                                 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,
                                 phba->sli_rev == LPFC_SLI_REV4 ?
                                 lpfc_cmd->cur_iocbq.sli4_xritag : 0xffff,
@@ -4807,7 +4807,7 @@ lpfc_abort_handler(struct scsi_cmnd *cmnd)
                spin_unlock_irqrestore(&phba->hbalock, flags);
                lpfc_printf_vlog(vport, KERN_WARNING, LOG_FCP,
                         "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);
                return SUCCESS;
        }
@@ -4924,7 +4924,7 @@ wait_for_cmpl:
                lpfc_printf_vlog(vport, KERN_ERR, LOG_FCP,
                                 "0748 abort handler timed out waiting "
                                 "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,
                                 cmnd->device->id, cmnd->device->lun);
        }
@@ -4935,7 +4935,7 @@ out_unlock:
 out:
        lpfc_printf_vlog(vport, KERN_WARNING, LOG_FCP,
                         "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);
        return ret;
 }
@@ -5047,7 +5047,7 @@ lpfc_check_fcp_rsp(struct lpfc_vport *vport, struct lpfc_scsi_buf *lpfc_cmd)
  **/
 static int
 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)
 {
        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;
 
        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",
                         lpfc_taskmgmt_name(task_mgmt_cmd), tgt_id, lun_id,
                         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) ||
            (iocbqrsp->iocb.ulpStatus != IOSTAT_SUCCESS)) {
                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",
                         lpfc_taskmgmt_name(task_mgmt_cmd),
                         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_nodelist *pnode;
        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;
        int status;
 
@@ -5273,7 +5273,7 @@ lpfc_device_reset_handler(struct scsi_cmnd *cmnd)
                                                FCP_LUN_RESET);
 
        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);
 
        /*
@@ -5308,7 +5308,7 @@ lpfc_target_reset_handler(struct scsi_cmnd *cmnd)
        struct lpfc_rport_data *rdata;
        struct lpfc_nodelist *pnode;
        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;
        int status;
 
@@ -5343,7 +5343,7 @@ lpfc_target_reset_handler(struct scsi_cmnd *cmnd)
                                        FCP_TARGET_RESET);
 
        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);
 
        /*
index b7770516f4c2dc5ebfda41727fec541c47dff6c6..6bb2b52646b466e59392d62c168de38efffac9f6 100644 (file)
@@ -1941,8 +1941,8 @@ 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",
             (aor == SCB_ABORT)? "ABORTING":"RESET",
-            cmd->cmnd[0], cmd->device->channel, 
-            cmd->device->id, cmd->device->lun);
+            cmd->cmnd[0], cmd->device->channel,
+            cmd->device->id, (u32)cmd->device->lun);
 
        if(list_empty(&adapter->pending_list))
                return FALSE;
index 5ead1283a84424cfad432a6247e4020899ef7bdd..1d037ed52c3336b956064d10d7ce2c8c9b010eb6 100644 (file)
@@ -204,7 +204,7 @@ typedef struct {
 #define SCP2HOSTDATA(scp)              SCP2HOST(scp)->hostdata // to soft state
 #define SCP2CHANNEL(scp)               (scp)->device->channel  // to channel
 #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
 #define SCSIHOST2ADAP(host)    (((caddr_t *)(host->hostdata))[0])
index 22600419ae9ffa539be2aaf68cc916803ec05161..3ed03dfab76c4997eadb43aed51be2dbad3837a3 100644 (file)
@@ -1690,7 +1690,7 @@ NonFastPath:
                         MEGASAS_REQ_DESCRIPT_FLAGS_TYPE_SHIFT);
        }
        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);
 
        /* 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.PrimaryApplicationTagMask = 0;
        io_request->EEDPFlags = 0;
index e8a04ae3276a703a64d1c33d987624ef13d4e42a..7a6160f172ce1b44b980784992ce599fd8c56658 100644 (file)
@@ -1230,7 +1230,7 @@ static void handle_msgin(struct mesh_state *ms)
                                ms->msgphase = msg_out;
                        } else if (code != cmd->device->lun + IDENTIFY_BASE) {
                                printk(KERN_WARNING "mesh: lun mismatch "
-                                      "(%d != %d) on reselection from "
+                                      "(%d != %llu) on reselection from "
                                       "target %d\n", code - IDENTIFY_BASE,
                                       cmd->device->lun, ms->conn_tgt);
                        }
index 7d014b11df62fc086be5d8deff46ad4facaa4499..a7305ffc359d2f098647253be030ae33243e631a 100644 (file)
@@ -6633,7 +6633,7 @@ static void ncr_sir_to_redo(struct ncb *np, int num, struct ccb *cp)
                **      patch requested size into sense command
                */
                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);
 
                /*
index 0665f9cfdb02d7fb5c4fc415f969ee309c37690e..50b086aef17836b75c82d428b990e938b3f23606 100644 (file)
@@ -915,7 +915,7 @@ static int nsp32_queuecommand_lck(struct scsi_cmnd *SCpnt, void (*done)(struct s
        int ret;
 
        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",
                  SCpnt->device->id, SCpnt->device->lun, SCpnt->cmnd[0], SCpnt->cmd_len,
                  scsi_sg_count(SCpnt), scsi_sglist(SCpnt), scsi_bufflen(SCpnt));
index 987fbb1b244e9661be7401d6de906f444840a1ea..340ceff0382370a27880e7f376bd9357d70896ab 100644 (file)
@@ -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_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),
                scsi_bufflen(SCpnt), scsi_sg_count(SCpnt));
        //nsp_dbg(NSP_DEBUG_QUEUECOMMAND, "before CurrentSC=0x%p", data->CurrentSC);
index f5b52731abd946949f768c224f950fee2b6693f1..155f9573021f08af0d733b9abcf91db2c151361e 100644 (file)
@@ -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", 
            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++)
            printk("cmd[%d]=%02x  ", i, SCpnt->cmnd[i]));
index be8ce54f99b247bcba427a16c2f4873b987329c8..017f8b9554e53de6c64ae49f73d79e348a97dfd9 100644 (file)
@@ -237,7 +237,7 @@ static int pmcraid_slave_configure(struct scsi_device *scsi_dev)
                     scsi_dev->host->unique_id,
                     scsi_dev->channel,
                     scsi_dev->id,
-                    scsi_dev->lun);
+                    (u8)scsi_dev->lun);
 
        if (RES_IS_GSCSI(res->cfg_entry)) {
                scsi_dev->allow_restart = 1;
index e6e2a30493e69d6baeda15585a840865fd26c6f9..ef23fabe3924ea138db50d14c354d0fb6a55c6ae 100644 (file)
@@ -78,7 +78,7 @@ static int ps3rom_slave_configure(struct scsi_device *scsi_dev)
        struct ps3rom_private *priv = shost_priv(scsi_dev->host);
        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);
 
        /*
index de5d0ae19d83ce995701183eb5c4586d528aeaa3..b643991531359e6a4ed4eb842561f1ffaa11ceba 100644 (file)
@@ -320,8 +320,8 @@ struct srb_iocb {
                         * defined in tsk_mgmt_entry struct
                         * for control_flags field in qla_fw.h.
                         */
+                       uint64_t lun;
                        uint32_t flags;
-                       uint32_t lun;
                        uint32_t data;
                        struct completion comp;
                        __le16 comp_status;
@@ -2529,8 +2529,8 @@ struct isp_operations {
        void (*disable_intrs) (struct qla_hw_data *);
 
        int (*abort_command) (srb_t *);
-       int (*target_reset) (struct fc_port *, unsigned int, int);
-       int (*lun_reset) (struct fc_port *, unsigned int, int);
+       int (*target_reset) (struct fc_port *, uint64_t, int);
+       int (*lun_reset) (struct fc_port *, uint64_t, int);
        int (*fabric_login) (struct scsi_qla_host *, uint16_t, uint8_t,
                uint8_t, uint8_t, uint16_t *, uint8_t);
        int (*fabric_logout) (struct scsi_qla_host *, uint16_t, uint8_t,
index d48dea8fab1ba50a6dbd0c63855ff73cb584ec2b..9ef0781b12da64a4b09606f9a24c029ed6406ade 100644 (file)
@@ -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 qla24xx_start_scsi(srb_t *sp);
 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 qla24xx_dif_start_scsi(srb_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 *);
 
 extern int
-qla2x00_abort_target(struct fc_port *, unsigned int, int);
+qla2x00_abort_target(struct fc_port *, uint64_t, int);
 
 extern int
-qla2x00_lun_reset(struct fc_port *, unsigned int, int);
+qla2x00_lun_reset(struct fc_port *, uint64_t, int);
 
 extern int
 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_async_abort_command(srb_t *);
 extern int
-qla24xx_abort_target(struct fc_port *, unsigned int, int);
+qla24xx_abort_target(struct fc_port *, uint64_t, int);
 extern int
-qla24xx_lun_reset(struct fc_port *, unsigned int, int);
+qla24xx_lun_reset(struct fc_port *, uint64_t, int);
 extern 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
 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 void qlafx00_enable_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_lun_reset(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 *, uint64_t, int);
 extern int qlafx00_start_scsi(srb_t *);
 extern int qlafx00_abort_isp(scsi_qla_host_t *);
 extern int qlafx00_iospace_config(struct qla_hw_data *);
index 76093152959203227e93e24d619c687f31f71158..150529d98db47f134ffc73db49a4a1cca76747c3 100644 (file)
@@ -520,7 +520,7 @@ qla2x00_start_iocbs(struct scsi_qla_host *vha, struct req_que *req)
 static int
 __qla2x00_marker(struct scsi_qla_host *vha, struct req_que *req,
                        struct rsp_que *rsp, uint16_t loop_id,
-                       uint16_t lun, uint8_t type)
+                       uint64_t lun, uint8_t type)
 {
        mrk_entry_t *mrk;
        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)) {
                        mrk24 = (struct mrk_entry_24xx *) mrk;
                        mrk24->nport_handle = cpu_to_le16(loop_id);
-                       mrk24->lun[1] = LSB(lun);
-                       mrk24->lun[2] = MSB(lun);
+                       int_to_scsilun(lun, (struct scsi_lun *)&mrk24->lun);
                        host_to_fcp_swap(mrk24->lun, sizeof(mrk24->lun));
                        mrk24->vp_index = vha->vp_idx;
                        mrk24->handle = MAKE_HANDLE(req->id, mrk24->handle);
                } else {
                        SET_TARGET_ID(ha, mrk->target, loop_id);
-                       mrk->lun = cpu_to_le16(lun);
+                       mrk->lun = cpu_to_le16((uint16_t)lun);
                }
        }
        wmb();
@@ -562,7 +561,7 @@ __qla2x00_marker(struct scsi_qla_host *vha, struct req_que *req,
 
 int
 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)
 {
        int ret;
@@ -2047,7 +2046,7 @@ static void
 qla24xx_tm_iocb(srb_t *sp, struct tsk_mgmt_entry *tsk)
 {
        uint32_t flags;
-       unsigned int lun;
+       uint64_t lun;
        struct fc_port *fcport = sp->fcport;
        scsi_qla_host_t *vha = fcport->vha;
        struct qla_hw_data *ha = vha->hw;
index a56825c73c31418f31e570e8c0cde7dcbec6f09e..550a4a31f51a1605a6c6ec785279dd83ef0d5afd 100644 (file)
@@ -1659,7 +1659,7 @@ qla2x00_handle_sense(srb_t *sp, uint8_t *sense_data, uint32_t par_sense_len,
 
        if (sense_len) {
                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,
                    cp);
                ql_dump_buffer(ql_dbg_io + ql_dbg_buffer, vha, 0x302b,
@@ -2281,7 +2281,7 @@ check_scsi_status:
 out:
        if (logit)
                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 "
                    "rsp_info=0x%x resid=0x%x fw_resid=0x%x.\n",
                    comp_status, scsi_status, res, vha->host_no,
index 1c33a77db5c235827a2c284f1aa14fc6407dcaef..d9aafc003be238477fb3a45d6a12b461aa4d441b 100644 (file)
@@ -947,7 +947,7 @@ qla2x00_abort_command(srb_t *sp)
 }
 
 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;
        mbx_cmd_t  mc;
@@ -1000,7 +1000,7 @@ qla2x00_abort_target(struct fc_port *fcport, unsigned int l, int tag)
 }
 
 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;
        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;
        else
                mcp->mb[1] = fcport->loop_id << 8;
-       mcp->mb[2] = l;
+       mcp->mb[2] = (u32)l;
        mcp->mb[3] = 0;
        mcp->mb[9] = vha->vp_idx;
 
@@ -2666,7 +2666,7 @@ struct tsk_mgmt_cmd {
 
 static int
 __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;
        struct tsk_mgmt_cmd *tsk;
@@ -2760,7 +2760,7 @@ __qla24xx_issue_tmf(char *name, uint32_t type, struct fc_port *fcport,
 }
 
 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;
 
@@ -2771,7 +2771,7 @@ qla24xx_abort_target(struct fc_port *fcport, unsigned int l, int tag)
 }
 
 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;
 
index abeb3901498b2c1714e99284d3c4a1e7db4ef145..4775baa8b6a00dd6a9fa59249efcdf9d61dddcf3 100644 (file)
@@ -726,13 +726,13 @@ qlafx00_disable_intrs(struct qla_hw_data *ha)
 }
 
 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);
 }
 
 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);
 }
@@ -2159,7 +2159,7 @@ qlafx00_handle_sense(srb_t *sp, uint8_t *sense_data, uint32_t par_sense_len,
 
        if (sense_len) {
                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,
                    cp);
                ql_dump_buffer(ql_dbg_io + ql_dbg_buffer, vha, 0x3049,
@@ -2524,7 +2524,7 @@ check_scsi_status:
 
        if (logit)
                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 "
                    "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",
index 5269aee1df3b7b36f1f1a2956d978f740fbc4e76..b22c75305b444b1ccf46b093031061af16a7b5fa 100644 (file)
@@ -920,7 +920,8 @@ qla2xxx_eh_abort(struct scsi_cmnd *cmd)
        scsi_qla_host_t *vha = shost_priv(cmd->device->host);
        srb_t *sp;
        int ret;
-       unsigned int id, lun;
+       unsigned int id;
+       uint64_t lun;
        unsigned long flags;
        int rval, wait = 0;
        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,
-           "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);
 
        /* 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,
-           "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);
 
        return ret;
@@ -1003,7 +1004,7 @@ qla2xxx_eh_abort(struct scsi_cmnd *cmd)
 
 int
 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;
        unsigned long flags;
@@ -1060,7 +1061,7 @@ static char *reset_errors[] = {
 
 static int
 __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);
        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;
 
        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);
 
        err = 0;
@@ -1100,14 +1101,14 @@ __qla2xxx_eh_generic_reset(char *name, enum nexus_wait_type type,
        }
 
        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);
 
        return SUCCESS;
 
 eh_reset_failed:
        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,
            cmd);
        return FAILED;
@@ -1154,7 +1155,8 @@ qla2xxx_eh_bus_reset(struct scsi_cmnd *cmd)
        scsi_qla_host_t *vha = shost_priv(cmd->device->host);
        fc_port_t *fcport = (struct fc_port *) cmd->device->hostdata;
        int ret = FAILED;
-       unsigned int id, lun;
+       unsigned int id;
+       uint64_t lun;
 
        id = cmd->device->id;
        lun = cmd->device->lun;
@@ -1169,7 +1171,7 @@ qla2xxx_eh_bus_reset(struct scsi_cmnd *cmd)
        ret = FAILED;
 
        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) {
                ql_log(ql_log_fatal, vha, 0x8013,
@@ -1193,7 +1195,7 @@ qla2xxx_eh_bus_reset(struct scsi_cmnd *cmd)
 
 eh_bus_reset_done:
        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);
 
        return ret;
@@ -1220,14 +1222,15 @@ qla2xxx_eh_host_reset(struct scsi_cmnd *cmd)
        scsi_qla_host_t *vha = shost_priv(cmd->device->host);
        struct qla_hw_data *ha = vha->hw;
        int ret = FAILED;
-       unsigned int id, lun;
+       unsigned int id;
+       uint64_t lun;
        scsi_qla_host_t *base_vha = pci_get_drvdata(ha->pdev);
 
        id = cmd->device->id;
        lun = cmd->device->lun;
 
        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
@@ -1273,7 +1276,7 @@ qla2xxx_eh_host_reset(struct scsi_cmnd *cmd)
 
 eh_host_reset_lock:
        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);
 
        return ret;
@@ -1409,7 +1412,7 @@ static void qla2x00_handle_queue_full(struct scsi_device *sdev, int qdepth)
                return;
 
        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);
 }
 
@@ -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);
 
        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);
 }
 
index 5f58b451327e8a79040facd208b041c2a43cdb8f..2559144f54757cbbaec41f315bf71d3121f061bd 100644 (file)
@@ -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_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 lun);
+                     uint64_t lun);
 int qla4xxx_reset_target(struct scsi_qla_host *ha,
                         struct ddb_entry *ddb_entry);
 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);
 void qla4xxx_dump_buffer(void *b, uint32_t size);
 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,
                      uint32_t offset, uint32_t length, uint32_t options);
 int qla4xxx_mailbox_command(struct scsi_qla_host *ha, uint8_t inCount,
index e5697ab144d245fafe95cfebd67b06e8c2385a6c..08ab6dac226db61d1b1327eec463afa7190f0ccb 100644 (file)
@@ -83,7 +83,7 @@ static int qla4xxx_get_req_pkt(struct scsi_qla_host *ha,
  * This routine issues a marker IOCB.
  **/
 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;
        unsigned long flags = 0;
index 081b6b78d2c6beab69aa44e0c161f9581a17365b..4f9c0f2be89d951515b3c22a4a134b5113107e99 100644 (file)
@@ -26,7 +26,7 @@ static void qla4xxx_copy_sense(struct scsi_qla_host *ha,
        memset(cmd->sense_buffer, 0, SCSI_SENSE_BUFFERSIZE);
        sense_len = le16_to_cpu(sts_entry->senseDataByteCnt);
        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,
                                  cmd->device->channel, cmd->device->id,
                                  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);
        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,
                cmd->device->channel, cmd->device->id,
                cmd->device->lun, __func__,
@@ -169,7 +169,7 @@ static void qla4xxx_status_entry(struct scsi_qla_host *ha,
 
                                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, "
                                        "xferlen = 0x%x, "
                                        "residual = 0x%x\n", ha->host_no,
@@ -197,7 +197,7 @@ static void qla4xxx_status_entry(struct scsi_qla_host *ha,
                break;
 
        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,
                              cmd->device->id, cmd->device->lun, __func__));
 
@@ -205,7 +205,7 @@ static void qla4xxx_status_entry(struct scsi_qla_host *ha,
                break;
 
        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,
                              cmd->device->id, cmd->device->lun, __func__));
 
@@ -213,7 +213,7 @@ static void qla4xxx_status_entry(struct scsi_qla_host *ha,
                break;
 
        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,
                              cmd->device->id, cmd->device->lun));
 
@@ -232,7 +232,7 @@ static void qla4xxx_status_entry(struct scsi_qla_host *ha,
        case SCS_DATA_OVERRUN:
                if ((sts_entry->iscsiFlags & ISCSI_FLAG_RESIDUAL_OVER) ||
                     (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,
                                      cmd->device->channel, cmd->device->id,
                                      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) <
                            cmd->underflow) {
                                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,
                                                   cmd->device->channel,
                                                   cmd->device->id,
@@ -291,7 +291,7 @@ static void qla4xxx_status_entry(struct scsi_qla_host *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,
                                          cmd->device->channel,
                                          cmd->device->id,
@@ -313,7 +313,7 @@ check_scsi_status:
 
        case SCS_DEVICE_LOGGED_OUT:
        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,
                    cmd->device->channel, cmd->device->id,
                    cmd->device->lun, sts_entry->completionStatus));
@@ -333,7 +333,7 @@ check_scsi_status:
                 * SCSI Mid-Layer handles device queue full
                 */
                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,"
                              " iResp=%02x\n", ha->host_no, cmd->device->id,
                              cmd->device->lun, __func__,
index 0a3312c6dd6d5fb5ba03001e7bd8b4a5e34470f0..fdfae79924ac1df54e6c3b7e66e7afc53fff0736 100644 (file)
@@ -1205,7 +1205,7 @@ int qla4xxx_abort_task(struct scsi_qla_host *ha, struct srb *srb)
        if (mbox_sts[0] != MBOX_STS_COMMAND_COMPLETE) {
                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",
                    ha->host_no, cmd->device->id, cmd->device->lun, mbox_sts[0],
                    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.
  **/
 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_sts[MBOX_REG_COUNT];
        uint32_t scsi_lun[2];
        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));
 
        /*
index 32020637620649d6068876b532267935e3918647..c5d9564d455ce6ddadd759c884fa13212f09d543 100644 (file)
@@ -9223,20 +9223,20 @@ static int qla4xxx_eh_abort(struct scsi_cmnd *cmd)
 {
        struct scsi_qla_host *ha = to_qla_host(cmd->device->host);
        unsigned int id = cmd->device->id;
-       unsigned int lun = cmd->device->lun;
+       uint64_t lun = cmd->device->lun;
        unsigned long flags;
        struct srb *srb = NULL;
        int ret = SUCCESS;
        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]);
 
        spin_lock_irqsave(&ha->hardware_lock, flags);
        srb = (struct srb *) CMD_SP(cmd);
        if (!srb) {
                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);
                return SUCCESS;
        }
@@ -9244,11 +9244,11 @@ static int qla4xxx_eh_abort(struct scsi_cmnd *cmd)
        spin_unlock_irqrestore(&ha->hardware_lock, flags);
 
        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));
                ret = FAILED;
        } 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));
                wait = 1;
        }
@@ -9258,14 +9258,14 @@ static int qla4xxx_eh_abort(struct scsi_cmnd *cmd)
        /* Wait for command to complete */
        if (wait) {
                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));
                        ret = FAILED;
                }
        }
 
        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");
 
        return ret;
@@ -9293,7 +9293,7 @@ static int qla4xxx_eh_device_reset(struct scsi_cmnd *cmd)
        ret = FAILED;
 
        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);
 
        DEBUG2(printk(KERN_INFO
@@ -9323,7 +9323,7 @@ static int qla4xxx_eh_device_reset(struct scsi_cmnd *cmd)
                goto eh_dev_reset_done;
 
        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,
                   cmd->device->lun);
 
@@ -9440,7 +9440,7 @@ static int qla4xxx_eh_host_reset(struct scsi_cmnd *cmd)
        }
 
        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);
 
        if (qla4xxx_wait_for_hba_online(ha) != QLA_SUCCESS) {
index 53b8b94e6c84eba7801ac8cabcff169fa374dd57..bff351b526cf7118733c26acff5162acb07eaccd 100644 (file)
@@ -1291,7 +1291,7 @@ EXPORT_SYMBOL(__starget_for_each_device);
  * really want to use scsi_device_lookup_by_target instead.
  **/
 struct scsi_device *__scsi_device_lookup_by_target(struct scsi_target *starget,
-                                                  uint lun)
+                                                  u64 lun)
 {
        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.
  **/
 struct scsi_device *scsi_device_lookup_by_target(struct scsi_target *starget,
-                                                uint lun)
+                                                u64 lun)
 {
        struct scsi_device *sdev;
        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.
  **/
 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;
 
@@ -1375,7 +1375,7 @@ EXPORT_SYMBOL(__scsi_device_lookup);
  * needs to be released with scsi_device_put once you're done with it.
  **/
 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;
        unsigned long flags;
index c4ad52c2ec6961261bcb26475cabf47f461e53d3..6ed43fd19a22a5f01e21996d02c2939ab737161e 100644 (file)
@@ -228,9 +228,9 @@ struct sdebug_dev_info {
        unsigned char sense_buff[SDEBUG_SENSE_LEN];     /* weak nexus */
        unsigned int channel;
        unsigned int target;
-       unsigned int lun;
+       u64 lun;
        struct sdebug_host_info *sdbg_host;
-       unsigned int wlun;
+       u64 wlun;
        char reset;
        char stopped;
        char used;
@@ -2278,7 +2278,8 @@ static int resp_report_luns(struct scsi_cmnd * scp,
                            struct sdebug_dev_info * devip)
 {
        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;
        int select_report = (int)cmd[2];
        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)
 {
        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);
        queue_flag_set_unlocked(QUEUE_FLAG_BIDI, sdp->request_queue);
        return 0;
@@ -2473,7 +2474,7 @@ static int scsi_debug_slave_configure(struct scsi_device *sdp)
        struct sdebug_dev_info *devip;
 
        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);
        if (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;
 
        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);
        if (devip) {
                /* make this slot available for re-use */
@@ -2708,7 +2709,7 @@ static int schedule_resp(struct scsi_cmnd * cmnd,
                if (scsi_result) {
                        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,
                               sdp->channel, sdp->id, sdp->lun, scsi_result);
                }
index 48e5b657e79f1f0c9f3c64fb8cf42d0c7242d473..a45d1c2eb414a6b969268d8525f60592dcfc5941 100644 (file)
@@ -115,7 +115,7 @@ extern void scsi_exit_procfs(void);
 extern char scsi_scan_type[];
 extern int scsi_complete_async_scans(void);
 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_rescan_device(struct device *);
 
index 86f0c5d5c116f74d2117806e45ec4599d750837a..6fcefa2da503f17faf6a2a1679f2154fa05c70bd 100644 (file)
@@ -185,7 +185,7 @@ static int proc_print_scsidevice(struct device *dev, void *data)
 
        sdev = to_scsi_device(dev);
        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);
        for (i = 0; i < 8; i++) {
                if (sdev->vendor[i] >= 0x20)
index a02f7b0976ed832550c7b22431e4d99f0d9cb849..1a71547832f34cc5abb62fa042cef3e45407af31 100644 (file)
@@ -220,7 +220,7 @@ static void scsi_unlock_floptical(struct scsi_device *sdev,
  *     scsi_Device pointer, or NULL on failure.
  **/
 static struct scsi_device *scsi_alloc_sdev(struct scsi_target *starget,
-                                          unsigned int lun, void *hostdata)
+                                          u64 lun, void *hostdata)
 {
        struct scsi_device *sdev;
        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
  **/
 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,
                                  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,
                                     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);
 
        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
  *     the integer: 0x0b030a04
  **/
-int scsilun_to_int(struct scsi_lun *scsilun)
+u64 scsilun_to_int(struct scsi_lun *scsilun)
 {
        int i;
-       unsigned int lun;
+       u64 lun;
 
        lun = 0;
        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
  *
  **/
-void int_to_scsilun(unsigned int lun, struct scsi_lun *scsilun)
+void int_to_scsilun(u64 lun, struct scsi_lun *scsilun)
 {
        int i;
 
@@ -1342,7 +1343,7 @@ static int scsi_report_lun_scan(struct scsi_target *starget, int bflags,
        char devname[64];
        unsigned char scsi_cmd[MAX_COMMAND_SIZE];
        unsigned int length;
-       unsigned int lun;
+       u64 lun;
        unsigned int num_luns;
        unsigned int retries;
        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++) {
                lun = scsilun_to_int(lunp);
 
-               /*
-                * Check if the unused part of lunp is non-zero, and so
-                * 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"
+               if (lun > sdev->host->max_lun) {
+                       printk(KERN_WARNING "scsi: %s lun%llu has a LUN larger"
                               " than allowed by the host adapter\n",
                               devname, lun);
                } else {
@@ -1517,8 +1501,8 @@ static int scsi_report_lun_scan(struct scsi_target *starget, int bflags,
                                 */
                                sdev_printk(KERN_ERR, sdev,
                                        "Unexpected response"
-                                       " from lun %d while scanning, scan"
-                                       " aborted\n", lun);
+                                       " from lun %llu while scanning, scan"
+                                       " aborted\n", (unsigned long long)lun);
                                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,
-                                     uint id, uint lun, void *hostdata)
+                                     uint id, u64 lun, void *hostdata)
 {
        struct scsi_device *sdev = ERR_PTR(-ENODEV);
        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);
 
 int scsi_add_device(struct Scsi_Host *host, uint channel,
-                   uint target, uint lun)
+                   uint target, u64 lun)
 {
        struct scsi_device *sdev = 
                __scsi_add_device(host, channel, target, lun, NULL);
@@ -1602,7 +1586,7 @@ void scsi_rescan_device(struct device *dev)
 EXPORT_SYMBOL(scsi_rescan_device);
 
 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);
        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.
  **/
 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);
 
@@ -1690,7 +1674,7 @@ void scsi_scan_target(struct device *parent, unsigned int channel,
 EXPORT_SYMBOL(scsi_scan_target);
 
 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;
 
@@ -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,
-                           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,
-               "%s: <%u:%u:%u>\n",
+               "%s: <%u:%u:%llu>\n",
                __func__, channel, id, lun));
 
        if (((channel != SCAN_WILD_CARD) && (channel > shost->max_channel)) ||
index 074e8cc30955fe35d256a115bea2bb2549af721f..5f36788705bab2c83c8e1b01130dc34fe6130485 100644 (file)
@@ -80,7 +80,7 @@ const char *scsi_host_state_name(enum scsi_host_state state)
        return name;
 }
 
-static int check_set(unsigned int *val, char *src)
+static int check_set(unsigned long long *val, char *src)
 {
        char *last;
 
@@ -90,7 +90,7 @@ static int check_set(unsigned int *val, char *src)
                /*
                 * Doesn't check for int overflow
                 */
-               *val = simple_strtoul(src, &last, 0);
+               *val = simple_strtoull(src, &last, 0);
                if (*last != '\0')
                        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)
 {
-       char s1[15], s2[15], s3[15], junk;
-       unsigned int channel, id, lun;
+       char s1[15], s2[15], s3[17], junk;
+       unsigned long long channel, id, lun;
        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)
                return -EINVAL;
        if (check_set(&channel, s1))
@@ -1230,13 +1230,13 @@ void scsi_sysfs_device_initialize(struct scsi_device *sdev)
        device_initialize(&sdev->sdev_gendev);
        sdev->sdev_gendev.bus = &scsi_bus_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);
 
        device_initialize(&sdev->sdev_dev);
        sdev->sdev_dev.parent = get_device(&sdev->sdev_gendev);
        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->scsi_level = starget->scsi_level;
        transport_setup_device(&sdev->sdev_gendev);
index 521f5838594bac13552cdd9a920a56ff37c23023..8365705c231df07debca47e1afb629c0c5f8aec2 100644 (file)
@@ -2089,7 +2089,7 @@ fc_timed_out(struct scsi_cmnd *scmd)
  * on the rport.
  */
 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;
        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.
  */
 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 tgtlo, tgthi;
index 0102a2d70dd85912db42f2beb1808cd6297f6bab..126bf260500f8411c9a7585895eee3959f1c6ccd 100644 (file)
@@ -1780,7 +1780,7 @@ EXPORT_SYMBOL_GPL(iscsi_scan_finished);
 struct iscsi_scan_data {
        unsigned int channel;
        unsigned int id;
-       unsigned int lun;
+       u64 lun;
 };
 
 static int iscsi_user_scan_session(struct device *dev, void *data)
@@ -1827,7 +1827,7 @@ user_scan_exit:
 }
 
 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;
 
index c341f855fadcd433a6730db0d941317615a7fe9e..9a058194b9bdb2ae37079663af21a9f4dad33502 100644 (file)
@@ -1705,7 +1705,7 @@ EXPORT_SYMBOL(scsi_is_sas_rphy);
  */
 
 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_rphy *rphy;
index 2e01a9dd26fac459c6c62160e8f21af4ec6384d8..1de183d725988e68213017521ecebc75c21f55a4 100644 (file)
@@ -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");
        else {
                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->id, scsidp->lun, (int) scsidp->type,
                              1,
@@ -2671,7 +2671,7 @@ static int sg_proc_seq_show_debug(struct seq_file *s, void *v)
                else if (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->channel, scsidp->id,
                                   scsidp->lun,
index 88220794cc986c07e8f3289f3222ef1bf1900922..1a2367a1b1f290dbff1e5065d947516502ce79ba 100644 (file)
@@ -355,17 +355,18 @@ static void __init init_tags( void )
 
 static int is_lun_busy(struct scsi_cmnd *cmd, int should_be_tagged)
 {
+    u8 lun = cmd->device->lun;
     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 );
     if (!should_be_tagged ||
        !setup_use_tagged_queuing || !cmd->device->tagged_supported)
        return( 0 );
-    if (TagAlloc[cmd->device->id][cmd->device->lun].nr_allocated >=
-       TagAlloc[cmd->device->id][cmd->device->lun].queue_size ) {
+    if (TagAlloc[cmd->device->id][lun].nr_allocated >=
+       TagAlloc[cmd->device->id][lun].queue_size ) {
        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( 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)
 {
+    u8 lun = cmd->device->lun;
     SETUP_HOSTDATA(cmd->device->host);
 
     /* 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 ||
        !setup_use_tagged_queuing || !cmd->device->tagged_supported) {
        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 "
-                   "command\n", H_NO(cmd), cmd->device->id, cmd->device->lun );
+                   "command\n", H_NO(cmd), cmd->device->id, lun );
     }
     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 );
        set_bit( cmd->tag, &ta->allocated );
        ta->nr_allocated++;
        dprintk(NDEBUG_TAGS,  "scsi%d: using tag %d for target %d lun %d "
                    "(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 );
     }
 }
@@ -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)
 {
+    u8 lun = cmd->device->lun;
     SETUP_HOSTDATA(cmd->device->host);
 
     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",
-                   H_NO(cmd), cmd->device->id, cmd->device->lun );
+                   H_NO(cmd), cmd->device->id, lun );
     }
     else if (cmd->tag >= MAX_TAGS) {
        printk(KERN_NOTICE "scsi%d: trying to free bad tag %d!\n",
                H_NO(cmd), cmd->tag );
     }
     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 );
        ta->nr_allocated--;
        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;
        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);
        printk(KERN_CONT "        command = ");
        command = cmd->cmnd;
@@ -705,7 +708,7 @@ static void show_Scsi_Cmnd(Scsi_Cmnd *cmd, struct seq_file *m)
 {
        int i, s;
        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);
        seq_printf(m, "        command = ");
        command = cmd->cmnd;
@@ -1007,7 +1010,7 @@ static void NCR5380_main (struct work_struct *bl)
                 prev = NULL; tmp; prev = tmp, tmp = NEXT(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. */
                /* ++guenther: possible race with Falcon locking */
                if (
@@ -1038,7 +1041,7 @@ static void NCR5380_main (struct work_struct *bl)
                     *   issue queue so we can keep trying.     
                     */
                    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);
                    /* 
                     * 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
                         * polled-IO. */ 
                        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->borken = 1;
                        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 */
                    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);
 
                    /* Enable reselect interrupts */
@@ -2090,7 +2093,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
                     */
 
                    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",
                                HOSTNO, cmd->device->id, cmd->device->lun);
                            sink = 1;
@@ -2103,7 +2106,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
                     * and don't free it! */
                    cmd->next_link->tag = cmd->tag;
                    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",
                               HOSTNO, cmd->device->id, cmd->device->lun);
 #ifdef NCR5380_STATS
@@ -2118,7 +2121,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
                    /* Accept message by clearing ACK */
                    NCR5380_write(INITIATOR_COMMAND_REG, ICR_BASE);
                    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);
 #ifdef SUPPORT_TAGS
                    cmd_free_tag( cmd );
@@ -2132,7 +2135,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
                        /* ++Andreas: the mid level code knows about
                           QUEUE_FULL now. */
                        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",
                                   HOSTNO, cmd->device->id, cmd->device->lun,
                                   ta->nr_allocated);
@@ -2228,7 +2231,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
                        cmd->device->tagged_supported = 0;
                        hostdata->busy[cmd->device->id] |= (1 << cmd->device->lun);
                        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 "
                                   "disabled\n",
                                   HOSTNO, cmd->device->id, cmd->device->lun);
@@ -2245,7 +2248,7 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
                    hostdata->connected = NULL;
                    hostdata->disconnected_queue = cmd;
                    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 "
                              "disconnected_queue\n", HOSTNO, 
                              cmd->device->id, cmd->device->lun);
@@ -2349,12 +2352,12 @@ static void NCR5380_information_transfer (struct Scsi_Host *instance)
                        printk("\n");
                    } else if (tmp != EXTENDED_MESSAGE)
                        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);
                    else
                        printk(KERN_DEBUG "scsi%d: rejecting unknown "
                               "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],
                               cmd->device->id, cmd->device->lun);
    
@@ -2576,7 +2579,7 @@ static void NCR5380_reselect (struct Scsi_Host *instance)
 #endif
     
     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);
 }
 
index 6d3ee1ab636218e9d1997da960fe9b4b87543324..e59e6f96b7253ddc58e51da5401bb9f9731cc309 100644 (file)
@@ -851,7 +851,7 @@ static void sym53c8xx_slave_destroy(struct scsi_device *sdev)
                 * so let's try to stop all on-going I/O.
                 */
                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);
        }
 
index 5a80cbac3f925ba493c531789d7600c87470089f..a141b1758033d16f5bb9c1f54a3cf1587b63cea8 100644 (file)
@@ -581,7 +581,7 @@ struct sym_pmc {
 #define sym_lp(tp, lun) (!lun) ? (tp)->lun0p : NULL
 #else
 #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
 
 /*
index b006cf789ba1186ac3bac5a69c9ca71a17da8837..764575726c856702e7fd3fd59e1d988b7b1e7233 100644 (file)
@@ -621,7 +621,7 @@ dc390_StartSCSI( struct dc390_acb* pACB, struct dc390_dcb* pDCB, struct dc390_sr
     {
        dc390_freetag (pDCB, pSRB);
        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;
        //DC390_write8 (ScsiCmd, CLEAR_FIFO_CMD);
        pACB->SelLost++;
@@ -1726,7 +1726,7 @@ dc390_SRBdone( struct dc390_acb* pACB, struct dc390_dcb* pDCB, struct dc390_srb*
            } else {
                SET_RES_DRV(pcmd->result, DRIVER_SENSE);
                //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;
                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)
        {
            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;
            SET_RES_DID(pcmd->result, DID_SOFT_ERROR);
        }
index 5a03bb3bcfef1ce815cf11ad7224e5862685fd8d..4e76fe863fc4561933e09a646183038bde22d61b 100644 (file)
@@ -1285,14 +1285,14 @@ static int u14_34f_queuecommand_lck(struct scsi_cmnd *SCpnt, void (*done)(struct
    cpp->cpp_index = i;
    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,
-                        SCpnt->device->lun);
+                        (u8)SCpnt->device->lun);
 
    cpp->opcode = OP_SCSI;
    cpp->channel = SCpnt->device->channel;
    cpp->target = SCpnt->device->id;
-   cpp->lun = SCpnt->device->lun;
+   cpp->lun = (u8)SCpnt->device->lun;
    cpp->SCpnt = SCpnt;
    cpp->cdb_len = 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)))
       for (n = 0; n < n_ready; n++) {
          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",
                 (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),
                cursec, YESNO(s), YESNO(r), YESNO(rev), YESNO(input_only),
                 YESNO(overlap), cpp->xdir);
index 41883a87931d1d68d4336478b4cc5c5c6ab8f967..c0506de4f3b616511a44fc522aeea2fe0c703295 100644 (file)
@@ -502,7 +502,8 @@ wd33c93_execute(struct Scsi_Host *instance)
        cmd = (struct scsi_cmnd *) hostdata->input_Q;
        prev = NULL;
        while (cmd) {
-               if (!(hostdata->busy[cmd->device->id] & (1 << cmd->device->lun)))
+               if (!(hostdata->busy[cmd->device->id] &
+                     (1 << (cmd->device->lun & 0xff))))
                        break;
                prev = cmd;
                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_TARGET_LUN, cmd->device->lun);
+       write_wd33c93(regs, WD_TARGET_LUN, (u8)cmd->device->lun);
        write_wd33c93(regs, WD_SYNCHRONOUS_TRANSFER,
                      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) ||
            (hostdata->sync_stat[cmd->device->id] == SS_UNSET)) {
@@ -862,7 +863,7 @@ wd33c93_intr(struct Scsi_Host *instance)
                }
 
                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;
                cmd->scsi_done(cmd);
 
@@ -895,7 +896,7 @@ wd33c93_intr(struct Scsi_Host *instance)
 
                /* 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)
                        hostdata->outgoing_msg[0] |= 0x40;
 
@@ -1179,7 +1180,7 @@ wd33c93_intr(struct Scsi_Host *instance)
                        lun = read_wd33c93(regs, WD_TARGET_LUN);
                        DB(DB_INTR, printk(":%d.%d", cmd->SCp.Status, lun))
                            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;
                        if (cmd->SCp.Status == ILLEGAL_STATUS_BYTE)
                                cmd->SCp.Status = lun;
@@ -1268,7 +1269,7 @@ wd33c93_intr(struct Scsi_Host *instance)
                }
                DB(DB_INTR, printk("UNEXP_DISC"))
                    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;
                if (cmd->cmnd[0] == REQUEST_SENSE && cmd->SCp.Status != GOOD)
                        cmd->result =
@@ -1300,7 +1301,7 @@ wd33c93_intr(struct Scsi_Host *instance)
                switch (hostdata->state) {
                case S_PRE_CMP_DISC:
                        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;
                        DB(DB_INTR, printk(":%d", cmd->SCp.Status))
                            if (cmd->cmnd[0] == REQUEST_SENSE
@@ -1353,7 +1354,7 @@ wd33c93_intr(struct Scsi_Host *instance)
                        if (hostdata->selecting) {
                                cmd = (struct scsi_cmnd *) hostdata->selecting;
                                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 =
                                    (uchar *) hostdata->input_Q;
                                hostdata->input_Q = cmd;
@@ -1365,7 +1366,7 @@ wd33c93_intr(struct Scsi_Host *instance)
                        if (cmd) {
                                if (phs == 0x00) {
                                        hostdata->busy[cmd->device->id] &=
-                                           ~(1 << cmd->device->lun);
+                                               ~(1 << (cmd->device->lun & 0xff));
                                        cmd->host_scribble =
                                            (uchar *) hostdata->input_Q;
                                        hostdata->input_Q = cmd;
@@ -1448,7 +1449,7 @@ wd33c93_intr(struct Scsi_Host *instance)
                cmd = (struct scsi_cmnd *) hostdata->disconnected_Q;
                patch = NULL;
                while (cmd) {
-                       if (id == cmd->device->id && lun == cmd->device->lun)
+                       if (id == cmd->device->id && lun == (u8)cmd->device->lun)
                                break;
                        patch = cmd;
                        cmd = (struct scsi_cmnd *) cmd->host_scribble;
@@ -1459,7 +1460,7 @@ wd33c93_intr(struct Scsi_Host *instance)
                if (!cmd) {
                        printk
                            ("---TROUBLE: target %d.%d not in disconnect queue---",
-                            id, lun);
+                            id, (u8)lun);
                        spin_unlock_irqrestore(&hostdata->lock, flags);
                        return;
                }
@@ -1705,7 +1706,7 @@ wd33c93_abort(struct scsi_cmnd * cmd)
                sr = read_wd33c93(regs, WD_SCSI_STATUS);
                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->state = S_UNCONNECTED;
                cmd->result = DID_ABORT << 16;
@@ -2169,7 +2170,7 @@ wd33c93_show_info(struct seq_file *m, struct Scsi_Host *instance)
                seq_printf(m, "\nconnected:     ");
                if (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]);
                }
        }
@@ -2177,7 +2178,7 @@ wd33c93_show_info(struct seq_file *m, struct Scsi_Host *instance)
                seq_printf(m, "\ninput_Q:       ");
                cmd = (struct scsi_cmnd *) hd->input_Q;
                while (cmd) {
-                       seq_printf(m, " %d:%d(%02x)",
+                       seq_printf(m, " %d:%llu(%02x)",
                                cmd->device->id, cmd->device->lun, cmd->cmnd[0]);
                        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:");
                cmd = (struct scsi_cmnd *) hd->disconnected_Q;
                while (cmd) {
-                       seq_printf(m, " %d:%d(%02x)",
+                       seq_printf(m, " %d:%llu(%02x)",
                                cmd->device->id, cmd->device->lun, cmd->cmnd[0]);
                        cmd = (struct scsi_cmnd *) cmd->host_scribble;
                }
index c0a0e6010372ad7f77390b072bbb0b33de674e86..77020905a73a64b45ce7a3110acbc3447a255239 100644 (file)
@@ -465,14 +465,14 @@ static int rtsx_control_thread(void *__dev)
                else if (chip->srb->device->id) {
                        dev_err(&dev->pci->dev, "Bad target number (%d:%d)\n",
                                chip->srb->device->id,
-                               chip->srb->device->lun);
+                               (u8)chip->srb->device->lun);
                        chip->srb->result = DID_BAD_TARGET << 16;
                }
 
                else if (chip->srb->device->lun > chip->max_lun) {
                        dev_err(&dev->pci->dev, "Bad LUN (%d:%d)\n",
                                chip->srb->device->id,
-                               chip->srb->device->lun);
+                               (u8)chip->srb->device->lun);
                        chip->srb->result = DID_BAD_TARGET << 16;
                }
 
index 8c64b8776a9634e34027098ef3ca8976e9e5691e..340de9d92b15bf28a5c13dff1760d23576957e1e 100644 (file)
@@ -252,7 +252,7 @@ static int tcm_loop_queuecommand(struct Scsi_Host *sh, struct scsi_cmnd *sc)
 {
        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,
                sc->device->id, sc->device->channel, sc->device->lun,
                sc->cmnd[0], scsi_bufflen(sc));
index 94d00df28f395e81523c43b8ba6ae4e7028b2cc7..943b1dbe859afc1c34ef6c9a7c9cbb2caa091527 100644 (file)
@@ -312,7 +312,7 @@ static int pscsi_add_device_to_list(struct se_device *dev,
        if (!sd->queue_depth) {
                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,
                                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;
 
        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);
                spin_unlock_irq(sh->host_lock);
                return -EIO;
@@ -401,7 +401,7 @@ static int pscsi_create_type_disk(struct se_device *dev, struct scsi_device *sd)
                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);
        return 0;
 }
@@ -417,7 +417,7 @@ static int pscsi_create_type_rom(struct se_device *dev, struct scsi_device *sd)
        int ret;
 
        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);
                spin_unlock_irq(sh->host_lock);
                return -EIO;
@@ -429,7 +429,7 @@ static int pscsi_create_type_rom(struct se_device *dev, struct scsi_device *sd)
                scsi_device_put(sd);
                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,
                sd->channel, sd->id, sd->lun);
 
@@ -452,7 +452,7 @@ static int pscsi_create_type_other(struct se_device *dev,
        if (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,
                sd->channel, sd->id, sd->lun);
        return 0;
index 073a2c32ccc4eab336dd064e3bfb51406519698f..38a4504ce450d535a2f71ab306ef73fe15a1a7cf 100644 (file)
@@ -1498,7 +1498,7 @@ static int dpcm_transport(struct scsi_cmnd *srb, struct us_data *us)
 {
        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) {
        case 0:
@@ -1524,7 +1524,7 @@ static int dpcm_transport(struct scsi_cmnd *srb, struct us_data *us)
                break;
 
        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;
                break;
        }
index f1c96261a50196694689688cc041e38ef1c41a87..cedb29252a92228119a6afa849c4853e87eb3b4e 100644 (file)
@@ -347,14 +347,16 @@ static int usb_stor_control_thread(void * __us)
                 */
                else if (us->srb->device->id &&
                                !(us->fflags & US_FL_SCM_MULT_TARG)) {
-                       usb_stor_dbg(us, "Bad target number (%d:%d)\n",
-                                    us->srb->device->id, us->srb->device->lun);
+                       usb_stor_dbg(us, "Bad target number (%d:%llu)\n",
+                                    us->srb->device->id,
+                                    us->srb->device->lun);
                        us->srb->result = DID_BAD_TARGET << 16;
                }
 
                else if (us->srb->device->lun > us->max_lun) {
-                       usb_stor_dbg(us, "Bad LUN (%d:%d)\n",
-                                    us->srb->device->id, us->srb->device->lun);
+                       usb_stor_dbg(us, "Bad LUN (%d:%llu)\n",
+                                    us->srb->device->id,
+                                    us->srb->device->lun);
                        us->srb->result = DID_BAD_TARGET << 16;
                }
 
index 0a4edfe8af510ad7739ea931c559dbef11727b68..91e2e4215ba0cb91377601909c69d1be03e6336d 100644 (file)
@@ -385,7 +385,7 @@ struct scsi_lun {
 #define SCSI_W_LUN_ACCESS_CONTROL (SCSI_W_LUN_BASE + 2)
 #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;
 }
index 27ab31017f0901af5f3446003a1ec27dfa44a793..9aa38f7b303b7b733ebf532cbe278f5570636c2b 100644 (file)
@@ -98,8 +98,8 @@ struct scsi_device {
 
        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 
                                         * vendor-specific cmd's */
        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)
 
 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,
-                          uint target, uint lun);
+                          uint target, u64 lun);
 extern int scsi_register_device_handler(struct scsi_device_handler *scsi_dh);
 extern void scsi_remove_device(struct scsi_device *);
 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 void scsi_device_put(struct scsi_device *);
 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 *,
-                                               uint, uint, uint);
+                                               uint, uint, u64);
 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 *,
-                                                         uint);
+                                                         u64);
 extern void starget_for_each_device(struct scsi_target *, void *,
                     void (*fn)(struct scsi_device *, 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_resume(struct scsi_target *);
 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_block(struct device *);
 extern void scsi_target_unblock(struct device *, enum scsi_device_state);
 extern void scsi_remove_target(struct device *);
-extern void int_to_scsilun(unsigned int, struct scsi_lun *);
-extern int scsilun_to_int(struct scsi_lun *);
+extern void int_to_scsilun(u64, struct scsi_lun *);
+extern u64 scsilun_to_int(struct scsi_lun *);
 extern const char *scsi_device_state_name(enum scsi_device_state);
 extern int scsi_is_sdev_device(const struct device *);
 extern int scsi_is_target_device(const struct device *);
index af244f4bba53cdfd4447535a14255c8f81e117ad..81292392adbcdf9142de2a97a83b14b44f335cfe 100644 (file)
@@ -35,7 +35,7 @@ struct scsi_transport_template {
        /*
         * 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
         * space of this size will be left at the end of the