Hide Forgot
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'
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.
Please, remove BUS="scsi" from your rule and repeat the test.
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"
Rename your rule to 51-oracle-asmdevices.rules
(In reply to comment #5) > Rename your rule to 51-oracle-asmdevices.rules That resolves my issue and works very well. Thanks.