IF YOU WOULD LIKE TO GET AN ACCOUNT, please write an
email to Administrator. User accounts are meant only to access repo
and report issues and/or generate pull requests.
This is a purpose-specific Git hosting for
BaseALT
projects. Thank you for your understanding!
Только зарегистрированные пользователи имеют доступ к сервису!
Для получения аккаунта, обратитесь к администратору.
Let's try it another way:
We define BLKGETSIZE64 in udev-volume_id.c now, cause including <fs.h>
does also not work with klibc. This hopefully fixes your compile problem
too.
Also included is an update to udev_volume_id with the latest fixes for
volume_id. It adds a simple logging file to map the debug function, that
we can use exactly the same files in HAL and udev.
Here is an update for the volume_id callout to catch up to the latest
and greatest:
o It is able to skip the label reading of linux raid members, which are
otherwise recognized as a normal filesystem.
o It reads FAT labels stored in the directory instead of the
superblock (Windows only writes in the directory).
o The NTFS uuid is the right one now.
o It reads all the Apple HFS(+) formats with the labels.
o UFS volumes are recognized but no labels are extracted.
o We use CFLAGS+=-D_FILE_OFFSET_BITS=64 instead of lsee64() which may fix
a bug mentioned on the klibc mailing list.
A lot of other new features are only used in HAL and not needed in this
simple callout. But if someone stumbles over it and want's to send a patch
for some exotic formats, we better keep it up to date :)
The attached patch contains a few patches against udev, to remove
use of various XSI:isms and bash:isms, and to change two scripts form
/bin/bash to /bin/sh. None of the bash-scripts in test/ uses any
bash-specific functions as far as I know, but I didn't touch them since
they aren't used runtime.
Rationale:
* Both of the /bin/bash-scripts are totally free from bashisms, hence they
don't need to be /bin/bash; using /bin/sh instead helps (mainly)
embedded-people
* local and source are bash:isms (well, they exist in several other
shells as well, but they aren't part of POSIX or any of its extensions)
* -a in tests is an XSI-extension, not part of strict POSIX, and is
easily replaced by &&
| http://www.opengroup.org/onlinepubs/009695399/utilities/test.html
* Use of fgrep is deprecated in POSIX in favour of grep -F (though fgrep
will remain in use for a long time...)
| http://www.opengroup.org/onlinepubs/009695399/utilities/grep.html
The fgrep-change isn't really necessary, since fgrep can always be
implemented as a shell-script, but the rest of the changes would really
be appreciated.
First, update extras/start_udev. udevstart always internally set
UDEV_NO_SLEEP as well as setting the ACTION variable, so that only needs
to be done in the run_udev script case.
Signed-off-by: Tom Rini <trini@kernel.crashing.org>
Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
volume_id is now able to read NTFS labels. Not very exciting, but we
keep up to date with the version in HAL. Also __packed__ was needed for
the structs, cause the gcc 3.4 compiled version was no longer working
properly.
Here is a update to extras/volume_id/*
o The device is now specified by the DEVPATH in the environment,
it's no longer needed to pass the major/minor to the callout.
o leading spaces and slashes are now removed from the returned string
and spaces are replaced by underscore, to not to confuse udev.
o Arnd Bergmann <arnd@arndb.de> provided the code to recognize s390
dasd disk labels. The -d switch tries to read the main block device
instead of the partition.
On Fri, Apr 30, 2004 at 03:29:54PM -0700, Greg KH wrote:
> On Thu, Apr 29, 2004 at 11:04:46PM +0200, Kay Sievers wrote:
> > Hi,
> > here is a small udev toy, which enables udev to name partitions by
> > its filesystem label or uuid's.
> >
> > The following udev rule:
> >
> > KERNEL="sd*", PROGRAM="/sbin/udev_volume_id -M%M -m%m -u", SYMLINK="%c"
> >
> > creates a symlink with the uuid read from the filesystem. If no label or
> > uuid is found the program exits with nonzero and the rule will fail.
> >
> > ext2, ext3, reiserfs, xfs, jfs, vfat, msdos volume labels are supported,
> > ntfs and swap partitions can be recognized.
> >
> > It's possible to compile with klibc and the static binary takes 13kb.
>
> Very nice, I was wondering who was going to use that library to make
> such a tool. This is even better as we can use klibc for it.
Here is a update, which supports iso9660 and udf labels.
Not very useful in the udev case, but I've added it for hal,
so we just catch up with the latest version.
here is a small udev toy, which enables udev to name partitions by
its filesystem label or uuid's.
The following udev rule:
KERNEL="sd*", PROGRAM="/sbin/udev_volume_id -M%M -m%m -u", SYMLINK="%c"
creates a symlink with the uuid read from the filesystem. If no label or
uuid is found the program exits with nonzero and the rule will fail.
ext2, ext3, reiserfs, xfs, jfs, vfat, msdos volume labels are supported,
ntfs and swap partitions can be recognized.
It's possible to compile with klibc and the static binary takes 13kb.
Here is the fix for extras/seliux/*
o install the binary in /sbin/
o add symlink to /etc/dev.d/ with suffix .dev
o removed the undefined udev_log variable
o fixed compiler warnings
On Sun, Apr 11, 2004 at 03:51:07AM +0200, Kay Sievers wrote:
> Here we change extras/dbus/* to
> o install the binary in /etc/dev.d
> o append .dev to the binary
> o add David's copyright
> o add the listener script to watch the sent dbus messages
> o removed the undefined udev_log variable
> o switch printf() to dbg()
Here we install the binary in /usr/sbin/ and symlink it to
/etc/dev.d/ with the .dev suffix.
It seems that the transition from DEVNODE to DEVNAME wasn't done
everywhere. This broke udev_dbus for me.
Attached patch does the transition in the places it wasn't done yet.
Hi, Greg. Appended is scsi-devfs.sh, a script for udev to implement
devfs-style names for SCSI hard discs, CD-ROM's and generic devices.
This has been tested with both hard discs and CD-ROM's. The SCSI
generic support should be OK for when there is sysfs/udev support for
SCSI generic devices. SCSI tapes are not yet implemented because I
don't have one to test with.
In addition, this script supports physical names, based on PCI bus
location, both longhand (/udev/bus/pci/...) and shorthand
(/udev/sd/pci/*).
Here we change the magic callout part number selector to the new
atribute syntax. The syntax to select the second part of the callout string:
'%2c' is now '%c{2}'
I think it's more clear and we no longer misuse the length argument.
The old syntax is still supported, but we should remove it some
time in the future.
incremental to udev-016/extras/multipath-0.0.16.3,
* add a GROUP_BY_SERIAL flag. This should be useful for
controlers that activate their spare paths on simple IO
submition with a penalty. The StorageWorks HW defaults to
this mode, even if the MULTIBUS mode is OK.
* remove unused sg_err.c
* big restructuring : split devinfo.c from main.c. Export :
* void basename (char *, char *);
* int get_serial (int, char *);
* int get_lun_strings (char *, char *, char *, char *);
* int get_evpd_wwid(char *, char *);
* long get_disk_size (char *);
Now we see clearly what is expected from an external package
like scsi_id.
* stop passing struct env as param
> Hello,
>
> incremental to udev-016/extras/multipath,
>
> * don't rely on the linux symlink in the udev/klibc dir since
> udev build doesn't use it anymore. This corrects build breakage
> * remove make_dm_node fn & call. Rely on udev for this.
>
> The first patch is to be applied.
> The second is conditioned by udev dealing correctly with devmap names.
>
> For this I can suggest a CALLOUT rule like this :
> KERNEL="dm-[0-9]*", PROGRAM="/tmp/name_devmap %M %m", NAME="%k",
> SYMLINK="%c"
>
> With name_devmap like :
> #!/bin/sh
> /usr/sbin/dmsetup ls|/bin/grep "$1, $2"|/usr/bin/awk '{print $1}'
>
ok I coded the suggested tool.
it works with the following rule :
KERNEL="dm-[0-9]*", PROGRAM="/sbin/devmap_name %M %m", NAME="%k", SYMLINK="%c"
I don't know if it's right to keep this tools packaged with multipath because
it's widely more general.
Maybe Joe should merge it in the device-mapper package or provide the
functionnality through dmsetup ?
incremental to udev-016/extras/multipath,
* don't rely on the linux symlink in the udev/klibc dir since
udev build doesn't use it anymore. This corrects build breakage
* remove make_dm_node fn & call. Rely on udev for this.
The first patch is to be applied.
The second is conditioned by udev dealing correctly with devmap names.
For this I can suggest a CALLOUT rule like this :
KERNEL=3D"dm-[0-9]*", PROGRAM=3D"/tmp/name_devmap %M %m", NAME=3D"%k", SY=
MLINK=3D"%c"
With name_devmap like :
#!/bin/sh
/usr/sbin/dmsetup ls|/bin/grep "$1, $2"|/usr/bin/awk '{print $1}'
this patch corrects ide devices with number greater than 9 being linked
into wrong discs/discX directories (my hda10 device was in discs/disc1
directory)
it adds % into pattern for $DRIVE, so for example, hda10 is not eaten
to hda1, but to hda, and break in for cycle works for it
I want to make udevinfo the standard query interface, so all the user
features of the main udev are copied in here. It is now capable to:
o query the database for a given value
o dump the whole database
o extract all possible device attributes for a sysfs_device
In addition to the known options of udev it supports the query for the
mode of the device node, and it includes the mode in the database dump:
udevinfo -d
P: /class/video4linux/video0
N: video/webcam0
M: 0666
S: camera0 kamera0
O: 500
G: 500
It is also a bit more friendly with the pathnames specified for devices or nodes.
We remove the absolute path or add it if neccessary:
udevinfo -q mode -n video/webcam0
udevinfo -q mode -n /udev/video/webcam0
0666
udevinfo -q mode -p /sys/class/video4linux/video0
udevinfo -q mode -p /class/video4linux/video0
udevinfo -q mode -p class/video4linux/video0
0666
udevinfo is now capable to print "all" attributes along the device chain
of a sysfs device. Just like udev itself it walks the chain upwards and
prints all usable attributes in the udev key format.
So it should be easy to find unique attributes to compose a rule.
All multiline attribute values and values containing non printable
characters are skipped now. I hope nothing useful gets lost with this :)
NOTE:
The BUS value corresponding with the attributes is printed for every
device. Don't specify BUS= in a rule and mix SYSFS_attributes from
different busses, the rule can't match.
./udevinfo /sys/block/sda/sda1
device '/sys/block/sda/sda1' has major:minor 8:1
looking at class device '/sys/block/sda/sda1':
SYSFS_dev="8:1"
SYSFS_start="32"
SYSFS_size="160"
SYSFS_stat=" 0 0 0 0"
follow the class device's "device"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1.3/1-1.3:1.0/host32/32:0:0:0':
BUS="scsi"
ID="32:0:0:0"
SYSFS_detach_state="0"
SYSFS_type="0"
SYSFS_model="USB 2 HS-CF"
SYSFS_vendor="SMSC "
SYSFS_max_sectors="240"
SYSFS_device_blocked="0"
SYSFS_queue_depth="1"
SYSFS_scsi_level="3"
SYSFS_rev="1.25"
SYSFS_online="1"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1.3/1-1.3:1.0/host32':
BUS=""
ID="host32"
SYSFS_detach_state="0"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1.3/1-1.3:1.0':
BUS="usb"
ID="1-1.3:1.0"
SYSFS_detach_state="0"
SYSFS_bInterfaceNumber="00"
SYSFS_bAlternateSetting=" 0"
SYSFS_bNumEndpoints="02"
SYSFS_bInterfaceClass="08"
SYSFS_bInterfaceSubClass="06"
SYSFS_bInterfaceProtocol="50"
SYSFS_iInterface="00"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1.3':
BUS="usb"
ID="1-1.3"
SYSFS_detach_state="0"
SYSFS_bNumConfigurations="1"
SYSFS_bNumInterfaces=" 1"
SYSFS_bConfigurationValue="1"
SYSFS_bmAttributes="80"
SYSFS_bMaxPower=" 96mA"
SYSFS_idVendor="0424"
SYSFS_idProduct="20fc"
SYSFS_bcdDevice="0125"
SYSFS_bDeviceClass="00"
SYSFS_bDeviceSubClass="00"
SYSFS_bDeviceProtocol="00"
SYSFS_speed="12"
SYSFS_manufacturer="SMSC"
SYSFS_product="USB 2 Flash Media Device"
SYSFS_serial="0305037000C2"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.0/usb1/1-1':
BUS="usb"
ID="1-1"
SYSFS_detach_state="0"
SYSFS_bNumConfigurations="1"
SYSFS_bNumInterfaces=" 1"
SYSFS_bConfigurationValue="1"
SYSFS_bmAttributes="e0"
SYSFS_bMaxPower=" 64mA"
SYSFS_idVendor="03eb"
SYSFS_idProduct="3301"
SYSFS_bcdDevice="0300"
SYSFS_bDeviceClass="09"
SYSFS_bDeviceSubClass="00"
SYSFS_bDeviceProtocol="00"
SYSFS_speed="12"
SYSFS_product="Standard USB Hub"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.0/usb1':
BUS="usb"
ID="usb1"
SYSFS_detach_state="0"
SYSFS_bNumConfigurations="1"
SYSFS_bNumInterfaces=" 1"
SYSFS_bConfigurationValue="1"
SYSFS_bmAttributes="40"
SYSFS_bMaxPower=" 0mA"
SYSFS_idVendor="0000"
SYSFS_idProduct="0000"
SYSFS_bcdDevice="0206"
SYSFS_bDeviceClass="09"
SYSFS_bDeviceSubClass="00"
SYSFS_bDeviceProtocol="00"
SYSFS_speed="12"
SYSFS_manufacturer="Linux 2.6.2-rc1-p4 uhci_hcd"
SYSFS_product="UHCI Host Controller"
SYSFS_serial="0000:00:1d.0"
looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.0':
BUS="pci"
ID="0000:00:1d.0"
SYSFS_detach_state="0"
SYSFS_vendor="0x8086"
SYSFS_device="0x2482"
SYSFS_subsystem_vendor="0x1014"
SYSFS_subsystem_device="0x0220"
SYSFS_class="0x0c0300"
SYSFS_irq="9"
looking at the device chain at '/sys/devices/pci0000:00':
BUS=""
ID="pci0000:00"
SYSFS_detach_state="0"