- An earlier update was made to increase the amount of udev workers when some workers were stuck during network module loading, but an incorrect semaphore counter was used. As a consequence, the amount of workers was not increased, and if all workers were busy, timeouts could occur and some events were not correctly processed. With this update, the correct semaphore counter is used, and the amount of available workers now increases as expected.
- The udev tool did not run the ata_id helper for ATA/ATAPI devices (SPC-3 or later) using the SCSI subsystem. Consequently, those devices, mostly DVD and CD drives, had no ID_SERIAL entry in the udev database and therefore no symbolic link in the /dev/disk/by-id/ directory. With this update, udev calls the ata_id helper on those devices, and the symbolic link in /dev/disk/by-id/ is now present as expected.
- The information displayed for SAS drives in the /dev/disk/by-path/ directory was not a "path" reference, but an "id" reference. Consequently, the symbolic link for SAS drives in /dev/disk/by-path/ changed if the "id" of a component changed. The original scheme uses the disk's SAS address and LUN, and the new scheme introduced by this update uses the SAS address of the nearest expander (if available) and the PHY ID number of the connection. For compatibility reasons, the old symbolic link still exists and a new ID_SAS_PATH environment variable determines a new symbolic link.
- The udev rules that load a kernel module for a device worked only if the device did not have a driver already, and some modules were not loaded despite being needed. Now, the udev rule no longer checks for the driver.
- Previously, udev was extended to set the firmware timeout from 60 seconds to 10 minutes to prevent firmware loading timeouts. However, in the early boot phase, the file that is supposed to set this timeout is not present yet. Consequently, an error message was displayed, informing that the /sys/class/firmware timeout file does not exist. Now, udev no longer displays an error message in the described situation.
- If udev processed the uevent queue for a device that was already removed, the internal handling failed to process an already removed device. Consequently, some symbolic links were not removed for these devices. Now, udev no longer relies on the existence of a device when dealing with the backlog of the uevent queue, and all symbolic links are removed as expected.
- If "udevlog" is specified on the kernel command line to debug udev, all udev logs are stored in the /dev/.udev/udev.log file. Running a system with the udev debug log turned on and using "udevlog" on the kernel command line for an extended period of time could cause /dev/.udev/udev.log to become very large and the devtmpfs mounted on /dev to become full. Consequently, if /dev became full, no new symbolic links and device nodes could be included. With this update, start_udev contains a verbose warning message describing the possibility.
- The ata_id helper of udev did not swap all bytes of the firmware revision information. As a consequence, the firmware revision information of ATA disks stored in the udev database had its last two digits swapped. The ata_id helper has been modified to also swap the last two characters of the firmware revision, and the firmware revision information of ATA disks is now correct.