Thread (40 messages) 40 messages, 14 authors, 2008-04-16

Re: What to do about the 2TB limit on HDIO_GETGEO ?

From: Kay Sievers <hidden>
Date: 2008-03-27 19:29:27
Also in: linux-scsi, lkml

Possibly related (same subject, not in this thread)

On Wed, Mar 26, 2008 at 1:54 AM, Tejun Heo [off-list ref] wrote:
 Mark Lord wrote:
 > So have we.  sysfs is a total nightmare to extract information from
 > under program / script control.  The idea presented in this thread,
 > is to have it cross-index the contents with a method that actually
 > makes it easy to access in many common scenarios, without requiring
 > huge gobs of code in user space.  Or in kernel space.
 >
 > And it's not just a few 10s of lines of code currently,
 > but rather about 80-100 lines just to find the correct device subdir,
 > and *then* a few more 10s of lines of code to retrieve the value.
 >
 > In a bulletproof fashion, that is.  Sure it can be slightly smaller
 > if niceties such as error checking/handling are omitted.
 >
 > There's no guarantee that udev is present, and even if it were present,
 > there's no guarantee that the names in /dev/ will match /sysfs/ pathnames,
 > since udev is very configurable to do otherwise.
 >
 > So lookups are by dev_t, which sysfs has no simple or even easy way
 > of accomplishing.  O(n) at a minimum.
 >
 > If we make it easier to access, then more programs will use it
 > rather than us having to expand our tricky binary ioctl interfaces.
 >
 > Isn't that part of the idea of sysfs -- to limit the need for new ioctls ?

 The questions are...

 1. Are we gonna push sysfs as the primary interface and not provide an
 alternative interface (ioctl here) which can provide equivalent
 information?  There are people running their systems w/o sysfs but I
 think we're getting closer to this everyday.

 2. Is udev an essential part of all systems?  I'm not sure about this
 one.  Lots of small machines run w/o udev and I think udev is a bit too
 high level to depend on for every system.

 If both #1 and #2 are true, I agree with Mark that we need an easy to
 map from device number to matching sysfs nodes.  Tools which are used
 early during boot and emergency sessions need this mapping and many of
 them are minimal C program w/o much dependency for a good reason.
 Requiring each of them to implement their own way to map device node to
 sysfs node is too awkward.

 Probably something like /sys/class/block/MAJ:MIN
"Devices directories" are not supposed to contain duplicate entries.
It would slow-down, or may even break things.
or /sys/class/devnums/bMAJ:MIN?
These are no devices belonging to the class "devnums", so it may
confuse things which crawl these directories to get "all devices".
Current coldplug-like setups will likely add duplicate devices with
the wrong subsystem. There are also bus-devices with have a dev_t, and
that will make them show up in /sys/class, which might confuse some
tools too.

I guess we will need to find some other solution as a /sys/class/ for
that. And we must prefix the links with 'c' and 'b' because dev_t is
not unique across char and block devices.

Thanks,
Kay
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help