Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi
[linux-2.6-microblaze.git] / drivers / ata / libata-scsi.c
index 1c9f80f..6a91d04 100644 (file)
@@ -872,6 +872,9 @@ static struct ata_queued_cmd *ata_scsi_qc_new(struct ata_device *dev,
 
                qc->sg = scsi_sglist(cmd);
                qc->n_elem = scsi_sg_count(cmd);
+
+               if (cmd->request->rq_flags & RQF_QUIET)
+                       qc->flags |= ATA_QCFLAG_QUIET;
        } else {
                cmd->result = (DID_OK << 16) | (QUEUE_FULL << 1);
                cmd->scsi_done(cmd);
@@ -1316,7 +1319,7 @@ static int ata_scsi_dev_config(struct scsi_device *sdev,
                int depth;
 
                depth = min(sdev->host->can_queue, ata_id_queue_depth(dev->id));
-               depth = min(ATA_MAX_QUEUE - 1, depth);
+               depth = min(ATA_MAX_QUEUE, depth);
                scsi_change_queue_depth(sdev, depth);
        }
 
@@ -1429,7 +1432,7 @@ int __ata_change_queue_depth(struct ata_port *ap, struct scsi_device *sdev,
        /* limit and apply queue depth */
        queue_depth = min(queue_depth, sdev->host->can_queue);
        queue_depth = min(queue_depth, ata_id_queue_depth(dev->id));
-       queue_depth = min(queue_depth, ATA_MAX_QUEUE - 1);
+       queue_depth = min(queue_depth, ATA_MAX_QUEUE);
 
        if (sdev->queue_depth == queue_depth)
                return -EINVAL;
@@ -1895,7 +1898,7 @@ static unsigned int ata_scsi_rw_xlat(struct ata_queued_cmd *qc)
        qc->nbytes = n_block * scmd->device->sector_size;
 
        rc = ata_build_rw_tf(&qc->tf, qc->dev, block, n_block, tf_flags,
-                            qc->tag, class);
+                            qc->hw_tag, class);
 
        if (likely(rc == 0))
                return 0;
@@ -3233,7 +3236,7 @@ static unsigned int ata_scsi_pass_thru(struct ata_queued_cmd *qc)
 
        /* For NCQ commands copy the tag value */
        if (ata_is_ncq(tf->protocol))
-               tf->nsect = qc->tag << 3;
+               tf->nsect = qc->hw_tag << 3;
 
        /* enforce correct master/slave bit */
        tf->device = dev->devno ?
@@ -3513,7 +3516,7 @@ static unsigned int ata_scsi_write_same_xlat(struct ata_queued_cmd *qc)
                tf->protocol = ATA_PROT_NCQ;
                tf->command = ATA_CMD_FPDMA_SEND;
                tf->hob_nsect = ATA_SUBCMD_FPDMA_SEND_DSM & 0x1f;
-               tf->nsect = qc->tag << 3;
+               tf->nsect = qc->hw_tag << 3;
                tf->hob_feature = (size / 512) >> 8;
                tf->feature = size / 512;
 
@@ -3733,7 +3736,7 @@ static unsigned int ata_scsi_zbc_in_xlat(struct ata_queued_cmd *qc)
                tf->protocol = ATA_PROT_NCQ;
                tf->command = ATA_CMD_FPDMA_RECV;
                tf->hob_nsect = ATA_SUBCMD_FPDMA_RECV_ZAC_MGMT_IN & 0x1f;
-               tf->nsect = qc->tag << 3;
+               tf->nsect = qc->hw_tag << 3;
                tf->feature = sect & 0xff;
                tf->hob_feature = (sect >> 8) & 0xff;
                tf->auxiliary = ATA_SUBCMD_ZAC_MGMT_IN_REPORT_ZONES | (options << 8);
@@ -3812,7 +3815,7 @@ static unsigned int ata_scsi_zbc_out_xlat(struct ata_queued_cmd *qc)
                tf->protocol = ATA_PROT_NCQ_NODATA;
                tf->command = ATA_CMD_NCQ_NON_DATA;
                tf->feature = ATA_SUBCMD_NCQ_NON_DATA_ZAC_MGMT_OUT;
-               tf->nsect = qc->tag << 3;
+               tf->nsect = qc->hw_tag << 3;
                tf->auxiliary = sa | ((u16)all << 8);
        } else {
                tf->protocol = ATA_PROT_NODATA;
@@ -5129,7 +5132,7 @@ int ata_sas_allocate_tag(struct ata_port *ap)
                tag = tag < max_queue ? tag : 0;
 
                /* the last tag is reserved for internal command. */
-               if (tag == ATA_TAG_INTERNAL)
+               if (ata_tag_internal(tag))
                        continue;
 
                if (!test_and_set_bit(tag, &ap->sas_tag_allocated)) {