diff --git a/lustre/tests/run-llog.sh b/lustre/tests/run-llog.sh
index 1b808e995ce6c3d93aa28c0d6487f248fade8bee..76e707e1cb7a75fbc74ba276af2af33e4db70cfa 100644
--- a/lustre/tests/run-llog.sh
+++ b/lustre/tests/run-llog.sh
@@ -1,15 +1,28 @@
 #!/bin/bash
+
+load_llog_test() {
+    grep -q llog_test /proc/modules && return
+    # Module should have been placed with other lustre modules...
+    modprobe llog_test
+    grep -q llog_test /proc/modules && return
+    # But maybe we're running from a developer tree...
+    insmod ../obdclass/llog_test.ko
+    grep -q llog_test /proc/modules && return
+    # This is for 2.4 kernels (deprecated!)
+    insmod ../obdclass/llog_test.o
+    grep -q llog_test /proc/modules && return
+    echo "Unable to load llog_test module!"
+    false
+    return
+}
+
 PATH=`dirname $0`:`dirname $0`/../utils:$PATH
 TMP=${TMP:-/tmp}
 
 MDS=`ls $LPROC/mds | grep -v num_refs | head -n 1`
 [ -z "$MDS" ] && echo "no MDS available, skipping llog test" && exit 0
 
-case `uname -r` in
-2.4.*) insmod ../obdclass/llog_test.o || exit 1 ;;
-2.6.*) insmod ../obdclass/llog_test.ko || exit 1 ;;
-*) echo "unknown kernel version `uname -r`" && exit 99 ;;
-esac
+load_llog_test || exit 0
 lctl modules > $TMP/ogdb-`hostname`
 echo "NOW reload debugging syms.."