Merge branch 'x86-xsave-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[cascardo/linux.git] / drivers / scsi / atari_NCR5380.c
index 1814aa2..79e6f04 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--;
 }