|
@@ -2538,7 +2538,7 @@ static unsigned int atapi_xlat(struct ata_queued_cmd *qc)
|
|
|
}
|
|
|
|
|
|
qc->tf.command = ATA_CMD_PACKET;
|
|
|
- qc->nbytes = scsi_bufflen(scmd);
|
|
|
+ qc->nbytes = scsi_bufflen(scmd) + scmd->request->extra_len;
|
|
|
|
|
|
/* check whether ATAPI DMA is safe */
|
|
|
if (!using_pio && ata_check_atapi_dma(qc))
|
|
@@ -2549,7 +2549,7 @@ static unsigned int atapi_xlat(struct ata_queued_cmd *qc)
|
|
|
* want to set it properly, and for DMA where it is
|
|
|
* effectively meaningless.
|
|
|
*/
|
|
|
- nbytes = min(scmd->request->raw_data_len, (unsigned int)63 * 1024);
|
|
|
+ nbytes = min(scmd->request->data_len, (unsigned int)63 * 1024);
|
|
|
|
|
|
/* Most ATAPI devices which honor transfer chunk size don't
|
|
|
* behave according to the spec when odd chunk size which
|
|
@@ -2875,7 +2875,7 @@ static unsigned int ata_scsi_pass_thru(struct ata_queued_cmd *qc)
|
|
|
* TODO: find out if we need to do more here to
|
|
|
* cover scatter/gather case.
|
|
|
*/
|
|
|
- qc->nbytes = scsi_bufflen(scmd);
|
|
|
+ qc->nbytes = scsi_bufflen(scmd) + scmd->request->extra_len;
|
|
|
|
|
|
/* request result TF and be quiet about device error */
|
|
|
qc->flags |= ATA_QCFLAG_RESULT_TF | ATA_QCFLAG_QUIET;
|