linux/drivers/ata
Robert Hancock 968e594afd libata: Don't trust current capacity values in identify words 57-58
Hanno Böck reported a problem where an old Conner CP30254 240MB hard drive
was reported as 1.1TB in capacity by libata:

http://lkml.org/lkml/2009/2/13/134

This was caused by libata trusting the drive's reported current capacity in
sectors in identify words 57 and 58 if the drive does not support LBA and the
current CHS translation values appear valid. Unfortunately it seems older
ATA specs were vague about what this field should contain and a number of drives
used values with wrong byte order or that were totally bogus. There's no
unique information that it conveys and so we can just calculate the number
of sectors from the reported current CHS values.

While we're at it, clean up this function to use named constants for the
identify word values.

Signed-off-by: Robert Hancock <hancockrwd@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
2009-03-05 07:26:10 -05:00
..
ahci.c ahci: Add the Device IDs for MCP89 and remove IDs of MCP7B to/from ahci.c 2009-03-05 07:25:30 -05:00
ata_generic.c libata: beef up iterators 2008-12-28 22:43:20 -05:00
ata_piix.c SATA PIIX: Blacklist system that spins off disks during ACPI power off 2009-01-27 02:15:53 -05:00
Kconfig sata_mv: no longer experimental (v2) 2009-01-26 06:42:10 -05:00
libata-acpi.c Merge branch 'linus' into release 2009-01-09 03:39:43 -05:00
libata-core.c libata: Don't trust current capacity values in identify words 57-58 2009-03-05 07:26:10 -05:00
libata-eh.c libata: make sure port is thawed when skipping resets 2009-03-05 07:25:43 -05:00
libata-pmp.c libata: add @spd_limit to sata_down_spd_limit() 2009-02-02 23:03:22 -05:00
libata-scsi.c libata: fix kernel-doc warnings 2009-02-02 22:41:45 -05:00
libata-sff.c libata-sff: fix 32-bit PIO ATAPI regression 2009-02-16 18:55:56 -05:00
libata.h libata: add @spd_limit to sata_down_spd_limit() 2009-02-02 23:03:22 -05:00
Makefile libata: New driver for OCTEON SOC Compact Flash interface (v7). 2009-01-16 10:23:39 -05:00
pata_acpi.c ACPI: remove private acpica headers from driver files 2008-12-31 01:15:22 -05:00
pata_ali.c drivers/ata/pata_ali.c: s/isa_bridge/ali_isa_bridge/ to fix alpha build 2009-01-16 10:23:43 -05:00
pata_amd.c [libata] pata_amd: program FIFO 2009-02-25 15:30:16 -05:00
pata_artop.c ata: Switch all my stuff to a common address 2008-10-27 23:54:50 -04:00
pata_at32.c avr32: Use <mach/foo.h> instead of <asm/arch/foo.h> 2008-08-05 14:36:57 +02:00
pata_atiixp.c pata_atiixp: update port enabledness test handling 2009-01-16 10:20:27 -05:00
pata_bf54x.c [libata] Update kernel-doc comments to match source code 2008-12-28 22:43:21 -05:00
pata_cmd64x.c ata: Switch all my stuff to a common address 2008-10-27 23:54:50 -04:00
pata_cmd640.c ata: Switch all my stuff to a common address 2008-10-27 23:54:50 -04:00
pata_cs5520.c
pata_cs5530.c ata: Switch all my stuff to a common address 2008-10-27 23:54:50 -04:00
pata_cs5535.c [libata] pata_cs553*.c: cleanup kernel-doc 2008-11-11 02:58:30 -05:00
pata_cs5536.c [libata] pata_cs553*.c: cleanup kernel-doc 2008-11-11 02:58:30 -05:00
pata_cypress.c ata: Switch all my stuff to a common address 2008-10-27 23:54:50 -04:00
pata_efar.c ata: Switch all my stuff to a common address 2008-10-27 23:54:50 -04:00
pata_hpt3x2n.c
pata_hpt3x3.c [libata] pata_hpt3x3: correct _freeze() function declaration 2009-01-08 16:28:21 -05:00
pata_hpt37x.c
pata_hpt366.c pata_hpt366: reimplement mode programming 2009-01-08 16:29:20 -05:00
pata_icside.c
pata_isapnp.c ata: Switch all my stuff to a common address 2008-10-27 23:54:50 -04:00
pata_it821x.c pata_it821x: resume from hibernation fails with RAID volume 2009-02-25 15:22:44 -05:00
pata_it8213.c
pata_ixp4xx_cf.c libata: beef up iterators 2008-12-28 22:43:20 -05:00
pata_jmicron.c ata: Switch all my stuff to a common address 2008-10-27 23:54:50 -04:00
pata_legacy.c [libata] pata_legacy: for VLB 32bit PIO don't try tricks with slop 2009-02-25 15:30:23 -05:00
pata_marvell.c ata: Switch all my stuff to a common address 2008-10-27 23:54:50 -04:00
pata_mpc52xx.c powerpc/mpc5200: Add MDMA/UDMA support to MPC5200 ATA driver 2008-12-21 02:54:29 -07:00
pata_mpiix.c libata: Add 32bit PIO support 2009-01-08 16:34:27 -05:00
pata_netcell.c ata: Switch all my stuff to a common address 2008-10-27 23:54:50 -04:00
pata_ninja32.c pata_ninja32: update ID table 2008-12-09 00:44:19 -05:00
pata_ns87410.c ata: Switch all my stuff to a common address 2008-10-27 23:54:50 -04:00
pata_ns87415.c ata: Switch all my stuff to a common address 2008-10-27 23:54:50 -04:00
pata_octeon_cf.c libata: New driver for OCTEON SOC Compact Flash interface (v7). 2009-01-16 10:23:39 -05:00
pata_of_platform.c powerpc: Fix no interrupt handling in pata_of_platform 2008-10-10 15:55:17 +11:00
pata_oldpiix.c [libata] Update kernel-doc comments to match source code 2008-12-28 22:43:21 -05:00
pata_opti.c ata: Switch all my stuff to a common address 2008-10-27 23:54:50 -04:00
pata_optidma.c ata: Switch all my stuff to a common address 2008-10-27 23:54:50 -04:00
pata_pcmcia.c [libata] pata_pcmcia: another memory card support 2008-11-11 02:59:13 -05:00
pata_pdc202xx_old.c ata: Switch all my stuff to a common address 2008-10-27 23:54:50 -04:00
pata_pdc2027x.c [libata] Update kernel-doc comments to match source code 2008-12-28 22:43:21 -05:00
pata_platform.c pata_platform: __pata_platform_remove() shouldn't be in discard section 2009-01-08 16:10:29 -05:00
pata_qdi.c Fix my email address in qd65xx.[ch]/pata_qdi.c 2009-02-03 16:53:56 -08:00
pata_radisys.c [libata] Update kernel-doc comments to match source code 2008-12-28 22:43:21 -05:00
pata_rb532_cf.c pata-rb532-cf: remove set_irq_type from finish_io 2009-01-27 02:13:03 -05:00
pata_rz1000.c libata: beef up iterators 2008-12-28 22:43:20 -05:00
pata_sc1200.c ata: Switch all my stuff to a common address 2008-10-27 23:54:50 -04:00
pata_scc.c [libata] Update kernel-doc comments to match source code 2008-12-28 22:43:21 -05:00
pata_sch.c [libata] pata_sch: notice attached slave devices 2008-11-11 02:58:59 -05:00
pata_serverworks.c [libata] Update kernel-doc comments to match source code 2008-12-28 22:43:21 -05:00
pata_sil680.c libata: Add 32bit PIO support 2009-01-08 16:34:27 -05:00
pata_sis.c [libata] Update kernel-doc comments to match source code 2008-12-28 22:43:21 -05:00
pata_sl82c105.c ata: Switch all my stuff to a common address 2008-10-27 23:54:50 -04:00
pata_triflex.c ata: Switch all my stuff to a common address 2008-10-27 23:54:50 -04:00
pata_via.c Add support for VT6415 PCIE PATA IDE Host Controller 2009-02-17 16:56:31 -08:00
pata_winbond.c ata: Switch all my stuff to a common address 2008-10-27 23:54:50 -04:00
pdc_adma.c
sata_fsl.c sata_fsl: Return non-zero on error in probe() 2009-01-16 10:23:58 -05:00
sata_inic162x.c libata: make SCR access ops per-link 2008-09-29 00:22:28 -04:00
sata_mv.c sata_mv: fix SoC interrupt breakage 2009-02-25 15:25:35 -05:00
sata_nv.c sata_nv: fix module parameter description 2009-03-05 07:25:37 -05:00
sata_promise.c sata_promise: add ATA engine reset to reset ops 2008-11-04 01:08:03 -05:00
sata_promise.h
sata_qstor.c libata: make SCR access ops per-link 2008-09-29 00:22:28 -04:00
sata_sil24.c sata_sil24: remove unused sil24_port_multiplier 2009-01-08 16:09:59 -05:00
sata_sil.c [libata] sata_sil: Fix compilation error with libata debugging enabled 2009-02-02 22:38:29 -05:00
sata_sis.c libata: make SCR access ops per-link 2008-09-29 00:22:28 -04:00
sata_svw.c libata: make SCR access ops per-link 2008-09-29 00:22:28 -04:00
sata_sx4.c
sata_uli.c libata: make SCR access ops per-link 2008-09-29 00:22:28 -04:00
sata_via.c sata_via: Add VT8261 support 2009-01-16 10:23:22 -05:00
sata_vsc.c libata: make SCR access ops per-link 2008-09-29 00:22:28 -04:00
sis.h