libata: fix reporting of drained bytes when clearing DRQ
authorRobert Hancock <hancockrwd@gmail.com>
Wed, 9 Dec 2009 02:48:10 +0000 (20:48 -0600)
committerJeff Garzik <jgarzik@redhat.com>
Thu, 17 Dec 2009 06:08:29 +0000 (01:08 -0500)
When we drain data from a device to clear DRQ during error recovery,
the number of bytes reported as drained is too low by a factor of 2
because the count is actually reporting the number of words drained,
not bytes. Fix this.

Signed-off-by: Robert Hancock <hancockrwd@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
drivers/ata/libata-sff.c

index efa8773..741065c 100644 (file)
@@ -2275,7 +2275,7 @@ void ata_sff_drain_fifo(struct ata_queued_cmd *qc)
        ap = qc->ap;
        /* Drain up to 64K of data before we give up this recovery method */
        for (count = 0; (ap->ops->sff_check_status(ap) & ATA_DRQ)
-                                               && count < 32768; count++)
+                                               && count < 65536; count += 2)
                ioread16(ap->ioaddr.data_addr);
 
        /* Can become DEBUG later */