diff options
author | Tejun Heo <htejun@gmail.com> | 2007-08-15 14:02:22 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-08-23 05:23:14 -0400 |
commit | 8270bec40075eec9df8778c1d5da36ef0e535176 (patch) | |
tree | dcf47e96b54c29e8674b78c4f4acee32a1faa2cd /drivers/ata | |
parent | b377fd3982ad957c796758a90e2988401a884241 (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.c | 4 |
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 | } |