Re: /sys/block [was: [PATCH 007 of 7] md: Get name for block device in sysfs]

2007-12-17 Thread Michael Tokarev
Michael Tokarev wrote:
> Kay Sievers wrote:
>> On Mon, 2007-12-17 at 08:29 +0300, Michael Tokarev wrote:
> []
>>> How to distinguish char devices from block devices in sysfs?
>>> Is the only way to read a symlink `subsystem' in the device
>>> directory?
>> By its subsystem value (block), from the symlink, from the environment,
>> or from $1.
> 
> Environment and $1 comes as arguments for hotplug helper, not
> when scanning /sys/.

By the way, that's one of reasons I asked about useful content
in uevent files (but failed to provide a patch so far ;).
In 2.6.23, those files ARE readable finally, but doesn't
contain much info yet.

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


Re: /sys/block [was: [PATCH 007 of 7] md: Get name for block device in sysfs]

2007-12-17 Thread Michael Tokarev
Kay Sievers wrote:
> On Mon, 2007-12-17 at 08:29 +0300, Michael Tokarev wrote:
[]
>> How to distinguish char devices from block devices in sysfs?
>> Is the only way to read a symlink `subsystem' in the device
>> directory?
> 
> By its subsystem value (block), from the symlink, from the environment,
> or from $1.

Environment and $1 comes as arguments for hotplug helper, not
when scanning /sys/.

>> For now, I've a shell code (used heavily in numerous places),
>> which looks like this:
>>
>>   function makedev() {
>> ...
>> case $DEVPATH in
>>   /block/*) TYPE=b ;;
>>   *) TYPE=c ;;
>> esac
>> ...
>> mknod /dev/$DEV $TYPE $MAJOR $MINOR
>>   }
>>
>> The only external process invocation in there is mknod, all
>> the rest is done using pure shell constructs.  Is it really
>> necessary to spawn another process just to read a symlink
>> now?  It will be almost 2 times slower
> 
> No need.

It seems there IS a need now ;)

Thanks for the clarification.

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


Re: /sys/block [was: [PATCH 007 of 7] md: Get name for block device in sysfs]

2007-12-17 Thread Kay Sievers
On Mon, 2007-12-17 at 08:29 +0300, Michael Tokarev wrote:
> Kay Sievers wrote:
> > On Mon, 2007-12-17 at 09:43 +1100, Neil Brown wrote:
> >> On Saturday December 15, [EMAIL PROTECTED] wrote:
> >>> On Dec 14, 2007 7:26 AM, NeilBrown <[EMAIL PROTECTED]> wrote:
>  Given an fd on a block device, returns a string like
> 
>  /block/sda/sda1
> 
>  which can be used to find related information in /sys.
> >> 
> >>> As pointed out to when you came up with the idea, we can't do this. A 
> >>> devpath
> >>> is a path to the device and will not necessarily start with "/block" for 
> >>> block
> >>> devices. It may start with "/devices" and can be much longer than
> >>> BDEVNAME_SIZE*2  + 10.
> >> When you say "will not necessarily" can I take that to mean that it
> >> currently does, but it might (will) change??
> > 
> > It's in -mm. The devpath for all block devices, like for all other
> > devices, will start with /devices/* if !SYSFS_DEPRECATED.
> 
> This is the second time I come across this (planned?) change, and for
> the second time I can't understand it.
> 
> How to distinguish char devices from block devices in sysfs?
> Is the only way to read a symlink `subsystem' in the device
> directory?

By its subsystem value (block), from the symlink, from the environment,
or from $1.

> For now, I've a shell code (used heavily in numerous places),
> which looks like this:
> 
>   function makedev() {
> ...
> case $DEVPATH in
>   /block/*) TYPE=b ;;
>   *) TYPE=c ;;
> esac
> ...
> mknod /dev/$DEV $TYPE $MAJOR $MINOR
>   }
> 
> The only external process invocation in there is mknod, all
> the rest is done using pure shell constructs.  Is it really
> necessary to spawn another process just to read a symlink
> now?  It will be almost 2 times slower

No need.

> (Sure thing this may be rewritten in C, but using shell it's
> MUCH easier to customize if necessary.)

$SUBSYSTEM == "block"

> Also, /sys/block/ directory is very easy to use currently, --
> unlike other /sys/ stuff which is way too deep and often
> placed in unknown/unexpected places (and /sys/class/ and
> /sys/bus/ directories are changing all the time).

/sys/block is still there and contains symlinks. And all this happens
only for !SYSFS_DEPRECATED.

> What's the benefit of moving things from /sys/block/ to
> /sys/devices/ ?

Unification. Block devices are "struct devices", use a class, use the
common driver core code instead of their own, show up in the tree, and
can be parents for other devices.

Kay

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


Re: /sys/block [was: [PATCH 007 of 7] md: Get name for block device in sysfs]

2007-12-17 Thread Kay Sievers
On Mon, 2007-12-17 at 08:29 +0300, Michael Tokarev wrote:
 Kay Sievers wrote:
  On Mon, 2007-12-17 at 09:43 +1100, Neil Brown wrote:
  On Saturday December 15, [EMAIL PROTECTED] wrote:
  On Dec 14, 2007 7:26 AM, NeilBrown [EMAIL PROTECTED] wrote:
  Given an fd on a block device, returns a string like
 
  /block/sda/sda1
 
  which can be used to find related information in /sys.
  
  As pointed out to when you came up with the idea, we can't do this. A 
  devpath
  is a path to the device and will not necessarily start with /block for 
  block
  devices. It may start with /devices and can be much longer than
  BDEVNAME_SIZE*2  + 10.
  When you say will not necessarily can I take that to mean that it
  currently does, but it might (will) change??
  
  It's in -mm. The devpath for all block devices, like for all other
  devices, will start with /devices/* if !SYSFS_DEPRECATED.
 
 This is the second time I come across this (planned?) change, and for
 the second time I can't understand it.
 
 How to distinguish char devices from block devices in sysfs?
 Is the only way to read a symlink `subsystem' in the device
 directory?

By its subsystem value (block), from the symlink, from the environment,
or from $1.

 For now, I've a shell code (used heavily in numerous places),
 which looks like this:
 
   function makedev() {
 ...
 case $DEVPATH in
   /block/*) TYPE=b ;;
   *) TYPE=c ;;
 esac
 ...
 mknod /dev/$DEV $TYPE $MAJOR $MINOR
   }
 
 The only external process invocation in there is mknod, all
 the rest is done using pure shell constructs.  Is it really
 necessary to spawn another process just to read a symlink
 now?  It will be almost 2 times slower

No need.

 (Sure thing this may be rewritten in C, but using shell it's
 MUCH easier to customize if necessary.)

$SUBSYSTEM == block

 Also, /sys/block/ directory is very easy to use currently, --
 unlike other /sys/ stuff which is way too deep and often
 placed in unknown/unexpected places (and /sys/class/ and
 /sys/bus/ directories are changing all the time).

/sys/block is still there and contains symlinks. And all this happens
only for !SYSFS_DEPRECATED.

 What's the benefit of moving things from /sys/block/ to
 /sys/devices/ ?

Unification. Block devices are struct devices, use a class, use the
common driver core code instead of their own, show up in the tree, and
can be parents for other devices.

Kay

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


Re: /sys/block [was: [PATCH 007 of 7] md: Get name for block device in sysfs]

2007-12-17 Thread Michael Tokarev
Kay Sievers wrote:
 On Mon, 2007-12-17 at 08:29 +0300, Michael Tokarev wrote:
[]
 How to distinguish char devices from block devices in sysfs?
 Is the only way to read a symlink `subsystem' in the device
 directory?
 
 By its subsystem value (block), from the symlink, from the environment,
 or from $1.

Environment and $1 comes as arguments for hotplug helper, not
when scanning /sys/.

 For now, I've a shell code (used heavily in numerous places),
 which looks like this:

   function makedev() {
 ...
 case $DEVPATH in
   /block/*) TYPE=b ;;
   *) TYPE=c ;;
 esac
 ...
 mknod /dev/$DEV $TYPE $MAJOR $MINOR
   }

 The only external process invocation in there is mknod, all
 the rest is done using pure shell constructs.  Is it really
 necessary to spawn another process just to read a symlink
 now?  It will be almost 2 times slower
 
 No need.

It seems there IS a need now ;)

Thanks for the clarification.

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


Re: /sys/block [was: [PATCH 007 of 7] md: Get name for block device in sysfs]

2007-12-17 Thread Michael Tokarev
Michael Tokarev wrote:
 Kay Sievers wrote:
 On Mon, 2007-12-17 at 08:29 +0300, Michael Tokarev wrote:
 []
 How to distinguish char devices from block devices in sysfs?
 Is the only way to read a symlink `subsystem' in the device
 directory?
 By its subsystem value (block), from the symlink, from the environment,
 or from $1.
 
 Environment and $1 comes as arguments for hotplug helper, not
 when scanning /sys/.

By the way, that's one of reasons I asked about useful content
in uevent files (but failed to provide a patch so far ;).
In 2.6.23, those files ARE readable finally, but doesn't
contain much info yet.

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


/sys/block [was: [PATCH 007 of 7] md: Get name for block device in sysfs]

2007-12-16 Thread Michael Tokarev
Kay Sievers wrote:
> On Mon, 2007-12-17 at 09:43 +1100, Neil Brown wrote:
>> On Saturday December 15, [EMAIL PROTECTED] wrote:
>>> On Dec 14, 2007 7:26 AM, NeilBrown <[EMAIL PROTECTED]> wrote:
 Given an fd on a block device, returns a string like

 /block/sda/sda1

 which can be used to find related information in /sys.
>> 
>>> As pointed out to when you came up with the idea, we can't do this. A 
>>> devpath
>>> is a path to the device and will not necessarily start with "/block" for 
>>> block
>>> devices. It may start with "/devices" and can be much longer than
>>> BDEVNAME_SIZE*2  + 10.
>> When you say "will not necessarily" can I take that to mean that it
>> currently does, but it might (will) change??
> 
> It's in -mm. The devpath for all block devices, like for all other
> devices, will start with /devices/* if !SYSFS_DEPRECATED.

This is the second time I come across this (planned?) change, and for
the second time I can't understand it.

How to distinguish char devices from block devices in sysfs?
Is the only way to read a symlink `subsystem' in the device
directory?

For now, I've a shell code (used heavily in numerous places),
which looks like this:

  function makedev() {
...
case $DEVPATH in
  /block/*) TYPE=b ;;
  *) TYPE=c ;;
esac
...
mknod /dev/$DEV $TYPE $MAJOR $MINOR
  }

The only external process invocation in there is mknod, all
the rest is done using pure shell constructs.  Is it really
necessary to spawn another process just to read a symlink
now?  It will be almost 2 times slower

(Sure thing this may be rewritten in C, but using shell it's
MUCH easier to customize if necessary.)

Also, /sys/block/ directory is very easy to use currently, --
unlike other /sys/ stuff which is way too deep and often
placed in unknown/unexpected places (and /sys/class/ and
/sys/bus/ directories are changing all the time).

What's the benefit of moving things from /sys/block/ to
/sys/devices/ ?

Thanks.

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


/sys/block [was: [PATCH 007 of 7] md: Get name for block device in sysfs]

2007-12-16 Thread Michael Tokarev
Kay Sievers wrote:
 On Mon, 2007-12-17 at 09:43 +1100, Neil Brown wrote:
 On Saturday December 15, [EMAIL PROTECTED] wrote:
 On Dec 14, 2007 7:26 AM, NeilBrown [EMAIL PROTECTED] wrote:
 Given an fd on a block device, returns a string like

 /block/sda/sda1

 which can be used to find related information in /sys.
 
 As pointed out to when you came up with the idea, we can't do this. A 
 devpath
 is a path to the device and will not necessarily start with /block for 
 block
 devices. It may start with /devices and can be much longer than
 BDEVNAME_SIZE*2  + 10.
 When you say will not necessarily can I take that to mean that it
 currently does, but it might (will) change??
 
 It's in -mm. The devpath for all block devices, like for all other
 devices, will start with /devices/* if !SYSFS_DEPRECATED.

This is the second time I come across this (planned?) change, and for
the second time I can't understand it.

How to distinguish char devices from block devices in sysfs?
Is the only way to read a symlink `subsystem' in the device
directory?

For now, I've a shell code (used heavily in numerous places),
which looks like this:

  function makedev() {
...
case $DEVPATH in
  /block/*) TYPE=b ;;
  *) TYPE=c ;;
esac
...
mknod /dev/$DEV $TYPE $MAJOR $MINOR
  }

The only external process invocation in there is mknod, all
the rest is done using pure shell constructs.  Is it really
necessary to spawn another process just to read a symlink
now?  It will be almost 2 times slower

(Sure thing this may be rewritten in C, but using shell it's
MUCH easier to customize if necessary.)

Also, /sys/block/ directory is very easy to use currently, --
unlike other /sys/ stuff which is way too deep and often
placed in unknown/unexpected places (and /sys/class/ and
/sys/bus/ directories are changing all the time).

What's the benefit of moving things from /sys/block/ to
/sys/devices/ ?

Thanks.

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