From fb68a4d6ce3f0c46926aff79f7a5eb2c1780d6a2 Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Wed, 8 Aug 2007 14:30:31 +0100 Subject: [PATCH] --- yaml --- r: 68068 b: refs/heads/master c: 4f34337b1f6f7c1e0f2e3c938eb9eadd340593fe h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/ata/libata-core.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index d2e65dc5e633..d8c31c51d2cb 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 50a99018787aa1aed812e09ad5b27647475656a0 +refs/heads/master: 4f34337b1f6f7c1e0f2e3c938eb9eadd340593fe diff --git a/trunk/drivers/ata/libata-core.c b/trunk/drivers/ata/libata-core.c index d2141a04fff1..c0f3c78a2be0 100644 --- a/trunk/drivers/ata/libata-core.c +++ b/trunk/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");