grub-devel.gnu.org archive mirror
 help / color / mirror / Atom feed
From: scameron@beardog.cce.hp.com
To: Lennart Sorensen <lsorense@csclub.uwaterloo.ca>
Cc: The development of GNU GRUB <grub-devel@gnu.org>,
	dab@hp.com, scameron@beardog.cce.hp.com
Subject: Re: Best practice for new linux block driver device naming?
Date: Fri, 8 Mar 2013 17:05:33 -0600	[thread overview]
Message-ID: <20130308230533.GM28545@beardog.cce.hp.com> (raw)
In-Reply-To: <20130308224911.GB11989@csclub.uwaterloo.ca>

On Fri, Mar 08, 2013 at 05:49:11PM -0500, Lennart Sorensen wrote:
> On Fri, Mar 08, 2013 at 04:34:28PM -0600, scameron@beardog.cce.hp.com wrote:
> > I get ~4x the IOPSs with a block driver vs. scsi driver due to contention
> > for locks in the scsi mid layer (in scsi_request_fn).  It's the
> > difference between the device being worth manufacturing vs. not.
> 
> Well that starts to qualify as a good reason I suppose.  Of course it
> also makes you wonder if perhaps some work on optimizing that part of
> the scsi stack is oin order (I have no idea if that's even plausible).
> 
> > See this thread: http://marc.info/?l=linux-scsi&m=135518042125008&w=2
> > 
> > Driver is similar to nvme (also a new block driver), but this one is
> > for SCSI over PCIe, basically highly parallelized access to very low
> > latency devices and trying to use the SCSI midlayer kills the IOPS.
> 
> Some nifty hardware that's for sure.
> 
> > There were reasons back then for doing that one as a block driver
> > which are no longer extant (hence the existence of the hpsa driver
> > which supplanted cciss for new smart array devices.)
> > 
> > All other things being equal, I would also prefer a scsi driver.
> > Heck, it's called SCSI over PCIe -- I tried like hell to get it 
> > to perform adequately as a SCSI driver but all other things are
> > not equal, not even close, the block driver was ~4x as fast.
> > 
> > So we reluctantly go with a block driver, just like nvme did.
> 
> Makes sense.  Perhaps that does mean having to teach grub about it then.

We are not expecting to be able to boot from the device in the first iteration,
so it's not as if we would need support instantly (not that I imagine we could
get it instantly anyway), and it's not clear that it makes sense for such a high
IOPS device to be used as a boot device in most imaginable use cases anyway, but
OTOH, we would prefer not to rule out booting from it.

So, that being said, are there any best practices for naming new block device nodes?
Or is any scheme like /dev/sop[0-9a-z] about as good/bad as any other?

And, is it a worthwhile idea to pursue adding some sort of shared device namespace
for block devices to the kernel (maintaining backwards compatibility of device node
names would of course be required) so that block devices could have some shared
namespace as scsi devices do?

Typically the block devices themselves don't care what the device nodes are named, 
only the userland apps do, though it falls to the block drivers to specify a device
name via struct gendisk's ->disk_name member being set prior to calling add_disk().

If there were some kernel interface the block driver could use to get a disk name
assigned from a shared name space, something like blk_get_new_disk_name(disk->disk_name);
that could hand out device names like b%s, so you'd get all the block devices which use
this interface having device names like /dev/bda, /dev/bdb, /dev/bdc, analogous to
/dev/sda, /dev/sdb, etc. -- the specifics here don't matter to me, the above is just
an idea off the top of my head -- then, we teach grub about this new block device
namespace *once*, and force all new block drivers to use it.  Thereafter, adding a
block driver to the kernel causes no more grub related pain to grub and distro
developers and users than adding a new scsi hba driver -- i.e. none. 

Would such a thing be worth pursuing?  Or is there some good reason such a thing
doesn't already exist?  (Maybe this is more a question for lkml.)

-- steve

 


  reply	other threads:[~2013-03-08 23:07 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-08 20:07 Best practice for new linux block driver device naming? scameron
2013-03-08 21:56 ` Lennart Sorensen
2013-03-08 22:34   ` scameron
2013-03-08 22:49     ` Lennart Sorensen
2013-03-08 23:05       ` scameron [this message]
2013-03-11 18:35         ` Lennart Sorensen

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=20130308230533.GM28545@beardog.cce.hp.com \
    --to=scameron@beardog.cce.hp.com \
    --cc=dab@hp.com \
    --cc=grub-devel@gnu.org \
    --cc=lsorense@csclub.uwaterloo.ca \
    /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;
as well as URLs for NNTP newsgroup(s).