where the event for the disk (last event) should come before the
events for the partitons. We skipped events for dependency reasons,
but the dependency check for later events did not see the skipped
events.
Kay Sievers [Wed, 21 Mar 2007 12:55:48 +0000 (13:55 +0100)]
usb_id: append target:lun to storage device serial
Some broken usb-storage devices implement multiple
luns with all the same SCSI identifiers. Append the
target:lun to get unique names in /dev/disk/by-id/.
Kay Sievers [Sun, 18 Mar 2007 11:51:57 +0000 (12:51 +0100)]
priority based symlink handling
Symlinks can have priorities now, the priority is assigned to the device
and specified with OPTIONS="link_priority=100". Devices with higher
priorities overwrite the symlinks of devices with lower priorities.
If the device, that currently owns the link goes away, the symlink
will be removed, and recreated, pointing to the next device with the
highest actual priority.
This should solve the issue, that inserting an USB-stick may overwrite the
/dev/disk/by-id/-link of another disk, and removes the entire link after the
USB-stick is disconnected. If no priorities are specified, the new link will
overwrite the current one, and if the device goes away, it will restore
the old link. It should be possible to assign lower priorities to removable
devices, if needed.
In multipath setups, we see several devices, which all connect to the same
volume, and therefore all try to create the same metadata-links. The
different path-devices are combined into one device-mapper device, which also
contains the same metadata. It should be possible, to assign multipath-table
device-mapper devices a higher priority, so path-devices that appear and
disappear, will not overwrite or delete the device-mapper device links.
It occurs, when root-partition has no /dev/console, meaning that kernel
could not open it, and such udevd is started without open filedescriptors
0 1 2. In that case udevd openes its sockets (netlink and control). They
get fds between 0 and 2. Later duping /dev/null to 0 1 2 closes the sockets
and replaces them with /dev/null.
The error condition can also be reproduced by starting udevd with this
command-line:
udevd --daemon <&- >&- 2>&-
Kay Sievers [Mon, 12 Mar 2007 12:17:23 +0000 (13:17 +0100)]
delete dasd_id, it moved to s390-tools
These s390-tools-1.6.0 (applicable for the "October 2005 stream") replace s390-tools-1.5.4.
New tools:
* tape390_crypt: Tool to control and query crypto settings for 3592 zSeries tape devices.
* mon_fsstatd: Daemon that writes filesystem utilization data to the z/VM monitor stream.
* dumpconf: Allows to configure the dump device used for system dump in case a kernel panic occurs.
* dasdinfo: Display unique DASD ID, either uid or volser.
* 59-dasd.rules: udev rules for unique DASD device nodes created in /dev/disk/.
Sergey Vlasov [Thu, 1 Feb 2007 19:18:52 +0000 (20:18 +0100)]
fix %c $string substitution
Fix udev_rules_apply_format() to give error messages for unknown
format elements and pass such elements to the output string
unmodified.
When truncating the substitution string to the length specified in the
format string, head[len] = '\0' could write outside the buffer if that
length was too large.
Sergey Vlasov [Tue, 23 Jan 2007 18:55:38 +0000 (19:55 +0100)]
unlink old database file before creating a new one
udev_db_add_device() can be called when the corressponding database
entry already exists - it should overwrite the old entry in this case.
However, if the old entry was a symlink, fopen(filename, "w") will not
overwrite it properly - it will keep the symlink and create a file
named after the symlink target. Calling unlink(filename) before
trying to create the database file fixes the problem.
Russell Coker [Tue, 5 Dec 2006 13:32:44 +0000 (14:32 +0100)]
SELinux: label created symlink instead of node
The current code will label the target of a symlink rather than the
link itself. This means that the link does not get it's context set
and the target gets the wrong context.
Incidentally this affects the labelling of hard disk device nodes and
can get in the way of booting.
Also get_media() should not be called with devname==NULL.