[Midnightbsd-cvs] src [8394] trunk/sys/dev/ata/ata-all.c: only for specific ata pio commands transfer several sectors per DRQ block.
laffer1 at midnightbsd.org
laffer1 at midnightbsd.org
Sun Sep 18 15:23:58 EDT 2016
Revision: 8394
http://svnweb.midnightbsd.org/src/?rev=8394
Author: laffer1
Date: 2016-09-18 15:23:58 -0400 (Sun, 18 Sep 2016)
Log Message:
-----------
only for specific ata pio commands transfer several sectors per DRQ block. All others transfer one sector or 512 bytes at one time.
Modified Paths:
--------------
trunk/sys/dev/ata/ata-all.c
Modified: trunk/sys/dev/ata/ata-all.c
===================================================================
--- trunk/sys/dev/ata/ata-all.c 2016-09-18 19:23:12 UTC (rev 8393)
+++ trunk/sys/dev/ata/ata-all.c 2016-09-18 19:23:58 UTC (rev 8394)
@@ -1501,6 +1501,14 @@
request->flags |= ATA_R_READ;
if ((ccb->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_OUT)
request->flags |= ATA_R_WRITE;
+ if (ccb->ataio.cmd.command == ATA_READ_MUL ||
+ ccb->ataio.cmd.command == ATA_READ_MUL48 ||
+ ccb->ataio.cmd.command == ATA_WRITE_MUL ||
+ ccb->ataio.cmd.command == ATA_WRITE_MUL48) {
+ request->transfersize = min(request->bytecount,
+ ch->curr[ccb->ccb_h.target_id].bytecount);
+ } else
+ request->transfersize = min(request->bytecount, 512);
} else {
request->data = ccb->csio.data_ptr;
request->bytecount = ccb->csio.dxfer_len;
@@ -1517,9 +1525,9 @@
request->flags |= ATA_R_READ;
if ((ccb->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_OUT)
request->flags |= ATA_R_WRITE;
+ request->transfersize = min(request->bytecount,
+ ch->curr[ccb->ccb_h.target_id].bytecount);
}
- request->transfersize = min(request->bytecount,
- ch->curr[ccb->ccb_h.target_id].bytecount);
request->retries = 0;
request->timeout = (ccb->ccb_h.timeout + 999) / 1000;
callout_init_mtx(&request->callout, &ch->state_mtx, CALLOUT_RETURNUNLOCKED);
More information about the Midnightbsd-cvs
mailing list