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

Bruce Evans bde at zeta.org.au
Mon Aug 8 23:00:31 GMT 2005


The following reply was made to PR kern/83529; it has been noted by GNATS.

From: Bruce Evans <bde at zeta.org.au>
To: Francis Gendreau <tech at makwa.net>
Cc: freebsd-gnats-submit at FreeBSD.org, freebsd-bugs at FreeBSD.org
Subject: Re: kern/83529: partition table corruption using wdc/wd driver
Date: Tue, 9 Aug 2005 09:00:05 +1000 (EST)

 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