aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2007-08-15 14:02:22 -0400
committerJeff Garzik <jeff@garzik.org>2007-08-23 05:23:14 -0400
commit8270bec40075eec9df8778c1d5da36ef0e535176 (patch)
treedcf47e96b54c29e8674b78c4f4acee32a1faa2cd /drivers/ata
parentb377fd3982ad957c796758a90e2988401a884241 (diff)
libata: fix n_sectors failure handling during revalidation
If revalidation fails because device has different n_sectors after configuration the original n_sectors should be restored before failing revalidation. Without this fix, n_sectors difference will incorrectly and silently pass revalidation when revalidation is retried. Signed-off-by: Tejun Heo <htejun@gmail.com> Acked-by: Alan Cox <alan@redhat.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/ata')
-rw-r--r--drivers/ata/libata-core.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 99d4fbffb0df..9bfe329fb579 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -3705,6 +3705,10 @@ int ata_dev_revalidate(struct ata_device *dev, unsigned int readid_flags)
3705 "%llu != %llu\n", 3705 "%llu != %llu\n",
3706 (unsigned long long)n_sectors, 3706 (unsigned long long)n_sectors,
3707 (unsigned long long)dev->n_sectors); 3707 (unsigned long long)dev->n_sectors);
3708
3709 /* restore original n_sectors */
3710 dev->n_sectors = n_sectors;
3711
3708 rc = -ENODEV; 3712 rc = -ENODEV;
3709 goto fail; 3713 goto fail;
3710 } 3714 }