diff options
author | Alan Cox <alan@lxorguk.ukuu.org.uk> | 2007-08-08 15:30:31 +0200 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-10-12 20:55:32 +0200 |
commit | 4f34337b1f6f7c1e0f2e3c938eb9eadd340593fe (patch) | |
tree | 71ab64c2bf8addb4b6de341957b03ac0ee84915f | |
parent | libata-core: Document some limits/assumptions about ID_ATA (diff) | |
download | linux-4f34337b1f6f7c1e0f2e3c938eb9eadd340593fe.tar.xz linux-4f34337b1f6f7c1e0f2e3c938eb9eadd340593fe.zip |
libata: Note that our cache flush code needs fixing up
Remembered this while doing auditing and code review versus the specs
Signed-off-by: Alan Cox <alan@redhat.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
-rw-r--r-- | drivers/ata/libata-core.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c index d2141a04fff1..c0f3c78a2be0 100644 --- a/drivers/ata/libata-core.c +++ b/drivers/ata/libata-core.c @@ -5906,6 +5906,10 @@ int ata_flush_cache(struct ata_device *dev) else cmd = ATA_CMD_FLUSH; + /* This is wrong. On a failed flush we get back the LBA of the lost + sector and we should (assuming it wasn't aborted as unknown) issue + a further flush command to continue the writeback until it + does not error */ err_mask = ata_do_simple_cmd(dev, cmd); if (err_mask) { ata_dev_printk(dev, KERN_ERR, "failed to flush cache\n"); |