Bug 704308

Summary: udev rule fails to apply specified group membership
Product: Red Hat Enterprise Linux 6 Reporter: Tim Wilkinson <twilkins>
Component: udevAssignee: Harald Hoyer <harald>
Status: CLOSED NOTABUG QA Contact: qe-baseos-daemons
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 6.1CC: brezhnev, dshaks, ssaha, tmichael
Target Milestone: rc   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Performance Engineering test cluster
Last Closed: 2011-05-13 22:25:59 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Tim Wilkinson 2011-05-12 18:16:46 UTC
Description of problem:
----------------------
Created a udev rule to apply oracle ownership as required for RAC installation with ASM without ASMlib. 



Component Version-Release:
-------------------------
udev-147.2.34.el6 x86_64
libgudev1-147.2.34.el6 x86_64
libudev-147.2.34.el6 x86_64
kernel-2.6.32.125.el6 x86_64



How reproducible:
----------------
consistent



Steps to Reproduce:
------------------
1. Create udev rules file /etc/udev/rules.d/20-oracle-asmdevices.rules using the syntax as specified in a combination of RH KB DOC-45628 [How can static names be assigned for SCSI devices using udev in Red Hat Enterprise Linux 6?] and Oracle 11gR2 Grid install documentation at http://download.oracle.com/docs/cd/E11882_01/install.112/e17212/storage.htm#CWLIN304 [Configuring Disk Devices Manually for Oracle ASM].

2. /sbin/start_udev



Actual results:
--------------
After start_udev or a reboot, the specified multipath devs remain owned by root.

Even if the ownership is changed by hand, start_udev will result in their being owned by root again.



Expected results:
----------------
After start_udev or a reboot, udev identifies the device matching the WWID specified in RESULTS= and the dev filter specified KERNEL=, assigns owner.group to oracle.oinstall 



Additional info:
---------------
Example rule attempted ...

  KERNEL=="/dev/dm-*", BUS=="scsi", 
  PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace --device=%N", 
  RESULT=="3600c0ff0001122167ceb914d01000000", OWNER="oracle", 
  GROUP="oinstall", MODE="0660"

The KERNEL attribute filter has tried /dev/mapper/msa11_ocr, /dev/dm-18, /dev/dm-*, and the underlying /dev/sd* devs, none of which seem to make a difference.



# udevadm test /block/dm-18 2>&1
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 '/lib/udev/rules.d/13-dm-disk.rules' as rules file
parse_file: reading '/etc/udev/rules.d/20-oracle-asmdevices.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-net.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 '/lib/udev/rules.d/80-tuned-iosched.rules' as rules file
parse_file: reading '/lib/udev/rules.d/80-tuned-mpath-iosched.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 31464 bytes tokens (2622 * 12 bytes), 18990 bytes buffer
udev_rules_new: temporary index used 19320 bytes (966 * 20 bytes)
udev_device_new_from_syspath: device 0x7f8053f71fc0 has devpath '/devices/virtual/block/dm-18'
udev_device_new_from_syspath: device 0x7f8053f71ca0 has devpath '/devices/virtual/block/dm-18'
udev_device_read_db: device 0x7f8053f71ca0 filled with db file data
udev_rules_apply_to_event: LINK 'mapper/msa11_ocr' /lib/udev/rules.d/10-dm.rules:114
udev_rules_apply_to_event: LINK 'disk/by-id/dm-name-msa11_ocr' /lib/udev/rules.d/13-dm-disk.rules:17
udev_rules_apply_to_event: LINK 'disk/by-id/dm-uuid-mpath-3600c0ff0001122167ceb914d01000000' /lib/udev/rules.d/13-dm-disk.rules:18
udev_rules_apply_to_event: IMPORT '/sbin/blkid -o udev -p /dev/dm-18' /lib/udev/rules.d/13-dm-disk.rules:22
util_run_program: '/sbin/blkid -o udev -p /dev/dm-18' started
util_run_program: '/sbin/blkid' (stdout) 'ID_FS_TYPE=oracleasm'
util_run_program: '/sbin/blkid' (stdout) 'ID_FS_USAGE=filesystem'
util_run_program: '/sbin/blkid -o udev -p /dev/dm-18' returned with exitcode 0
udev_rules_apply_to_event: PROGRAM '/sbin/multipath -c /dev/dm-18' /lib/udev/rules.d/40-multipath.rules:11
util_run_program: '/sbin/multipath -c /dev/dm-18' started
util_run_program: '/sbin/multipath' (stdout) 'May 12 14:04:07 | the -c option requires a path to check'
util_run_program: '/sbin/multipath -c /dev/dm-18' 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:18' /lib/udev/rules.d/50-udev-default.rules:3
udev_rules_apply_to_event: GROUP 6 /lib/udev/rules.d/50-udev-default.rules:76
udev_rules_apply_to_event: IMPORT 'fstab_import dm-18 mapper/msa11_ocr disk/by-id/dm-name-msa11_ocr disk/by-id/dm-uuid-mpath-3600c0ff0001122167ceb914d01000000 block/253:18 mapper/msa11_ocr' /lib/udev/rules.d/79-fstab_import.rules:1
util_run_program: 'fstab_import dm-18 mapper/msa11_ocr disk/by-id/dm-name-msa11_ocr disk/by-id/dm-uuid-mpath-3600c0ff0001122167ceb914d01000000 block/253:18 mapper/msa11_ocr' started
util_run_program: 'fstab_import dm-18 mapper/msa11_ocr disk/by-id/dm-name-msa11_ocr disk/by-id/dm-uuid-mpath-3600c0ff0001122167ceb914d01000000 block/253:18 mapper/msa11_ocr' returned with exitcode 1
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-18'
udev_device_update_db: created db file for '/devices/virtual/block/dm-18' in '/dev/.udev/db/block:dm-18'
udev_node_add: creating device node '/dev/dm-18', devnum=253:18, mode=0660, uid=0, gid=6
udev_node_mknod: preserve file '/dev/dm-18', because it has correct dev_t
udev_node_mknod: set permissions /dev/dm-18, 060660, uid=0, gid=6
link_find_prioritized: found '/sys/devices/virtual/block/dm-18' claiming '/dev/.udev/links/mapper\x2fmsa11_ocr'
link_update: creating link '/dev/mapper/msa11_ocr' to '/dev/dm-18'
node_symlink: preserve already existing symlink '/dev/mapper/msa11_ocr' to '../dm-18'
link_find_prioritized: found '/sys/devices/virtual/block/dm-18' claiming '/dev/.udev/links/disk\x2fby-id\x2fdm-name-msa11_ocr'
link_update: creating link '/dev/disk/by-id/dm-name-msa11_ocr' to '/dev/dm-18'
node_symlink: preserve already existing symlink '/dev/disk/by-id/dm-name-msa11_ocr' to '../../dm-18'
link_find_prioritized: found '/sys/devices/virtual/block/dm-18' claiming '/dev/.udev/links/disk\x2fby-id\x2fdm-uuid-mpath-3600c0ff0001122167ceb914d01000000'
link_update: creating link '/dev/disk/by-id/dm-uuid-mpath-3600c0ff0001122167ceb914d01000000' to '/dev/dm-18'
node_symlink: preserve already existing symlink '/dev/disk/by-id/dm-uuid-mpath-3600c0ff0001122167ceb914d01000000' to '../../dm-18'
node_symlink: preserve already existing symlink '/dev/block/253:18' to '../dm-18'
udevadm_test: UDEV_LOG=6
udevadm_test: DEVPATH=/devices/virtual/block/dm-18
udevadm_test: MAJOR=253
udevadm_test: MINOR=18
udevadm_test: DEVNAME=/dev/dm-18
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=msa11_ocr
udevadm_test: DM_UUID=mpath-3600c0ff0001122167ceb914d01000000
udevadm_test: DM_SUSPENDED=0
udevadm_test: DEVLINKS=/dev/mapper/msa11_ocr /dev/disk/by-id/dm-name-msa11_ocr /dev/disk/by-id/dm-uuid-mpath-3600c0ff0001122167ceb914d01000000 /dev/block/253:18
udevadm_test: ID_FS_TYPE=oracleasm
udevadm_test: ID_FS_USAGE=filesystem
udevadm_test: MPATH_SBIN_PATH=/sbin
udevadm_test: run: 'socket:/org/kernel/dm/multipath_event'
udevadm_test: run: 'socket:@/org/freedesktop/hal/udev_event'

Comment 2 RHEL Program Management 2011-05-13 06:00:48 UTC
Since RHEL 6.1 External Beta has begun, and this bug remains
unresolved, it has been rejected as it is not proposed as
exception or blocker.

Red Hat invites you to ask your support representative to
propose this request, if appropriate and relevant, in the
next release of Red Hat Enterprise Linux.

Comment 3 Aleksandr Brezhnev 2011-05-13 16:40:08 UTC
Please, remove BUS="scsi" from your rule and repeat the test.

Comment 4 Tim Wilkinson 2011-05-13 19:28:23 UTC
This syntax (no BUS=, no full path to dev) seems to successfully apply disk ownership but not group membership.

KERNEL=="dm-*", PROGRAM=="/sbin/scsi_id --whitelisted --replace-whitespace
--device=%N", RESULT=="3600c0ff0001122167ceb914d01000000", OWNER="oracle",
GROUP="oinstall", MODE="0660"

Comment 5 Aleksandr Brezhnev 2011-05-13 20:01:52 UTC
Rename your rule to 51-oracle-asmdevices.rules

Comment 7 Tim Wilkinson 2011-05-13 22:25:59 UTC
(In reply to comment #5)
> Rename your rule to 51-oracle-asmdevices.rules

That resolves my issue and works very well. Thanks.