aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/libata-scsi.c
diff options
context:
space:
mode:
authorJeff Garzik <jgarzik@pobox.com>2005-11-05 15:44:48 -0500
committerJeff Garzik <jgarzik@pobox.com>2005-11-05 15:44:48 -0500
commit18ce920a6eba05c0d55cdc95fbbadf7e4c4b457b (patch)
treec4a4a9a0455c00edf16689cf0252c82c52d518db /drivers/scsi/libata-scsi.c
parentc4811b151b6584a668de8ae59eb71c4890b9ad94 (diff)
parent70d9d825e0a5a78ec1dacaaaf5c72ff5b0206fab (diff)
Merge branch 'master'
Diffstat (limited to 'drivers/scsi/libata-scsi.c')
-rw-r--r--drivers/scsi/libata-scsi.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/scsi/libata-scsi.c b/drivers/scsi/libata-scsi.c
index 4f8a013a12f5..0dc5503633a3 100644
--- a/drivers/scsi/libata-scsi.c
+++ b/drivers/scsi/libata-scsi.c
@@ -355,10 +355,10 @@ struct ata_queued_cmd *ata_scsi_qc_new(struct ata_port *ap,
355 qc->scsidone = done; 355 qc->scsidone = done;
356 356
357 if (cmd->use_sg) { 357 if (cmd->use_sg) {
358 qc->sg = (struct scatterlist *) cmd->request_buffer; 358 qc->__sg = (struct scatterlist *) cmd->request_buffer;
359 qc->n_elem = cmd->use_sg; 359 qc->n_elem = cmd->use_sg;
360 } else { 360 } else {
361 qc->sg = &qc->sgent; 361 qc->__sg = &qc->sgent;
362 qc->n_elem = 1; 362 qc->n_elem = 1;
363 } 363 }
364 } else { 364 } else {
@@ -702,6 +702,16 @@ int ata_scsi_slave_config(struct scsi_device *sdev)
702 */ 702 */
703 blk_queue_max_sectors(sdev->request_queue, 2048); 703 blk_queue_max_sectors(sdev->request_queue, 2048);
704 } 704 }
705
706 /*
707 * SATA DMA transfers must be multiples of 4 byte, so
708 * we need to pad ATAPI transfers using an extra sg.
709 * Decrement max hw segments accordingly.
710 */
711 if (dev->class == ATA_DEV_ATAPI) {
712 request_queue_t *q = sdev->request_queue;
713 blk_queue_max_hw_segments(q, q->max_hw_segments - 1);
714 }
705 } 715 }
706 716
707 return 0; /* scsi layer doesn't check return value, sigh */ 717 return 0; /* scsi layer doesn't check return value, sigh */