From: James Simmons Date: Tue, 16 Oct 2018 17:24:00 +0000 (-0400) Subject: LU-10626 test: create custom udev rule X-Git-Tag: 2.12.0-RC1~36 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=73ecd83a24e220b8097facf5bf3f5d93f523702c;ds=sidebyside LU-10626 test: create custom udev rule Some lustre developer do all their testing from their lustre source tree instead of installing it into an image. Since lustre is not installed into the image the udev rule for lctl set_param doesn't work since its not in /etc/udev/rules.d. Additonally udev rules require using the absolute paths for executables. To handle this setup create a special udev rule on the fly using $LCTL to be placed into /etc/udev/rules.d. Change-Id: I84c55450c866977650b3c6d4190e233a24eb03d8 Signed-off-by: James Simmons Reviewed-on: https://review.whamcloud.com/33143 Reviewed-by: Nathaniel Clark Reviewed-by: Andreas Dilger Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Oleg Drokin --- diff --git a/lustre/tests/test-framework.sh b/lustre/tests/test-framework.sh index 6eb5421..9caa3f7 100755 --- a/lustre/tests/test-framework.sh +++ b/lustre/tests/test-framework.sh @@ -610,6 +610,15 @@ load_modules_local() { return 0 fi + # Create special udev test rules on every node + if [ -f $LUSTRE/lustre/conf/99-lustre.rules ]; then { + sed -e 's|/usr/sbin/lctl|$LCTL|g' $LUSTRE/lustre/conf/99-lustre.rules > /etc/udev/rules.d/99-lustre-test.rules + } else { + echo "SUBSYSTEM==\"lustre\", ACTION==\"change\", ENV{PARAM}==\"?*\", RUN+=\"$LCTL set_param '\$env{PARAM}=\$env{SETTING}'\"" > /etc/udev/rules.d/99-lustre-test.rules + } fi + udevadm control --reload-rules + udevadm trigger + echo Loading modules from $LUSTRE local ncpus @@ -755,12 +764,20 @@ unload_modules() { $LUSTRE_RMMOD ldiskfs || return 2 + [ -f /etc/udev/rules.d/99-lustre-test.rules ] && + rm /etc/udev/rules.d/99-lustre-test.rules + udevadm control --reload-rules + udevadm trigger + if $LOAD_MODULES_REMOTE; then local list=$(comma_list $(remote_nodes_list)) if [ -n "$list" ]; then echo "unloading modules on: '$list'" do_rpc_nodes "$list" $LUSTRE_RMMOD ldiskfs do_rpc_nodes "$list" check_mem_leak + do_rpc_nodes "$list" "rm /etc/udev/rules.d/99-lustre-test.rules" + do_rpc_nodes "$list" "udevadm control --reload-rules" + do_rpc_nodes "$list" "udevadm trigger" fi fi