REMOVE_CMD not always populated
Hi:
In testing the hid2hci stuff that landed in udev-146 and the kernel patch that Alan Stern submitted to fix the race condition with uevents, i've been finding that udev doesn't alway populate REMOVE_CMD even when the rule is matching it. I'm not really sure where to start looking to debug.
Here's what the udev DB looks like when REMOVE_CMD doesn't get added:
$ udevadm info --query=all --path=/devices/pci0000:00/0000:00:04.0/usb3/3-4/3-4.3 P: /devices/pci0000:00/0000:00:04.0/usb3/3-4/3-4.3 N: bus/usb/003/009 S: char/189:264 E: DEVPATH=/devices/pci0000:00/0000:00:04.0/usb3/3-4/3-4.3 E: MAJOR=189 E: MINOR=264 E: DEVNAME=/dev/bus/usb/003/009 E: DEVTYPE=usb_device E: DRIVER=usb E: PRODUCT=413c/8156/456 E: TYPE=224/1/1 E: BUSNUM=003 E: DEVNUM=009 E: ID_VENDOR=Dell_Computer_Corp E: ID_VENDOR_ENC=Dell\x20Computer\x20Corp E: ID_VENDOR_ID=413c E: ID_MODEL=Dell_Wireless_370_Bluetooth_Mini-card E: ID_MODEL_ENC=Dell\x20Wireless\x20370\x20Bluetooth\x20Mini-card E: ID_MODEL_ID=8156 E: ID_REVISION=0456 E: ID_SERIAL=Dell_Computer_Corp_Dell_Wireless_370_Bluetooth_Mini-card E: ID_BUS=usb E: ID_USB_INTERFACES=:e00101:ffffff:fe0100: E: DEVLINKS=/dev/char/189:264
So you can see no REMOVE_CMD. If I run a udevadm test run against the device, the REMOVE_CMD is listed.
$udevadm test /devices/pci0000:00/0000:00:04.0/usb3/3-4/3-4.3 2>&1run_command: calling: testudevadm_test: version 146add_matching_files: unable to open '/usr/etc/udev/rules.d': No such file or directoryparse_file: reading '/usr/libexec/rules.d/50-firmware.rules' as rules fileparse_file: reading '/usr/libexec/rules.d/50-udev-default.rules' as rules fileparse_file: reading '/usr/libexec/rules.d/60-cdrom_id.rules' as rules fileparse_file: reading '/usr/libexec/rules.d/60-persistent-alsa.rules' as rules fileparse_file: reading '/usr/libexec/rules.d/60-persistent-input.rules' as rules fileparse_file: reading '/usr/libexec/rules.d/60-persistent-serial.rules' as rules fileparse_file: reading '/usr/libexec/rules.d/60-persistent-storage-tape.rules' as rules fileparse_file: reading '/usr/libexec/rules.d/60-persistent-storage.rules' as rules fileparse_file: reading '/usr/libexec/rules.d/60-persistent-v4l.rules' as rules fileparse_file: reading '/usr/libexec/rules.d/61-mobile-action.rules' as rules fileparse_file: reading '/usr/libexec/rules.d/61-option-modem-modeswitch.rules' as rules fileparse_file: reading '/usr/libexec/rules.d/61-persistent-storage-edd.rules' as rules fileparse_file: reading '/usr/libexec/rules.d/70-acl.rules' as rules fileparse_file: reading '/usr/libexec/rules.d/70-hid2hci.rules' as rules fileparse_file: reading '/usr/libexec/rules.d/75-cd-aliases-generator.rules' as rules fileparse_file: reading '/usr/libexec/rules.d/75-net-description.rules' as rules fileparse_file: reading '/usr/libexec/rules.d/75-persistent-net-generator.rules' as rules fileparse_file: reading '/usr/libexec/rules.d/75-tty-description.rules' as rules fileparse_file: reading '/usr/libexec/rules.d/78-sound-card.rules' as rules fileparse_file: reading '/usr/libexec/rules.d/79-fstab_import.rules' as rules fileparse_file: reading '/usr/libexec/rules.d/80-drivers.rules' as rules fileparse_file: reading '/usr/libexec/rules.d/95-keymap.rules' as rules fileparse_file: reading '/usr/libexec/rules.d/95-udev-late.rules' as rules fileudev_rules_new: rules use 18744 bytes tokens (1562 * 12 bytes), 11469 bytes bufferudev_rules_new: temporary index used 12360 bytes (618 * 20 bytes) udev_device_new_from_syspath: device 0x862e5d0 has devpath '/devices/pci0000:00/0000:00:04.0/usb3/3-4/3-4.3' udev_device_new_from_syspath: device 0x861ba28 has devpath '/devices/pci0000:00/0000:00:04.0/usb3/3-4/3-4.3'udev_device_read_db: device 0x861ba28 filled with db file dataudev_rules_apply_to_event: LINK 'char/189:264' /usr/libexec/rules.d/50-udev-default.rules:4udev_rules_apply_to_event: MODE 0664 /usr/libexec/rules.d/50-udev-default.rules:54udev_rules_apply_to_event: NAME 'bus/usb/003/009' /usr/libexec/rules.d/50-udev-default.rules:54 udev_device_new_from_syspath: device 0x861bcd8 has devpath '/devices/pci0000:00/0000:00:04.0/usb3/3-4' udev_device_new_from_syspath: device 0x861c178 has devpath '/devices/pci0000:00/0000:00:04.0/usb3'udev_device_new_from_syspath: device 0x861c2c0 has devpath '/devices/pci0000:00/0000:00:04.0'udev_device_new_from_syspath: device 0x861c400 has devpath '/devices/pci0000:00'udev_rules_apply_to_event: IMPORT 'usb_id --export /devices/pci0000:00/0000:00:04.0/usb3/3-4/3-4.3' /usr/libexec/rules.d/70-acl.rules:7util_run_program: 'usb_id --export /devices/pci0000:00/0000:00:04.0/usb3/3-4/3-4.3' startedutil_run_program: '/usr/libexec/usb_id' (stdout) 'ID_VENDOR=Dell_Computer_Corp'util_run_program: '/usr/libexec/usb_id' (stdout) 'ID_VENDOR_ENC=Dell\x20Computer\x20Corp'util_run_program: '/usr/libexec/usb_id' (stdout) 'ID_VENDOR_ID=413c'util_run_program: '/usr/libexec/usb_id' (stdout) 'ID_MODEL=Dell_Wireless_370_Bluetooth_Mini-card'util_run_program: '/usr/libexec/usb_id' (stdout) 'ID_MODEL_ENC=Dell\x20Wireless\x20370\x20Bluetooth\x20Mini-card'util_run_program: '/usr/libexec/usb_id' (stdout) 'ID_MODEL_ID=8156'util_run_program: '/usr/libexec/usb_id' (stdout) 'ID_REVISION=0456'util_run_program: '/usr/libexec/usb_id' (stdout) 'ID_SERIAL=Dell_Computer_Corp_Dell_Wireless_370_Bluetooth_Mini-card'util_run_program: '/usr/libexec/usb_id' (stdout) 'ID_BUS=usb'util_run_program: '/usr/libexec/usb_id' (stdout) 'ID_USB_INTERFACES=:e00101:ffffff:fe0100:'util_run_program: 'usb_id --export /devices/pci0000:00/0000:00:04.0/usb3/3-4/3-4.3' returned with exitcode 0udev_device_update_db: unable to create db file '/dev/.udev/db/\x2fdevices\x2fpci0000:00\x2f0000:00:04.0\x2fusb3\x2f3-4\x2f3-4.3':
Permission deniedudev_node_add: creating device node '/dev/bus/usb/003/009', devnum=189:264, mode=0664, uid=0, gid=0udev_node_mknod: preserve file '/dev/bus/usb/003/009', because it has correct dev_tupdate_link: '/dev/char/189:264' with target '/dev/bus/usb/003/009' has the highest priority 0, create itnode_symlink: preserve already existing symlink '/dev/char/189:264' to '../bus/usb/003/009'udevadm_test: UDEV_LOG=6udevadm_test: DEVPATH=/devices/pci0000:00/0000:00:04.0/usb3/3-4/3-4.3udevadm_test: MAJOR=189udevadm_test: MINOR=264udevadm_test: DEVNAME=/dev/bus/usb/003/009udevadm_test: DEVTYPE=usb_deviceudevadm_test: DRIVER=usbudevadm_test: PRODUCT=413c/8156/456udevadm_test: TYPE=224/1/1udevadm_test: BUSNUM=003udevadm_test: DEVNUM=009udevadm_test: ACTION=addudevadm_test: SUBSYSTEM=usbudevadm_test: DEVLINKS=/dev/char/189:264udevadm_test: ID_VENDOR=Dell_Computer_Corpudevadm_test: ID_VENDOR_ENC=Dell\x20Computer\x20Corpudevadm_test: ID_VENDOR_ID=413cudevadm_test: ID_MODEL=Dell_Wireless_370_Bluetooth_Mini-cardudevadm_test: ID_MODEL_ENC=Dell\x20Wireless\x20370\x20Bluetooth\x20Mini-cardudevadm_test: ID_MODEL_ID=8156udevadm_test: ID_REVISION=0456udevadm_test:
ID_SERIAL=Dell_Computer_Corp_Dell_Wireless_370_Bluetooth_Mini-cardudevadm_test: ID_BUS=usbudevadm_test: ID_USB_INTERFACES=:e00101:ffffff:fe0100:udevadm_test: REMOVE_CMD=/sbin/udevadm trigger --action=change --subsystem-match=usb --property-match=HID2HCI_SWITCH=1
This program is for debugging only, it does not run any program, specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.
Signature · 3 lines
Mario Limonciello *Dell | Linux Engineering* [email protected]
On Mon, Aug 17, 2009 at 20:27, Mario
Limonciello<[email protected]> wro> Hi:
Quoted 6 lines
In testing the hid2hci stuff that landed in udev-146 and the kernel patch that Alan Stern submitted to fix the race condition with uevents, i've been finding that udev doesn't alway populate
REMOVE_CMDeven when the rule is matching it. Â I'm not really sure where to start looking to debug.
Seems, something does not match as expected then. Care to add some random variable for various combinations of the matching keys, to see if you can reproduce a pattern, and get a hint what we might need to fix. It could be som problem with the attribute creation vs. event timing.
Kay