Hello, managed to test and bugfix the udev rules. Simply dropping all files into /etc/udev/rules.d/ is enough, and an "udevadm test /block/<drive_dev>/<partition_dev>" (dryrun) for a raid member seems to run ok and tells me it would execute the appropriate script. However, for me, un- and re-plugging a device still does not seem to execute the script. The _possibly-redundant-disk.sh currently logs into /tmp/timeout-tst, but udev events don't appear there. If you have the possiblity to test this in your /etc/udev/rules.d/ setup, it would be much appreciated. Cheers, Chris # /etc/udev/rules.d/99-test_mdadm_smartctl-timeouts.rules SUBSYSTEM!="block", GOTO="md_inc_end" # handle potential components of arrays (the ones supported by md) ENV{ID_FS_TYPE}=="linux_raid_member", GOTO="md_inc" # "noiswmd" on kernel command line stops mdadm from handling # "isw" (aka IMSM - Intel RAID). # "nodmraid" on kernel command line stops mdadm from handling # "isw" or "ddf". IMPORT{cmdline}="noiswmd" IMPORT{cmdline}="nodmraid" ENV{nodmraid}=="?*", GOTO="md_inc_end" ENV{ID_FS_TYPE}=="ddf_raid_member", GOTO="md_inc" ENV{noiswmd}=="?*", GOTO="md_inc_end" ENV{ID_FS_TYPE}=="isw_raid_member", GOTO="md_inc" GOTO="md_inc_end" LABEL="md_inc" # initialize redundancy possibility status # (only the kernel module could set actual run-time state, and may in the future # set a dynamic FASTFAIL kernel device property instead of calling smartctl-timeout scripts) IMPORT{program}="/sbin/mdadm --examine --export $tempnode" ENV{MD_LEVEL}=="raid[1-9]*", ENV{REDUNDANT_DEV}="possibly" ENV{MD_LEVEL}=="raid0", ENV{REDUNDANT_DEV}="false" LABEL="md_inc_end" # call initial HDD error correction timeouts adjustment ENV{DEVTYPE}=="partition", ENV{REDUNDANT_DEV}=="possibly", TEST=="/usr/sbin/smartctl", RUN+="/etc/udev/rules.d/smartctl-timeouts_possibly-redundant-partition.sh $parent" ENV{DEVTYPE}=="partition", ENV{REDUNDANT_DEV}=="false|", TEST=="/usr/sbin/smartctl", RUN+="/etc/udev/rules.d/smartctl-timeouts_non-redundant-partition.sh $parent" ENV{DEVTYPE}=="disk", ENV{REDUNDANT_DEV}=="possibly", TEST=="/usr/sbin/smartctl", RUN+="/etc/udev/rules.d/smartctl-timeouts_posibly-redundant-disk.sh $devnode" ENV{DEVTYPE}=="disk", ENV{REDUNDANT_DEV}=="false", TEST=="/usr/sbin/smartctl", RUN+="/etc/udev/rules.d/smartctl-timeouts_non-redundant-disk.sh $devnode"
Attachment:
smartctl-timeouts_udevadm-test.tar.gz
Description: GNU Zip compressed data