lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 25 Apr 2013 17:12:20 -0500
From:	scameron@...rdog.cce.hp.com
To:	Tejun Heo <tj@...nel.org>
Cc:	axboe@...nel.dk, neilb@...e.de, hch@...radead.org,
	jmoyer@...hat.com, hare@...e.de, vgoyal@...hat.com,
	stephenmcameron@...il.com, linux-kernel@...r.kernel.org,
	lsorense@...lub.uwaterloo.ca, scameron@...rdog.cce.hp.com
Subject: Re: [RFC PATCH] block: Add new generic block device naming interface

On Thu, Apr 25, 2013 at 02:14:59PM -0700, Tejun Heo wrote:
> Hello,
[...]
> > 
> > Right now, if you add a new block driver, if you want grub to be able
> > to boot it, you also have to modify grub.  This is true for each new
> > block driver that comes along.  This is not the case for SCSI HBA
> > drivers, because they all get to share the sd driver and its device
> > name space, and grub already knows about that.  You can add all kinds
> > of SCSI HBA drivers and never have to worry about needing to modify
> > grub to get boot support.
> 
> So, the question, I suppose, is why grub needs to be changed when the
> stem of device names changes.  Why does it need to do that?  Is it
> just an implementation detail or is it something more fundamental?
> 

I don't know.  I do know that it looks like a lot of the the various block
device name schemes are more or less hard coded into grub with bits of code
like this:

	static void
	get_ide_disk_name (char *name, int unit)
	{
	#if defined(__linux__)
	  /* GNU/Linux */
	  sprintf (name, "/dev/hd%c", unit + 'a');
	#elif defined(__GNU__)
	  /* GNU/Hurd */
	  sprintf (name, "/dev/hd%d", unit);
	#elif defined(__FreeBSD_kernel__)
	[...]

	static void
	get_scsi_disk_name (char *name, int unit)
	{
	#if defined(__linux__)
	  /* GNU/Linux */
	  sprintf (name, "/dev/sd%c", unit + 'a');
	#elif defined(__GNU__)
	  /* GNU/Hurd */
	  sprintf (name, "/dev/sd%d", unit);
	#elif defined(__FreeBSD_kernel__)

there are about 9 different get_blah_disk_name() type functions in there
for the various device naming schemes.

It looks like these are called from a function called init_device_map() 
that is called from grub_stage2() at least in the version of grub I looked
at (0.97, from rhel6).

So my assumption is that adding a new block driver with yet another name space
would require adding another bit of code into grub like those above.  When I
asked about "best practices" for new block driver device names on the grub devel
mailing list to minimize required changes to grub, nobody argued against that
assumption. 

-- steve


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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ