summaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorTejun Heo <htejun@gmail.com>2007-05-15 03:28:15 +0900
committerJeff Garzik <jeff@garzik.org>2007-05-16 01:18:30 -0400
commit6ddcd3b0201a7ad72294347636d2b4028ddbd95d (patch)
treeef2d28ea1775693f632705ebe71ad3e451cd69f1 /include/linux
parentfe30911b34098db58c21d0f936f6c3f17f32deb8 (diff)
downloadop-kernel-dev-6ddcd3b0201a7ad72294347636d2b4028ddbd95d.zip
op-kernel-dev-6ddcd3b0201a7ad72294347636d2b4028ddbd95d.tar.gz
libata: during revalidation, check n_sectors after device is configured
Device might be resized during ata_dev_configure() due to HPA or (later) ACPI _GTF. Currently it's worked around by caching n_sectors before turning off HPA. The cached original size is overwritten if the device is reconfigured without being hardreset - which always happens after configuring trasnfer mode. If the device gets hardreset for some reason after that, revalidation fails with -ENODEV. This patch makes size checking more robust by moving n_sectors check from ata_dev_reread_id() to ata_dev_revalidate() after the device is fully configured. No matter what happens during configuration, a device must have the same n_sectors after fully configured to be treated as the same device. Signed-off-by: Tejun Heo <htejun@gmail.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/libata.h1
1 files changed, 0 insertions, 1 deletions
diff --git a/include/linux/libata.h b/include/linux/libata.h
index 27d9362..b38a0f9 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -431,7 +431,6 @@ struct ata_device {
struct scsi_device *sdev; /* attached SCSI device */
/* n_sector is used as CLEAR_OFFSET, read comment above CLEAR_OFFSET */
u64 n_sectors; /* size of device, if ATA */
- u64 n_sectors_boot; /* size of ATA device at startup */
unsigned int class; /* ATA_DEV_xxx */
u16 id[ATA_ID_WORDS]; /* IDENTIFY xxx DEVICE data */
u8 pio_mode;
OpenPOWER on IntegriCloud