diff options
-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 d2141a04fff..c0f3c78a2be 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) | |||
5906 | else | 5906 | else |
5907 | cmd = ATA_CMD_FLUSH; | 5907 | cmd = ATA_CMD_FLUSH; |
5908 | 5908 | ||
5909 | /* This is wrong. On a failed flush we get back the LBA of the lost | ||
5910 | sector and we should (assuming it wasn't aborted as unknown) issue | ||
5911 | a further flush command to continue the writeback until it | ||
5912 | does not error */ | ||
5909 | err_mask = ata_do_simple_cmd(dev, cmd); | 5913 | err_mask = ata_do_simple_cmd(dev, cmd); |
5910 | if (err_mask) { | 5914 | if (err_mask) { |
5911 | ata_dev_printk(dev, KERN_ERR, "failed to flush cache\n"); | 5915 | ata_dev_printk(dev, KERN_ERR, "failed to flush cache\n"); |