Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 23 Aug 1995 12:34:27 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        bde@zeta.org.au, terry@cs.weber.edu
Cc:        freebsd-hackers@freebsd.org, imb@scgt.oz.au, msmith@atrad.adelaide.edu.au, roberto@keltia.frmug.fr.net
Subject:   Re: Install issues (was: State of the union speech
Message-ID:  <199508230234.MAA31690@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>THe second translation is sector sparing.  Sector sparing is a non-linear
>translation mechanism.

>Say that I have s=36; now say I have sparing enabled, which steals the
>36th and leaves me with an equivalent of s=35 + 1 spare.

>The problem in this scenario is that the drive geometry query is going
>to return 36, but the hardware will enforce 35.

>But the actual will be 36.

Physically it is 36 but the controller should report 35...unless this
form of translation is regarded as a bug fix for the option base 1
sector numbers :-).  What happens if translation is enabled and the set
parameters command tells the drive that there are 36 sectors/ track?
Translation has to slip a sector for each track if translation is to
work.  I guess the spare sectors should be inaccessible in translated
mode (you could specify sector 0, but the accumulated slippages stops
that from being related to a physical sector 0).

>The sparing doesn't actually go off unless you also disable translation.

Yes it does.  Of course you have to add 1 to the number of sectors in
the BIOS geometry and in disk labels to use the extra sectors.

>The AT&T SVR4.0.2 wd driver understands ESDI and sector sparing, so it
>will work; however, because of the non-linear translation, you can not
>install both the AT&T UNIX and DOS on the same drive unless translation
>is off because of the way the sparing causes a loss of one sector in 36,
>so for n sectors, n> 36, you mistake the partition start by n/36 in the
>boot code.

This can be handled by using adjusting the geometry in the smart driver.
Use a drive table entry with 35 sectors since 35 is all the BIOS can
normally see.  Use 36 sectors in the smart driver.  Other OS's will have
problems reading file systems written by the smart driver.

>In theory, if the sector offsets were translated using the disklabel
>C/H/S vs the hardware C/H/S, and you set the disklabel values to
>skip sector 36, well then, everything would work -- this is the NetBSD
>0.x bogosity that allowed it to operate.

I think all the BSDs used the disklabel values until I "improved" the
FreeBSD driver in 2.0.5.  This is what the disklabel was for - for
specifying the final values to be used in case the hardware or BIOS
values are unavailable or wrong.

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199508230234.MAA31690>