summaryrefslogtreecommitdiff
path: root/src/udev
Commit message (Collapse)AuthorAgeFilesLines
* tree-wide: drop input.h when missing_input.h is includedYu Watanabe2019-11-041-1/+0
|
* tree-wide: drop stdio.h when stdio-util.h is includedYu Watanabe2019-11-045-5/+0
|
* tree-wide: drop signal.h when signal-util.h is includedYu Watanabe2019-11-042-2/+0
|
* tree-wide: drop socket.h when socket-util.h is includedYu Watanabe2019-11-042-2/+0
|
* tree-wide: drop libkmod.h when module-util.h is includedYu Watanabe2019-11-041-1/+0
|
* tree-wide: drop blkid.h when blkid-util.h is includedYu Watanabe2019-11-041-1/+0
|
* tree-wide: drop string.h when string-util.h or friends are includedYu Watanabe2019-11-0413-13/+0
|
* tree-wide: drop missing.hYu Watanabe2019-10-311-1/+2
|
* test: move {test,fuzz}-fido-id-desc.c into src/udev/fido_idYu Watanabe2019-10-313-1/+121
|
* network: support matching based on wifi interfece typeYu Watanabe2019-10-251-2/+2
|
* basic/fs-util: change CHASE_OPEN flag into a separate output parameterZbigniew Jędrzejewski-Szmek2019-10-241-2/+2
| | | | | | | | | | | | | chase_symlinks() would return negative on error, and either a non-negative status or a non-negative fd when CHASE_OPEN was given. This made the interface quite complicated, because dependning on the flags used, we would get two different "types" of return object. Coverity was always confused by this, and flagged every use of chase_symlinks() without CHASE_OPEN as a resource leak (because it would this that an fd is returned). This patch uses a saparate output parameter, so there is no confusion. (I think it is OK to have functions which return either an error or an fd. It's only returning *either* an fd or a non-fd that is confusing.)
* udev/cdrom_id: Do not open CD-rom in exclusive mode.Michal Suchanek2019-10-241-23/+1
| | | | | | | | | | | | | | When you have a CD automunt solution that talks directly to the kernel independently of udev it races with cdrom_id for exclusive access to the device failing unpredictably. The whole is_mounted function in cdrom_id is broken: there is no saying what happens between calling is_mounted and opening the device. Hence assume that the device can be mounted asynchronously at any time, do not use exclusive access, and do away with is_mouted. Signed-off-by: Michal Suchanek <msuchanek@suse.de>
* network: add support matching based on BSSID=Yu Watanabe2019-10-151-2/+2
|
* network: support matching based on wifi SSIDYu Watanabe2019-10-151-2/+2
|
* udev: introduce CONST key nameJan Synacek2019-10-141-0/+20
| | | | | | | | | | | | Currently, there is no way to match against system-wide constants, such as architecture or virtualization type, without forking helper binaries. That potentially results in a huge number of spawned processes which output always the same answer. This patch introduces a special CONST keyword which takes a hard-coded string as its key and returns a value assigned to that key. Currently implemented are CONST{arch} and CONST{virt}, which can be used to match against the system's architecture and virtualization type.
* Merge pull request #13761 from dtardon/program-nameYu Watanabe2019-10-143-5/+7
|\ | | | | udev: do not hardcode program name
| * udev: do not hardcode program nameDavid Tardon2019-10-112-4/+6
| |
| * udev/fido_id: fix program name in usage outputDavid Tardon2019-10-111-1/+1
| |
* | udev: fix memleak caused by wrong cleanup functionYu Watanabe2019-10-131-1/+1
|/ | | | Fixes #13764.
* ata_id: Add check for fixed format sense codes (#13654)Ryan Attard2019-10-041-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Original revisions of the SAT (SCSI-ATA Translation) specification required that all sense data be reported in Descriptor Format (72h). Later revisions specifcally allow and account for sense data being reported in Fixed Format (70h). The current code checks for a Descriptor Format sense structure (0x72), then looks specifically at the first byte of the first descriptor for the ATA specific code 0x9, cross referencing it with the first byte which is just a length field 0x0c (as a sanity check). In the Fixed Format case(0x70), we can fall back to using the top-level SCSI Sense data for the Additional Sense code (0x0) and then the Additional Sense Code Qualifier (0x1d), That identifies that the sense data is of the format associated with: `ATA PASS THROUGH INFORMATION AVAILABLE`. This fallback mechanism retains support for SATLs compliant with ANSI INCITS 431-2007, and enables support for Fixed Format Sense data enabled by SATLs with later revisions. Glad to do so. This patch allows ata_id to export attributes correctly. I believe that any drive can potentially return information in this format on any SATL using the libata-scsi (the Linux builtin SATL), but in this particular case, it appears it is the SATL itself. Attaching the disk to the AHCI controller changes the behavior impacted here. (Not entirely surprisingly, SATLs are are pretty inconsistent). Test: This case specifically is an LSI SATL. I'll illustrate that without the patch, ata_id does not return any output for a valid SATA drive but after the patch does. 1. Verify the device is ATA, by looking at the vpd page specific to ATA drives ``` root@machine:~# sg_vpd -p ai /dev/sdn ATA information VPD page: SAT Vendor identification: LSI SAT Product identification: LSI SATL SAT Product revision level: 0008 Device signature indicates SATA transport ATA command IDENTIFY DEVICE response summary: model: HGST HUH728080ALE604 serial number: ZZZZH3VX firmware revision: A4GNW7J0 ``` 2. Look at what udev thinks of the disk, it says ID_BUS=scsi ATA information says ID_MODEL should be HGST_HUH728080ALE604 udev says it is HGST_HUH728080AL (Missing E604, 4 bytes), and no ATA attributes are populated. ``` root@machine:~# udevadm info -q all /dev/sdn P: /devices/pci0000:00/0000:00:03.0/0000:05:00.0/host2/port-2:0/expander-2:0/port-2:0:11/end_device-2:0:11/target2:0:11/2:0:11:0/block/sdn N: sdn S: disk/by-id/scsi-35000cca23be1dc3c S: disk/by-id/wwn-0x5000cca23be1dc3c S: disk/by-path/pci-0000:05:00.0-sas-exp0x500605b0000272bf-phy11-lun-0 E: DEVLINKS=/dev/disk/by-id/wwn-0x5000cca23be1dc3c /dev/disk/by-id/scsi-35000cca23be1dc3c /dev/disk/by-path/pci-0000:05:00.0-sas-exp0x500605b0000272bf-phy11-lun-0 E: DEVNAME=/dev/sdn E: DEVPATH=/devices/pci0000:00/0000:00:03.0/0000:05:00.0/host2/port-2:0/expander-2:0/port-2:0:11/end_device-2:0:11/target2:0:11/2:0:11:0/block/sdn E: DEVTYPE=disk E: ID_BUS=scsi E: ID_MODEL=HGST_HUH728080AL E: ID_MODEL_ENC=HGST\x20HUH728080AL E: ID_PATH=pci-0000:05:00.0-sas-exp0x500605b0000272bf-phy11-lun-0 E: ID_PATH_TAG=pci-0000_05_00_0-sas-exp0x500605b0000272bf-phy11-lun-0 E: ID_REVISION=W7J0 E: ID_SCSI=1 E: ID_SCSI_SERIAL=ZZZZH3VX E: ID_SERIAL=35000cca23be1dc3c E: ID_SERIAL_SHORT=5000cca23be1dc3c E: ID_TYPE=disk E: ID_VENDOR=ATA E: ID_VENDOR_ENC=ATA\x20\x20\x20\x20\x20 E: ID_WWN=0x5000cca23be1dc3c E: ID_WWN_WITH_EXTENSION=0x5000cca23be1dc3c E: MAJOR=8 E: MINOR=208 E: SUBSYSTEM=block E: TAGS=:systemd: ``` 3. Run ata_id (unpatched) (Outputs nothing, RC=2) ``` root@machine:~# strace -e ioctl /lib/udev/ata_id /dev/sdn -x ioctl(3, SG_IO, {'Q', BSG_PROTOCOL_SCSI, BSG_SUB_PROTOCOL_SCSI_CMD, request[6]=[12, 00, 00, 00, 24, 00], request_tag=0, request_attr=0, request_priority=0, request_extra=0, max_response_len=32, dout_iovec_count=0, dout_xfer_len=0, din_iovec_count=0, din_xfer_len=36, timeout=30000, flags=0, usr_ptr=0, spare_in=0, dout[0]=NULL}) = -1 EINVAL (Invalid argument) ioctl(3, SG_IO, {'S', SG_DXFER_FROM_DEV, cmd[6]=[12, 00, 00, 00, 24, 00], mx_sb_len=32, iovec_count=0, dxfer_len=36, timeout=30000, flags=0, data[36]=[00, 00, 06, 12, 45, 00, 00, 02, 41, 54, 41, 20, 20, 20, 20, 20, 48, 47, 53, 54, 20, 48, 55, 48, 37, 32, 38, 30, 38, 30, 41, 4c, ...], status=00, masked_status=00, sb[0]=[], host_status=0, driver_status=0, resid=0, duration=1, info=0}) = 0 ioctl(3, SG_IO, {'Q', BSG_PROTOCOL_SCSI, BSG_SUB_PROTOCOL_SCSI_CMD, request[12]=[a1, 08, 2e, 00, 01, 00, 00, 00, 00, ec, 00, 00], request_tag=0, request_attr=0, request_priority=0, request_extra=0, max_response_len=32, dout_iovec_count=0, dout_xfer_len=0, din_iovec_count=0, din_xfer_len=512, timeout=30000, flags=0, usr_ptr=0, spare_in=0, dout[0]=NULL}) = -1 EINVAL (Invalid argument) ioctl(3, SG_IO, {'S', SG_DXFER_FROM_DEV, cmd[12]=[a1, 08, 2e, 00, 01, 00, 00, 00, 00, ec, 00, 00], mx_sb_len=32, iovec_count=0, dxfer_len=512, timeout=30000, flags=0, data[0]=[], status=02, masked_status=01, sb[18]=[70, 00, 01, 00, 00, 00, 00, 0a, 00, 00, 00, 00, 00, 1d, 00, 00, 00, 00], host_status=0, driver_status=0x8, resid=512, duration=0, info=0x1}) = 0 ioctl(3, HDIO_GET_IDENTITY, 0x7ffe408f7590) = -1 EINVAL (Invalid argument) +++ exited with 2 +++ ``` Sense buffers visible with the strace: `sb[18]=[70, 00, 01, 00, 00, 00, 00, 0a, 00, 00, 00, 00, 00, 1d, 00, 00, 00, 00]` is the important bit, see 70, 0a and 1d bytes 4. Run patched version: model is HGST_HUH728080ALE604 as expected, ATA attributes are correctly populated. ``` root@machine:~# ./ata_id /dev/sdn -x ID_ATA=1 ID_TYPE=disk ID_BUS=ata ID_MODEL=HGST_HUH728080ALE604 ID_MODEL_ENC=HGST\x20HUH728080ALE604\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20 ID_REVISION=A4GNW7J0 ID_SERIAL=HGST_HUH728080ALE604_ZZZZH3VX ID_SERIAL_SHORT=ZZZZH3VX ID_ATA_WRITE_CACHE=1 ID_ATA_WRITE_CACHE_ENABLED=1 ID_ATA_FEATURE_SET_HPA=1 ID_ATA_FEATURE_SET_HPA_ENABLED=1 ID_ATA_FEATURE_SET_PM=1 ID_ATA_FEATURE_SET_PM_ENABLED=1 ID_ATA_FEATURE_SET_SECURITY=1 ID_ATA_FEATURE_SET_SECURITY_ENABLED=0 ID_ATA_FEATURE_SET_SECURITY_ERASE_UNIT_MIN=66522 ID_ATA_FEATURE_SET_SMART=1 ID_ATA_FEATURE_SET_SMART_ENABLED=1 ID_ATA_FEATURE_SET_PUIS=1 ID_ATA_FEATURE_SET_PUIS_ENABLED=0 ID_ATA_FEATURE_SET_APM=1 ID_ATA_FEATURE_SET_APM_ENABLED=1 ID_ATA_FEATURE_SET_APM_CURRENT_VALUE=254 ID_ATA_DOWNLOAD_MICROCODE=1 ID_ATA_SATA=1 ID_ATA_SATA_SIGNAL_RATE_GEN2=1 ID_ATA_SATA_SIGNAL_RATE_GEN1=1 ID_ATA_ROTATION_RATE_RPM=7200 ID_WWN=0x5000cca23be1dc3c ID_WWN_WITH_EXTENSION=0x5000cca23be1dc3c ``` 5. Drop it in place and verify: we see that ata_id does work. ``` root@hw1-b01left-2212a:~# udevadm test /block/sdn <truncated> GROUP 6 /lib/udev/rules.d/50-udev-default.rules:55 IMPORT 'ata_id --export /dev/sdn' /lib/udev/rules.d/60-persistent-storage.rules:33 starting 'ata_id --export /dev/sdn' 'ata_id --export /dev/sdn'(out) 'ID_ATA=1' 'ata_id --export /dev/sdn'(out) 'ID_TYPE=disk' 'ata_id --export /dev/sdn'(out) 'ID_BUS=ata' 'ata_id --export /dev/sdn'(out) 'ID_MODEL=HGST_HUH728080ALE604' 'ata_id --export /dev/sdn'(out) 'ID_MODEL_ENC=HGST\x20HUH728080ALE604\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20' 'ata_id --export /dev/sdn'(out) 'ID_REVISION=A4GNW7J0' 'ata_id --export /dev/sdn'(out) 'ID_SERIAL=HGST_HUH728080ALE604_ZZZZH3VX' 'ata_id --export /dev/sdn'(out) 'ID_SERIAL_SHORT=ZZZZH3VX' 'ata_id --export /dev/sdn'(out) 'ID_ATA_WRITE_CACHE=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_WRITE_CACHE_ENABLED=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_HPA=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_HPA_ENABLED=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_PM=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_PM_ENABLED=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_SECURITY=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_SECURITY_ENABLED=0' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_SECURITY_ERASE_UNIT_MIN=66522' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_SMART=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_SMART_ENABLED=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_PUIS=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_PUIS_ENABLED=0' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_APM=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_APM_ENABLED=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_FEATURE_SET_APM_CURRENT_VALUE=254' 'ata_id --export /dev/sdn'(out) 'ID_ATA_DOWNLOAD_MICROCODE=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_SATA=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_SATA_SIGNAL_RATE_GEN2=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_SATA_SIGNAL_RATE_GEN1=1' 'ata_id --export /dev/sdn'(out) 'ID_ATA_ROTATION_RATE_RPM=7200' 'ata_id --export /dev/sdn'(out) 'ID_WWN=0x5000cca23be1dc3c' 'ata_id --export /dev/sdn'(out) 'ID_WWN_WITH_EXTENSION=0x5000cca23be1dc3c' Process 'ata_id --export /dev/sdn' succeeded. LINK 'disk/by-id/ata-HGST_HUH728080ALE604_ZZZZH3VX' /lib/udev/rules.d/60-persistent-storage.rules:47 IMPORT builtin 'path_id' /lib/udev/rules.d/60-persistent-storage.rules:65 LINK 'disk/by-path/pci-0000:05:00.0-sas-exp0x500605b0000272bf-phy11-lun-0' /lib/udev/rules.d/60-persistent-storage.rules:66 IMPORT builtin 'blkid' /lib/udev/rules.d/60-persistent-storage.rules:81 probe /dev/sdn raid offset=0 LINK 'disk/by-id/wwn-0x5000cca23be1dc3c' /lib/udev/rules.d/60-persistent-storage.rules:88 RUN '/usr/lib/python-dsnet-appliance/hotplug disk udev-disk-add' /etc/udev/rules.d/99-appliance-hotplug.rules:1 update old name, '/dev/disk/by-id/scsi-35000cca23be1dc3c' no longer belonging to '/devices/pci0000:00/0000:00:03.0/0000:05:00.0/host2/port-2:0/expander-2:0/port-2:0:11/end_device-2:0:11/target2:0:11/2:0:11:0/block/sdn' no reference left, remove '/dev/disk/by-id/scsi-35000cca23be1dc3c' handling device node '/dev/sdn', devnum=b8:208, mode=0660, uid=0, gid=6 preserve permissions /dev/sdn, 060660, uid=0, gid=6 preserve already existing symlink '/dev/block/8:208' to '../sdn' creating link '/dev/disk/by-id/ata-HGST_HUH728080ALE604_ZZZZH3VX' to '/dev/sdn' creating symlink '/dev/disk/by-id/ata-HGST_HUH728080ALE604_ZZZZH3VX' to '../../sdn' found 'b8:208' claiming '/run/udev/links/\x2fdisk\x2fby-id\x2fwwn-0x5000cca23be1dc3c' creating link '/dev/disk/by-id/wwn-0x5000cca23be1dc3c' to '/dev/sdn' preserve already existing symlink '/dev/disk/by-id/wwn-0x5000cca23be1dc3c' to '../../sdn' found 'b8:208' claiming '/run/udev/links/\x2fdisk\x2fby-path\x2fpci-0000:05:00.0-sas-exp0x500605b0000272bf-phy11-lun-0' creating link '/dev/disk/by-path/pci-0000:05:00.0-sas-exp0x500605b0000272bf-phy11-lun-0' to '/dev/sdn' preserve already existing symlink '/dev/disk/by-path/pci-0000:05:00.0-sas-exp0x500605b0000272bf-phy11-lun-0' to '../../sdn' created db file '/run/udev/data/b8:208' for '/devices/pci0000:00/0000:00:03.0/0000:05:00.0/host2/port-2:0/expander-2:0/port-2:0:11/end_device-2:0:11/target2:0:11/2:0:11:0/block/sdn' ACTION=add DEVLINKS=/dev/disk/by-path/pci-0000:05:00.0-sas-exp0x500605b0000272bf-phy11-lun-0 /dev/disk/by-id/ata-HGST_HUH728080ALE604_ZZZZH3VX /dev/disk/by-id/wwn-0x5000cca23be1dc3c DEVNAME=/dev/sdn DEVPATH=/devices/pci0000:00/0000:00:03.0/0000:05:00.0/host2/port-2:0/expander-2:0/port-2:0:11/end_device-2:0:11/target2:0:11/2:0:11:0/block/sdn DEVTYPE=disk ID_ATA=1 ID_ATA_DOWNLOAD_MICROCODE=1 ID_ATA_FEATURE_SET_APM=1 ID_ATA_FEATURE_SET_APM_CURRENT_VALUE=254 ID_ATA_FEATURE_SET_APM_ENABLED=1 ID_ATA_FEATURE_SET_HPA=1 ID_ATA_FEATURE_SET_HPA_ENABLED=1 ID_ATA_FEATURE_SET_PM=1 ID_ATA_FEATURE_SET_PM_ENABLED=1 ID_ATA_FEATURE_SET_PUIS=1 ID_ATA_FEATURE_SET_PUIS_ENABLED=0 ID_ATA_FEATURE_SET_SECURITY=1 ID_ATA_FEATURE_SET_SECURITY_ENABLED=0 ID_ATA_FEATURE_SET_SECURITY_ERASE_UNIT_MIN=66522 ID_ATA_FEATURE_SET_SMART=1 ID_ATA_FEATURE_SET_SMART_ENABLED=1 ID_ATA_ROTATION_RATE_RPM=7200 ID_ATA_SATA=1 ID_ATA_SATA_SIGNAL_RATE_GEN1=1 ID_ATA_SATA_SIGNAL_RATE_GEN2=1 ID_ATA_WRITE_CACHE=1 ID_ATA_WRITE_CACHE_ENABLED=1 ID_BUS=ata ID_MODEL=HGST_HUH728080ALE604 ID_MODEL_ENC=HGST\x20HUH728080ALE604\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20 ID_PATH=pci-0000:05:00.0-sas-exp0x500605b0000272bf-phy11-lun-0 ID_PATH_TAG=pci-0000_05_00_0-sas-exp0x500605b0000272bf-phy11-lun-0 ID_REVISION=A4GNW7J0 ID_SERIAL=HGST_HUH728080ALE604_ZZZZH3VX ID_SERIAL_SHORT=ZZZZH3VX ID_TYPE=disk ID_WWN=0x5000cca23be1dc3c ID_WWN_WITH_EXTENSION=0x5000cca23be1dc3c MAJOR=8 MINOR=208 SUBSYSTEM=block TAGS=:systemd: USEC_INITIALIZED=6055690 run: '/usr/lib/python-dsnet-appliance/hotplug disk udev-disk-add' Unload module index Unloaded link configuration context. ``` 6. Query just to double check: (ID_BUS=ata, model correct, etc). ``` root@machine:~# udevadm info /dev/sdn P: /devices/pci0000:00/0000:00:03.0/0000:05:00.0/host2/port-2:0/expander-2:0/port-2:0:11/end_device-2:0:11/target2:0:11/2:0:11:0/block/sdn N: sdn S: disk/by-id/ata-HGST_HUH728080ALE604_ZZZZH3VX S: disk/by-id/wwn-0x5000cca23be1dc3c S: disk/by-path/pci-0000:05:00.0-sas-exp0x500605b0000272bf-phy11-lun-0 E: DEVLINKS=/dev/disk/by-id/wwn-0x5000cca23be1dc3c /dev/disk/by-path/pci-0000:05:00.0-sas-exp0x500605b0000272bf-phy11-lun-0 /dev/disk/by-id/ata-HGST_HUH728080ALE604_ZZZZH3VX E: DEVNAME=/dev/sdn E: DEVPATH=/devices/pci0000:00/0000:00:03.0/0000:05:00.0/host2/port-2:0/expander-2:0/port-2:0:11/end_device-2:0:11/target2:0:11/2:0:11:0/block/sdn E: DEVTYPE=disk E: ID_ATA=1 E: ID_ATA_DOWNLOAD_MICROCODE=1 E: ID_ATA_FEATURE_SET_APM=1 E: ID_ATA_FEATURE_SET_APM_CURRENT_VALUE=254 E: ID_ATA_FEATURE_SET_APM_ENABLED=1 E: ID_ATA_FEATURE_SET_HPA=1 E: ID_ATA_FEATURE_SET_HPA_ENABLED=1 E: ID_ATA_FEATURE_SET_PM=1 E: ID_ATA_FEATURE_SET_PM_ENABLED=1 E: ID_ATA_FEATURE_SET_PUIS=1 E: ID_ATA_FEATURE_SET_PUIS_ENABLED=0 E: ID_ATA_FEATURE_SET_SECURITY=1 E: ID_ATA_FEATURE_SET_SECURITY_ENABLED=0 E: ID_ATA_FEATURE_SET_SECURITY_ERASE_UNIT_MIN=66522 E: ID_ATA_FEATURE_SET_SMART=1 E: ID_ATA_FEATURE_SET_SMART_ENABLED=1 E: ID_ATA_ROTATION_RATE_RPM=7200 E: ID_ATA_SATA=1 E: ID_ATA_SATA_SIGNAL_RATE_GEN1=1 E: ID_ATA_SATA_SIGNAL_RATE_GEN2=1 E: ID_ATA_WRITE_CACHE=1 E: ID_ATA_WRITE_CACHE_ENABLED=1 E: ID_BUS=ata E: ID_MODEL=HGST_HUH728080ALE604 E: ID_MODEL_ENC=HGST\x20HUH728080ALE604\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20 E: ID_PATH=pci-0000:05:00.0-sas-exp0x500605b0000272bf-phy11-lun-0 E: ID_PATH_TAG=pci-0000_05_00_0-sas-exp0x500605b0000272bf-phy11-lun-0 E: ID_REVISION=A4GNW7J0 E: ID_SERIAL=HGST_HUH728080ALE604_ZZZZH3VX E: ID_SERIAL_SHORT=ZZZZH3VX E: ID_TYPE=disk E: ID_WWN=0x5000cca23be1dc3c E: ID_WWN_WITH_EXTENSION=0x5000cca23be1dc3c E: MAJOR=8 E: MINOR=208 E: SUBSYSTEM=block E: TAGS=:systemd: E: USEC_INITIALIZED=6055690 ``` If I install the same disk into a machine using an ATA driver, this behavior changes: ``` root@machine2:~# sg_vpd -p ai /dev/sdb ATA information VPD page: SAT Vendor identification: linux SAT Product identification: libata SAT Product revision level: 3.00 Device signature indicates SATA transport ATA command IDENTIFY DEVICE response summary: model: HGST HUH728080ALE604 serial number: ZZZZH3VX firmware revision: A4GNW7J0 root@machine-2:~# /lib/udev/ata_id -x /dev/sdb ID_ATA=1 ID_TYPE=disk ID_BUS=ata ID_MODEL=HGST_HUH728080ALE604 ID_MODEL_ENC=HGST\x20HUH728080ALE604\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20 ID_REVISION=A4GNW7J0 <truncated> ```
* Merge pull request #13246 from keszybz/add-SystemdOptions-efi-variableZbigniew Jędrzejewski-Szmek2019-10-031-1/+1
|\ | | | | Add efi variable to augment /proc/cmdline
| * util-lib: split shared/efivars into basic/efivars and shared/efi-loaderZbigniew Jędrzejewski-Szmek2019-09-161-1/+1
| | | | | | | | | | | | I want to use efivars.[ch] in proc-cmdline.c, but most of the efivars stuff is not needed in basic/. Move the file from shared/ to basic/, but then move back most of the higher-level functions to the new shared/efi-loader.c file.
* | udevadm trigger: do not propagate EACCES and ENODEVYu Watanabe2019-10-021-2/+4
| | | | | | | | | | | | | | | | Inside container, writing file returns EACCESS. Moreover, some devices return ENODEV rather than EACCES. So, let's also ignore these two error causes. Closes #13652.
* | link: Add support to configure NIC ring buffer sizeSusant Sahani2019-09-243-0/+9
| |
* | udevadm: use usec_add()Yu Watanabe2019-09-181-5/+4
| | | | | | | | Also fixes description of event source.
* | udevadm: missing initialization of descriptorYu Watanabe2019-09-181-0/+1
|/
* Merge pull request #13519 from yuwata/udev-fix-multi-matchZbigniew Jędrzejewski-Szmek2019-09-131-34/+47
|\ | | | | udev: fix multi match
| * udev: fix multi matchYu Watanabe2019-09-111-34/+47
| | | | | | | | Fixes #13518.
* | udev: also logs file permissionYu Watanabe2019-09-091-1/+1
| |
* | udev: add missing flag for OPTIONS=static_nodeYu Watanabe2019-09-091-0/+3
|/ | | | Fixes RHBZ#1740664.
* udev: Add id program and rule for FIDO security tokensFabian Henneke2019-09-074-0/+199
| | | | | | | | | | | | | | Add a fido_id program meant to be run for devices in the hidraw subsystem via an IMPORT directive. The program parses the HID report descriptor and assigns the ID_SECURITY_TOKEN environment variable if a declared usage matches the FIDO_CTAPHID_USAGE declared in the FIDO CTAP specification. This replaces the previous approach of whitelisting all known security token models manually. This commit is accompanied by a test suite and a fuzzer target for the descriptor parsing routine. Fixes: #11996.
* udev: do not try to import properties on commented out linesYu Watanabe2019-08-041-2/+8
| | | | Fixes #13257.
* udev-node: fix misleading log messagesYu Watanabe2019-08-031-5/+15
| | | | | | | | This fixes the following logs: ``` drm_dp_aux2: Handling device node '/dev/drm_dp_aux2', devnum=c238:2, mode=037777777777, uid=4294967295, gid=4294967295 drm_dp_aux2: Preserve permissions of /dev/drm_dp_aux2, 037777777777, uid=4294967295, gid=4294967295 ```
* udev-event: log device name on spawning commandsYu Watanabe2019-08-031-19/+28
|
* udev: warn on rules files with weird access modesLennart Poettering2019-07-291-0/+2
|
* tree-wide: drop duplicated blank linesYu Watanabe2019-07-152-3/+0
| | | | | | | ``` $ for i in */*.[ch] */*/*.[ch]; do sed -e '/^$/ {N; s/\n$//g}' -i $i; done $ git checkout HEAD -- basic/linux shared/linux ```
* udev: make Match.OriginalName=* matches all interfacesYu Watanabe2019-07-131-2/+2
| | | | Fixes #13035.
* tree-wide: some more [static] related fixesLennart Poettering2019-07-123-0/+6
| | | | | | | | | | | let's add [static] where it was missing so far Drop [static] on parameters that can be NULL. Add an assert() around parameters that have [static] and can't be NULL hence. Add some "const" where it was forgotten.
* Merge pull request #13022 from keszybz/coverity-cleanupsLennart Poettering2019-07-121-13/+16
|\ | | | | Coverity cleanups
| * udevd: add helper with error handling to synthesize "change" eventsZbigniew Jędrzejewski-Szmek2019-07-121-13/+16
| | | | | | | | | | Coverity was unhappy that we ignore the return value from write_string_file(). We should at least warn. CID#1302373.
* | tree-wide: make use of errno_or_else() everywhereLennart Poettering2019-07-111-1/+2
| |
* | udevadm: ensure 'udevadm info -w' show updated resultYu Watanabe2019-07-111-1/+6
|/ | | | This seems not necessary, but just for safety.
* Merge pull request #12926 from keszybz/urlify-logsLennart Poettering2019-07-111-1/+2
|\ | | | | Urlify CONFIG_FILE and improve SYSTEMD_LOG_LOCATION
| * udevd: open log output earlyZbigniew Jędrzejewski-Szmek2019-07-041-1/+2
| | | | | | | | | | We'd log to the "console", losing structured logs during configuration file parsing. Let's be nice to journalctl users, and log to the journal immediately.
* | Merge pull request #12888 from yuwata/network-udev-property-supportZbigniew Jędrzejewski-Szmek2019-07-013-25/+15
|\ \ | |/ |/| network,udev: add Property= setting in [Match] section
| * network,udev: add Property= setting in [Match] sectionYu Watanabe2019-07-013-2/+5
| | | | | | | | Closes #5665.
| * network,udev: make net_match_config() take sd_deviceYu Watanabe2019-07-011-19/+6
| |
| * network,udev: fix multiple invert matching linesYu Watanabe2019-07-011-4/+4
| | | | | | | | | | | | | | | | | | | | Previously, ``` [Match] Name=!aaa Name=!bbb ``` does not work. This fixes the issue.
* | udev: accept lines which have only PROGRAM=Yu Watanabe2019-07-011-1/+1
|/ | | | As PROGRAM= may cause side effect, and users may expect that.
* Merge pull request #12910 from keszybz/udev-kvmYu Watanabe2019-06-302-28/+24
|\ | | | | Fix permissions on /dev/kvm