From: "Seewer Philippe" <philippe.seewer@bfh.ch>
To: "Phillip Susi" <psusi@cfl.rr.com>
Cc: "linux-os \(Dick Johnson\)" <linux-os@analogic.com>,
"Alan Cox" <alan@lxorguk.ukuu.org.uk>,
"Bartlomiej Zolnierkiewicz" <bzolnier@gmail.com>,
<linux-kernel@vger.kernel.org>
Subject: Re: RFC: disk geometry via sysfs
Date: Thu, 16 Feb 2006 17:15:21 +0100 [thread overview]
Message-ID: <43F4A519.4050005@bfh.ch> (raw)
In-Reply-To: <43F499A8.4080204@cfl.rr.com>
Phillip Susi wrote:
> linux-os (Dick Johnson) wrote:
>
>>> I'm talking about the geometry of the disk. If the disk has 16 sectors
>>> and 8 heads, then the maximum value allowed for any valid address is 16
>>> in the sector field and 7 in the heads field. This influences the
>>> translation to/from LBA. A sector with LBA of 1234 would have a CHS
>>> address using this geometry of 9/5/3. If the disk reports a geometry of
>>> x/8/16 but the bios is using a geometry of x/255/63, then when you pass
>>> 9/5/3 to int 13 it will fetch LBA 144902 which is clearly not going to
>>> give you what you wanted.
>>>
>>
>> Wrong! The disk gets an OFFSET! It doesn't care how that OFFSET
>> is obtained. That OFFSET is the sum of some variables. Some start
>> at 0 and some start at 1. The BIOS takes these PHONY things, without
>> checking to see if they "fit" in some pre-conceived notion of
>> "geometery" and sums them all up to make an OFFSET. The C/H/S
>> stuff started and ENDED with the ST-506 interface. PERIOD.
>>
>
> Please reread my explanation above. The bios has to compute the
> absolute offset based on the geometry and the values you pass it. It
> does so by multiplying the track number you pass by the number of
> sectors per track, multiplies the cylinder number by the number of
> sectors per track and the number of tracks, and adds those two values to
> the sector number you pass to arrive at the LBA to read. If it performs
> the CHS->LBA translation using a different geometry than you used to go
> from LBA->CHS, then it will get the wrong sector.
>
>
Guys, lets not forget ourself... ok?
For an in depth explanation of the whole c/h/s lba thing go here:
http://www.mossywell.com/boot-sequence/
This is the best reference i've found thus far.
I think what we should be talking about here is what is necessary to
write a mbr and partition a disk, not how the whole c/h/s shebang works,
because that is no longer of any real interest.
The important fact here is that Linux does not really depend on an MBR
which matches the BIOS. Only other os do...
The current behaviour of partitioning tools under Linux is (most of the
time) quite simple: If an MBR exists, determine the geometry to use to
create new partitions from the MBR.
The problem starts when creating a new MBR. In this case we need a
geometry. There most Utilities depend (probably historically) on
HDIO_GETGEO. By now we know that these values do not necessarily
correspond to bios values. They don't have to, because they can contain
as much bogus as we want. Why? Because all partitions will be created
with these values as a base. The question here is actually only if the
user wants compatible values or not.
The problem increases when we use tools such as dosemu, which need to
emulate a bios. If we do things there like deploy windows with dosemu
(please remember, this is just an example), the geometry values
represented by dosemu need to be exactly the same as the bios returns.
The problem increases further with the use of bootloaders. Because they
need at least some basic geometry information. See the thread "Support
HDIO_GETGEO on device-mapper volumes" in this mailinglist for an example
(Actually this thread is among the reasons why I started this).
So the whole thing comes to the question whether we drop any interfaces
reporting geometry, making userspace tools responsible or if we provide
a common interface which can be modified by userspace if necessary.
(There are no other workable options i can see)
I vote for keeping it in the kernel, because otherwise tons of
user-space tools would need to be modified and it actually might be the
case that a driver knows what he's returning...
next prev parent reply other threads:[~2006-02-16 16:15 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-02-10 13:06 RFC: disk geometry via sysfs Seewer Philippe
2006-02-13 9:56 ` Bartlomiej Zolnierkiewicz
2006-02-15 7:57 ` Seewer Philippe
2006-02-13 16:32 ` Phillip Susi
2006-02-13 19:02 ` Seewer Philippe
2006-02-13 19:22 ` linux-os (Dick Johnson)
2006-02-13 19:36 ` Phillip Susi
2006-02-14 16:35 ` Seewer Philippe
2006-02-13 19:34 ` Phillip Susi
[not found] ` <43F206E7.70601@bfh.ch>
2006-02-14 18:19 ` Phillip Susi
2006-02-15 8:39 ` Seewer Philippe
2006-02-15 8:51 ` Bartlomiej Zolnierkiewicz
2006-02-15 9:01 ` Seewer Philippe
2006-02-15 14:06 ` Alan Cox
2006-02-15 14:11 ` Seewer Philippe
2006-02-15 15:15 ` Alan Cox
2006-02-15 15:29 ` Phillip Susi
2006-02-16 8:12 ` Seewer Philippe
2006-02-16 15:36 ` Phillip Susi
2006-02-16 15:41 ` Seewer Philippe
2006-02-16 16:15 ` Phillip Susi
2006-02-15 15:20 ` Phillip Susi
2006-02-15 16:06 ` Alan Cox
2006-02-15 16:20 ` Phillip Susi
2006-02-15 17:32 ` Alan Cox
2006-02-15 18:43 ` Phillip Susi
2006-02-15 19:23 ` linux-os (Dick Johnson)
2006-02-15 20:54 ` Phillip Susi
2006-02-15 21:41 ` linux-os (Dick Johnson)
2006-02-15 22:43 ` Phillip Susi
2006-02-16 12:33 ` linux-os (Dick Johnson)
2006-02-16 15:26 ` Phillip Susi
2006-02-16 16:15 ` Seewer Philippe [this message]
2006-02-16 17:01 ` Phillip Susi
2006-02-16 16:39 ` linux-os (Dick Johnson)
2006-02-16 17:09 ` Phillip Susi
2006-02-16 19:01 ` linux-os (Dick Johnson)
2006-02-16 19:55 ` Phillip Susi
2006-02-16 8:18 ` Seewer Philippe
2006-02-16 18:14 ` Matt Domsch
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=43F4A519.4050005@bfh.ch \
--to=philippe.seewer@bfh.ch \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=bzolnier@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-os@analogic.com \
--cc=psusi@cfl.rr.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox