Re: Disk geometry from /sys

From: Seewer Philippe
Date: Wed Apr 16 2008 - 03:49:55 EST


Hi,

Francis Moreau wrote:
Hi Seewer,

On Mon, Apr 14, 2008 at 2:57 PM, Seewer Philippe <philippe.seewer@xxxxxx> wrote:
As you've problably seen from the other answers, disk geometry is (except
for a few older devices) unneeded inside the Linux kernel.

Yes but I'm doing userspace stuff and that's the reason I was asking for the
sysfs thing.

I'd say thats the
reason why there's no sysfs export and I'd further guess disk geometry is an
artifact most would like to get rid of (or pushed into userspace).


Well, I looked at sfdisk(8) and parted(8) source code and they all need the
geometry description. If I understood correctly the reason why is that it
'prefers' to align partition sizes/starts on a cylinder boundary because some
bootloaders probably use CHS addressing, but I'm really not sure.
Yes indeed, mainly in the (w)intel world though.


Anyway, if you really need it, try the patch below. Should apply cleanly to
version 2.6.23.1 and gives you a geometry/ directory for each block device
providing the getgeo function. It adds a setgeo counterpart for some
subsystems as well, allowing 'echo something > ...' so please be careful.


Thanks but I probably won't use it. Using sfdisk, for example, is a
more portable
way to get the geometry from a script.

Correct. Though be really careful which geometry you are requesting:

root@local:/# sfdisk -g /dev/sda
/dev/sda: 7296 cylinders, 255 heads, 63 sectors/track
root@local:/# sfdisk -G /dev/sda
/dev/sda: 116280 cylinders, 16 heads, 63 sectors/track

The first one is the kernels idea of a disks geometry which is probably as often correct as it's just plain wrong, versus the second one which tries to guess a disks geometry by looking at the current partition table. Which might be just as wrong since its only necessary for bios and/or bootloader. Really depends on what you need.

Cheers
Philippe

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/