kern/83529: partition table corruption using wdc/wd driver

Bruce Evans bde at zeta.org.au
Mon Aug 8 22:52:12 GMT 2005


On Tue, 9 Aug 2005, Bruce Evans wrote:

> However, the wdc/wd driver still seems to work well enough for disks
> smaller than 137GB (1GB = 10^9 bytes).  On my test system, there were
> similar but not identical problems accessing partitions until I
> configured the wd driver to use the "LBA addressing" flag 0x1000 (see
> wd(4)).  Try using this flag.  It shouldn't be needed, but is needed
> for all disks larger than 33GB due to driver bugs.  Some disks have a
> hard limit of 8GB, and the driver gets the test for this mostly wrong
> and ends up intentionally breaking CHS above 33GB where it might work,
> without intentionally breaking CHS between 8-33GB where it might not
> work (the intentional breakage is just to truncate disks to a limit
> above which the driver fears that they might not work).

Oops.  The test is correct.  The 33GB limit is unrelated to hardware
limits.  It results from (virtual) disk geometries with more than 63
sectors being impractical because old BIOS interfaces are limited to
this number and the wd driver doesn't change the CHS translation very
much.  In CHS mode, the driver uses the number of sectors in the current
translation mode; this is set by the BIOS, so for not very old disks
and not very new or very old BIOSes, it is almost always 63 instead of
the maximum of 255, so the 137GB limit is reduced by a factor of 255/63
to become 33GB.  The BIOS on my test machine is new enough to support
255 sectors, but I never use this because of compatibility problems
(partition tables are still limited to 63 sectors of CHS addressing
is used to boot).

Bruce


More information about the freebsd-bugs mailing list