Hide Forgot
Description of problem: block device permissions are changed by udev rules only after running udevadm test (race or missing event). [root@rhev-i16c-05 ~]# stat /dev/dm-151 File: `/dev/dm-151' Size: 0 Blocks: 0 IO Block: 4096 block special file Device: 5h/5d Inode: 44104 Links: 1 Device type: fd,97 Access: (0660/brw-rw----) Uid: ( 0/ root) Gid: ( 6/ disk) Access: 2011-08-02 08:56:33.234160001 +0300 Modify: 2011-07-27 17:25:10.895908566 +0300 Change: 2011-07-27 17:25:10.895908566 +0300 [root@rhev-i16c-05 ~]# udevadm test /sys/block/dm-151/ run_command: calling: test udevadm_test: version 147 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. parse_file: reading '/lib/udev/rules.d/10-console.rules' as rules file parse_file: reading '/lib/udev/rules.d/10-dm.rules' as rules file parse_file: reading '/lib/udev/rules.d/11-dm-lvm.rules' as rules file parse_file: reading '/etc/udev/rules.d/12-vdsm-lvm.rules' as rules file parse_file: reading '/lib/udev/rules.d/13-dm-disk.rules' as rules file parse_file: reading '/lib/udev/rules.d/40-isdn.rules' as rules file parse_file: reading '/lib/udev/rules.d/40-multipath.rules' as rules file parse_file: reading '/lib/udev/rules.d/40-redhat.rules' as rules file parse_file: reading '/lib/udev/rules.d/42-qemu-usb.rules' as rules file parse_file: reading '/lib/udev/rules.d/50-firmware.rules' as rules file parse_file: reading '/lib/udev/rules.d/50-udev-default.rules' as rules file parse_file: reading '/etc/udev/rules.d/51-dlm.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-cdrom_id.rules' as rules file parse_file: reading '/etc/udev/rules.d/60-fprint-autosuspend.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-net.rules' as rules file parse_file: reading '/etc/udev/rules.d/60-pcmcia.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-persistent-alsa.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-persistent-input.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-persistent-serial.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-persistent-storage-tape.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-persistent-storage.rules' as rules file parse_file: reading '/lib/udev/rules.d/60-persistent-v4l.rules' as rules file parse_file: reading '/etc/udev/rules.d/60-raw.rules' as rules file parse_file: reading '/lib/udev/rules.d/61-mobile-action.rules' as rules file parse_file: reading '/lib/udev/rules.d/61-option-modem-modeswitch.rules' as rules file parse_file: reading '/lib/udev/rules.d/61-persistent-storage-edd.rules' as rules file parse_file: reading '/lib/udev/rules.d/64-device-mapper.rules' as rules file parse_file: reading '/lib/udev/rules.d/64-md-raid.rules' as rules file parse_file: reading '/lib/udev/rules.d/65-md-incremental.rules' as rules file parse_file: reading '/lib/udev/rules.d/70-acl.rules' as rules file parse_file: reading '/lib/udev/rules.d/70-cups-libusb.rules' as rules file parse_file: reading '/lib/udev/rules.d/70-hid2hci.rules' as rules file parse_file: reading '/etc/udev/rules.d/70-persistent-cd.rules' as rules file parse_file: reading '/lib/udev/rules.d/71-biosdevname.rules' as rules file parse_file: reading '/lib/udev/rules.d/75-cd-aliases-generator.rules' as rules file parse_file: reading '/lib/udev/rules.d/75-net-description.rules' as rules file parse_file: reading '/lib/udev/rules.d/75-persistent-net-generator.rules' as rules file parse_file: reading '/lib/udev/rules.d/75-tty-description.rules' as rules file parse_file: reading '/lib/udev/rules.d/78-sound-card.rules' as rules file parse_file: reading '/lib/udev/rules.d/79-fstab_import.rules' as rules file parse_file: reading '/lib/udev/rules.d/80-drivers.rules' as rules file parse_file: reading '/etc/udev/rules.d/80-kvm.rules' as rules file parse_file: reading '/lib/udev/rules.d/85-regulatory.rules' as rules file parse_file: reading '/lib/udev/rules.d/88-clock.rules' as rules file parse_file: reading '/lib/udev/rules.d/89-microcode.rules' as rules file parse_file: reading '/etc/udev/rules.d/90-alsa.rules' as rules file parse_file: reading '/etc/udev/rules.d/90-hal.rules' as rules file parse_file: reading '/etc/udev/rules.d/91-drm-modeset.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-dm-notify.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-keyboard-force-release.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-keymap.rules' as rules file parse_file: reading '/lib/udev/rules.d/95-udev-late.rules' as rules file parse_file: reading '/etc/udev/rules.d/98-kexec.rules' as rules file parse_file: reading '/dev/.udev/rules.d/99-root.rules' as rules file udev_rules_new: rules use 30732 bytes tokens (2561 * 12 bytes), 18969 bytes buffer udev_rules_new: temporary index used 18820 bytes (941 * 20 bytes) udev_device_new_from_syspath: device 0x7fb50ef5a7f0 has devpath '/devices/virtual/block/dm-151' udev_device_new_from_syspath: device 0x7fb50ef48990 has devpath '/devices/virtual/block/dm-151' udev_device_read_db: device 0x7fb50ef48990 filled with db file data udev_device_read_db: device 0x7fb50ef48990 filled with db file data udev_rules_apply_to_event: LINK 'mapper/9d165b50--1819--4b9c--83ac--d806de112b11-metadata' /lib/udev/rules.d/10-dm.rules:114 udev_rules_apply_to_event: IMPORT '/sbin/dmsetup splitname --nameprefixes --noheadings --rows 9d165b50--1819--4b9c--83ac--d806de112b11-metadata' /lib/udev/rules.d/11-dm-lvm.rules:21 util_run_program: '/sbin/dmsetup splitname --nameprefixes --noheadings --rows 9d165b50--1819--4b9c--83ac--d806de112b11-metadata' started util_run_program: '/sbin/dmsetup' (stdout) 'DM_VG_NAME='9d165b50-1819-4b9c-83ac-d806de112b11'' util_run_program: '/sbin/dmsetup' (stdout) 'DM_LV_NAME='metadata'' util_run_program: '/sbin/dmsetup' (stdout) 'DM_LV_LAYER=''' util_run_program: '/sbin/dmsetup splitname --nameprefixes --noheadings --rows 9d165b50--1819--4b9c--83ac--d806de112b11-metadata' returned with exitcode 0 udev_rules_apply_to_event: LINK '9d165b50-1819-4b9c-83ac-d806de112b11/metadata' /lib/udev/rules.d/11-dm-lvm.rules:30 udev_rules_apply_to_event: OWNER 36 /etc/udev/rules.d/12-vdsm-lvm.rules:26 udev_rules_apply_to_event: GROUP 107 /etc/udev/rules.d/12-vdsm-lvm.rules:26 udev_rules_apply_to_event: MODE 0600 /etc/udev/rules.d/12-vdsm-lvm.rules:26 udev_rules_apply_to_event: LINK 'disk/by-id/dm-name-9d165b50--1819--4b9c--83ac--d806de112b11-metadata' /lib/udev/rules.d/13-dm-disk.rules:17 udev_rules_apply_to_event: LINK 'disk/by-id/dm-uuid-LVM-GmLXLGCH8Irr1eH4gScVu0HzGRTIjH3PxwUrgQrBVsDYDnKen5t3pcBYXzi0PfD9' /lib/udev/rules.d/13-dm-disk.rules:18 udev_rules_apply_to_event: IMPORT '/sbin/blkid -o udev -p /dev/dm-151' /lib/udev/rules.d/13-dm-disk.rules:22 util_run_program: '/sbin/blkid -o udev -p /dev/dm-151' started util_run_program: '/sbin/blkid -o udev -p /dev/dm-151' returned with exitcode 2 udev_rules_apply_to_event: PROGRAM '/sbin/multipath -c /dev/dm-151' /lib/udev/rules.d/40-multipath.rules:11 util_run_program: '/sbin/multipath -c /dev/dm-151' started util_run_program: '/sbin/multipath' (stdout) 'Aug 02 09:04:44 | the -c option requires a path to check' util_run_program: '/sbin/multipath -c /dev/dm-151' returned with exitcode 1 udev_rules_apply_to_event: RUN 'socket:/org/kernel/dm/multipath_event' /lib/udev/rules.d/40-multipath.rules:16 udev_rules_apply_to_event: LINK 'block/253:151' /lib/udev/rules.d/50-udev-default.rules:3 udev_rules_apply_to_event: RUN 'socket:@/org/freedesktop/hal/udev_event' /etc/udev/rules.d/90-hal.rules:2 udev_event_execute_rules: no node name set, will use kernel supplied name 'dm-151' udev_device_update_db: created db file for '/devices/virtual/block/dm-151' in '/dev/.udev/db/block:dm-151' udev_node_add: creating device node '/dev/dm-151', devnum=253:151, mode=0660, uid=36, gid=107 udev_node_mknod: preserve file '/dev/dm-151', because it has correct dev_t udev_node_mknod: set permissions /dev/dm-151, 060660, uid=36, gid=107 link_find_prioritized: found '/sys/devices/virtual/block/dm-151' claiming '/dev/.udev/links/mapper\x2f9d165b50--1819--4b9c--83ac--d806de112b11-metadata' link_update: creating link '/dev/mapper/9d165b50--1819--4b9c--83ac--d806de112b11-metadata' to '/dev/dm-151' node_symlink: preserve already existing symlink '/dev/mapper/9d165b50--1819--4b9c--83ac--d806de112b11-metadata' to '../dm-151' link_find_prioritized: found '/sys/devices/virtual/block/dm-151' claiming '/dev/.udev/links/9d165b50-1819-4b9c-83ac-d806de112b11\x2fmetadata' link_update: creating link '/dev/9d165b50-1819-4b9c-83ac-d806de112b11/metadata' to '/dev/dm-151' node_symlink: preserve already existing symlink '/dev/9d165b50-1819-4b9c-83ac-d806de112b11/metadata' to '../dm-151' link_find_prioritized: found '/sys/devices/virtual/block/dm-151' claiming '/dev/.udev/links/disk\x2fby-id\x2fdm-name-9d165b50--1819--4b9c--83ac--d806de112b11-metadata' link_update: creating link '/dev/disk/by-id/dm-name-9d165b50--1819--4b9c--83ac--d806de112b11-metadata' to '/dev/dm-151' node_symlink: preserve already existing symlink '/dev/disk/by-id/dm-name-9d165b50--1819--4b9c--83ac--d806de112b11-metadata' to '../../dm-151' link_find_prioritized: found '/sys/devices/virtual/block/dm-151' claiming '/dev/.udev/links/disk\x2fby-id\x2fdm-uuid-LVM-GmLXLGCH8Irr1eH4gScVu0HzGRTIjH3PxwUrgQrBVsDYDnKen5t3pcBYXzi0PfD9' link_update: creating link '/dev/disk/by-id/dm-uuid-LVM-GmLXLGCH8Irr1eH4gScVu0HzGRTIjH3PxwUrgQrBVsDYDnKen5t3pcBYXzi0PfD9' to '/dev/dm-151' node_symlink: preserve already existing symlink '/dev/disk/by-id/dm-uuid-LVM-GmLXLGCH8Irr1eH4gScVu0HzGRTIjH3PxwUrgQrBVsDYDnKen5t3pcBYXzi0PfD9' to '../../dm-151' node_symlink: preserve already existing symlink '/dev/block/253:151' to '../dm-151' udevadm_test: UDEV_LOG=6 udevadm_test: DEVPATH=/devices/virtual/block/dm-151 udevadm_test: MAJOR=253 udevadm_test: MINOR=151 udevadm_test: DEVNAME=/dev/dm-151 udevadm_test: DEVTYPE=disk udevadm_test: ACTION=add udevadm_test: SUBSYSTEM=block udevadm_test: DM_SBIN_PATH=/sbin udevadm_test: DM_UDEV_PRIMARY_SOURCE_FLAG=1 udevadm_test: DM_UDEV_RULES_VSN=2 udevadm_test: DM_NAME=9d165b50--1819--4b9c--83ac--d806de112b11-metadata udevadm_test: DM_UUID=LVM-GmLXLGCH8Irr1eH4gScVu0HzGRTIjH3PxwUrgQrBVsDYDnKen5t3pcBYXzi0PfD9 udevadm_test: DM_SUSPENDED=0 udevadm_test: DEVLINKS=/dev/mapper/9d165b50--1819--4b9c--83ac--d806de112b11-metadata /dev/9d165b50-1819-4b9c-83ac-d806de112b11/metadata /dev/disk/by-id/dm-name-9d165b50--1819--4b9c--83ac--d806de112b11-metadata /dev/disk/by-id/dm-uuid-LVM-GmLXLGCH8Irr1eH4gScVu0HzGRTIjH3PxwUrgQrBVsDYDnKen5t3pcBYXzi0PfD9 /dev/block/253:151 udevadm_test: DM_VG_NAME=9d165b50-1819-4b9c-83ac-d806de112b11 udevadm_test: DM_LV_NAME=metadata udevadm_test: DM_LV_LAYER= udevadm_test: MPATH_SBIN_PATH=/sbin udevadm_test: run: 'socket:/org/kernel/dm/multipath_event' udevadm_test: run: 'socket:@/org/freedesktop/hal/udev_event' [root@rhev-i16c-05 ~]# stat /dev/dm-151 File: `/dev/dm-151' Size: 0 Blocks: 0 IO Block: 4096 block special file Device: 5h/5d Inode: 44104 Links: 1 Device type: fd,97 Access: (0660/brw-rw----) Uid: ( 36/ vdsm) Gid: ( 107/ qemu) Access: 2011-08-02 09:04:44.178007928 +0300 Modify: 2011-08-02 09:04:44.178007928 +0300 Change: 2011-08-02 09:04:44.178007928 +0300 Version-Release number of selected component (if applicable): [root@rhev-i16c-05 ~]# uname -r 2.6.32-171.el6.x86_64 [root@rhev-i16c-05 ~]# rpm -qa | grep udev libgudev1-147-2.35.el6.x86_64 python-gudev-147.1-4.el6_0.1.x86_64 udev-147-2.35.el6.x86_64 libudev-147-2.35.el6.x86_64 How reproducible: Steps to Reproduce: 1. 2. 3. Actual results: Expected results: Additional info:
so, what is this /etc/udev/rules.d/12-vdsm-lvm.rules file?
# # Copyright 2010 Red Hat, Inc. and/or its affiliates. # # Licensed to you under the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. See the files README and # LICENSE_GPL_v2 which accompany this distribution. # # Udev rules for LVM. # # These rules create symlinks for LVM logical volumes in # /dev/VG directory (VG is an actual VG name). Some udev # environment variables are set (they can be used in later # rules as well): # DM_LV_NAME - logical volume name # DM_VG_NAME - volume group name # DM_LV_LAYER - logical volume layer (blank if not set) # "add" event is processed on coldplug only, so we need "change", too. ACTION!="add|change", GOTO="lvm_end" # Fix ownership for RHEV volumes ENV{DM_VG_NAME}=="[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]", ENV{DM_LV_NAME}=="[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]", OWNER:="vdsm", GROUP:="qemu", GOTO="lvm_end" ENV{DM_VG_NAME}=="[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]", ENV{DM_LV_NAME}=="_remove_me_[a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9]_[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]", OWNER:="vdsm", GROUP:="qemu", GOTO="lvm_end" ENV{DM_VG_NAME}=="[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]", ENV{DM_LV_NAME}=="metadata", MODE:="0600", OWNER:="vdsm", GROUP:="qemu", GOTO="lvm_end" ENV{DM_VG_NAME}=="[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]", ENV{DM_LV_NAME}=="ids", MODE:="0600", OWNER:="vdsm", GROUP:="qemu", GOTO="lvm_end" ENV{DM_VG_NAME}=="[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]", ENV{DM_LV_NAME}=="inbox", MODE:="0600", OWNER:="vdsm", GROUP:="qemu", GOTO="lvm_end" ENV{DM_VG_NAME}=="[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]", ENV{DM_LV_NAME}=="outbox", MODE:="0600", OWNER:="vdsm", GROUP:="qemu", GOTO="lvm_end" ENV{DM_VG_NAME}=="[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]", ENV{DM_LV_NAME}=="leases", MODE:="0600", OWNER:="vdsm", GROUP:="qemu", GOTO="lvm_end" # FIXME: make special lvs vdsm-only readable (MODE doesn't work) LABEL="lvm_end"
So, you are relying on /lib/udev/rules.d/11-dm-lvm.rules to set DM_*_NAME Why not put udev into debugging mode via /etc/udev/udev.conf and inspect /var/log/messages, to see what is going on in normal mode.
Maybe 'udevadm test --action=add' makes it work?
-i have put udev on debug- nothing significant (to my taste) is shown in the log, i have tried to reload multipathd so that udev event may cause the change (didn't help) - as well -nothing in messages. -'udevadm test --action=add' is working as regular udevadm test - after running it permissions are changed but since I'm working with lots of dm devices problem is happening on a different device. can you please access the machine and debug it, will provide the details on irc.
So, a first bug is, that udev sets permission "0660" even though mode was explicitly set to "0600" and a GROUP was specified.
Although, changing the behavior here, could lead to regressions. Setting a group without giving permissions, does not make sense anyway.