Re: [PATCH] Support HDIO_GETGEO on device-mapper volumes



Alasdair G Kergon wrote:
On Thu, Feb 09, 2006 at 05:35:12PM -0800, Darrick J. Wong wrote:
Since dm doesn't implement the HDIO_GETGEO ioctl,

Why should it? Device-mapper constructs a virtual device and
I think it's completely wrong for it to 'fake' a geometry.

Of course dm could recognise the ioctl - but the default response
should be the one that indicates the geometry is unknown.


That is what it did before. By failing the ioctl, that indicates that the geometry is unknown, and that causes problems for grub.

grub assumes that the CHS
geometry is 620/128/63, which makes it impossible to configure it to
boot a filesystem that lives beyond the 2GB mark, even if the system
BIOS supports that.

Surely a problem in grub, not the kernel?


Yes, I think this could also be fixed on grub's end. It seems that fdisk assumes usable default values for the geometry but grub has different defaults that cause it problems. I think that the defaults could be modified in grub so that it will work when HDIO_GETGEO fails.

The attached patch implements a simple ioctl handler that supplies a
compatible geometry when HDIO_GETGEO is called against a device-mapper
device. Its behavior is somewhat similar to what sd_mod does if the
scsi controller doesn't provide its own geometry.

What if the dm device is a linear mapping to an sd device that *does*
provide a different geometry? Then the 'fake' geometry dm would return
with this patch would be wrong!


There is no 'right' or 'wrong' geometry; it is all made up anyhow.

this seems to be a better option than having each program make
up its own potentially different geometry, or making an arbitrary guess.

I disagree - either dm should work out the *correct* geometry to
return for those mappings where a geometry is known and it's sensible
to return one (e.g. linear mapping to the start of certain scsi
devices), or else it should leave it to userspace to decide how to
handle the situation. (And there's nothing currently stopping
userspace seeing that a dm device is constructed out of a scsi device
and choosing to use the geometry of that underlying device.)

Except that most user space tools are not aware of dm and shouldn't need to be.

In this case, I think the correct solution is to patch grub so that if there is already a valid MBR on the disk, it should take the geometry from there. If it is creating a brand new MBR, then it should use the geometry from HDIO_GETGEO and if that fails, make up sensible defaults like fdisk does.


-
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/



Relevant Pages

  • Re: Support HDIO_GETGEO on device-mapper volumes
    ... fdisk assumes usable default values for the geometry but grub has ... could be modified in grub so that it will work when HDIO_GETGEO fails. ... When 'dmraid' has assembled an array, it should find the matching BIOS ... It's very annoying trying to fix up a harddrive's partition ...
    (Linux-Kernel)
  • Re: GRUB Geom error
    ... I just executed /sbin/lilo (whether you use grub or lilo) and it should give ... you an error specifying a mismatch in geometry between the BIOS and Kernel. ... Then I setup Grub and used a switch to specify the geometry of the drive ...
    (alt.os.linux.suse)
  • Re: Support HDIO_GETGEO on device-mapper volumes
    ... fdisk assumes usable default values for the geometry but grub has ... could be modified in grub so that it will work when HDIO_GETGEO fails. ... I don't know that there would be any easy way for the kernel to know which BIOS drive corresponds to the device, and the device may be one that's not recognized by the BIOS at all and therefore has no BIOS device ... There were problems with this that surfaced sometime after the release of the 2.6 kernel, where installing Fedora Core 2 on a dual-boot system with Windows would render Windows unbootable. ...
    (Linux-Kernel)
  • Re: [PATCH] Support HDIO_GETGEO on device-mapper volumes
    ... when I setup my system on a dmraid controlled hardware fakeraid raid-0, I just gave grub a suitable geometry command since it couldn't auto detect it. ... grub shouldn't care about the geometry since that information has been obsolete for years. ... The attached patch implements a simple ioctl handler that supplies a compatible geometry when HDIO_GETGEO is called against a device-mapper device. ...
    (Linux-Kernel)
  • Re: GRUB Geom error
    ... > should give you an error specifying a mismatch in geometry between the ... Then I setup Grub and used a switch to specify the ... > geometry of the drive given by the lilo command (cannot remember which ...
    (alt.os.linux.suse)