summaryrefslogtreecommitdiffstats
path: root/drivers/ata/pata_pdc2027x.c
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2006-11-11 12:10:45 +0100
committerJeff Garzik <jeff@garzik.org>2006-12-02 04:45:54 +0100
commit6fc49adb9417b9c793e8f88d485387bb89ceb733 (patch)
treed94f536f24e504b1a654c392171fb6f08a195ca2 /drivers/ata/pata_pdc2027x.c
parent[PATCH] ahci: honor PORTS_IMPL on ICH8s (diff)
downloadlinux-6fc49adb9417b9c793e8f88d485387bb89ceb733.tar.xz
linux-6fc49adb9417b9c793e8f88d485387bb89ceb733.zip
[PATCH] libata: use FLUSH_EXT only when driver is larger than LBA28 limit
Many drives support LBA48 even when its capacity is smaller than 1<<28, as LBA48 is required for many functionalities. FLUSH_EXT is mandatory for drives w/ LBA48 support. Interestingly, at least one of such drives (ST960812A) has problems dealing with FLUSH_EXT. It eventually completes the command but takes around 7 seconds to finish in many cases thus drastically slowing down IO transactions. This seems to be a firmware bug which sneaked into production probably because no other ATA driver including linux IDE issues FLUSH_EXT to drives which report support for LBA48 & FLUSH_EXT but is smaller than 1<<28 blocks. This patch adds ATA_DFLAG_FLUSH_EXT which is set iff the drive supports LBA48 & FLUSH_EXT and is larger than LBA28 limit. Both cache flush paths are updated to issue FLUSH_EXT only when the flag is set. Note that the changed behavior is more inline with the rest of libata. libata prefers shorter commands whenever possible. Signed-off-by: Tejun Heo <htejun@gmail.com> Cc: Danny Kukawka <dkukawka@novell.com> Cc: Stefan Seyfried <seife@novell.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/ata/pata_pdc2027x.c')
0 files changed, 0 insertions, 0 deletions