export REFORMAT=${REFORMAT:-""}
export WRITECONF=${WRITECONF:-""}
export VERBOSE=${VERBOSE:-false}
-export CATASTROPHE=${CATASTROPHE:-/proc/sys/lnet/catastrophe}
export GSS=false
export GSS_KRB5=false
export GSS_PIPEFS=false
$LCTL modules > $OGDB/ogdb-$HOSTNAME
# 'mount' doesn't look in $PATH, just sbin
- local MOUNT_LUSTRE=$LUSTRE/utils/mount.lustre
- if [ -f $MOUNT_LUSTRE ]; then
- if grep -qe "/sbin/mount\.lustre " /proc/mounts; then
- cmp $MOUNT_LUSTRE /sbin/mount.lustre ||
- umount /sbin/mount.lustre
+ local mount_lustre=$LUSTRE/utils/mount.lustre
+ if [ -f $mount_lustre ]; then
+ local sbin_mount=/sbin/mount.lustre
+ if grep -qe "$sbin_mount " /proc/mounts; then
+ cmp $mount_lustre $sbin_mount || umount $sbin_mount
fi
- if ! grep -qe "/sbin/mount\.lustre " /proc/mounts; then
- [ ! -f /sbin/mount.lustre ] && touch /sbin/mount.lustre
- mount --bind $MOUNT_LUSTRE /sbin/mount.lustre
+ if ! grep -qe "$sbin_mount " /proc/mounts; then
+ [ ! -f "$sbin_mount" ] && touch "$sbin_mount"
+ if [ ! -s "$sbin_mount" -a -w "$sbin_mount" ]; then
+ cat <<- EOF > "$sbin_mount"
+ #!/bin/sh
+ #STUB MARK
+ echo "This $sbin_mount just a mountpoint." 1>&2
+ echo "It is never supposed to be run." 1>&2
+ logger -p emerg -- "using stub $sbin_mount $@"
+ exit 1
+ EOF
+ chmod a+x $sbin_mount
+ fi
+ mount --bind $mount_lustre $sbin_mount ||
+ error "can't bind $mount_lustre to $sbin_mount"
fi
fi
}
fi
fi
- if grep -qe "/sbin/mount\.lustre" /proc/mounts; then
- umount /sbin/mount.lustre || true
- [ -w /sbin/mount.lustre -a ! -s /sbin/mount.lustre ] && \
- rm -f /sbin/mount.lustre || true
- fi
+ local sbin_mount=/sbin/mount.lustre
+ if grep -qe "$sbin_mount " /proc/mounts; then
+ umount $sbin_mount || true
+ [ -s $sbin_mount ] && ! grep -q "STUB MARK" $sbin_mount ||
+ rm -f $sbin_mount
+ fi
- check_mem_leak || return 254
+ check_mem_leak || return 254
- echo "modules unloaded."
- return 0
+ echo "modules unloaded."
+ return 0
}
fs_log_size() {
fi
if [ -n "$LGSS_KEYRING_DEBUG" ]; then
- echo $LGSS_KEYRING_DEBUG > /proc/fs/lustre/sptlrpc/gss/lgss_keyring/debug_level
+ lctl set_param -n \
+ sptlrpc.gss.lgss_keyring.debug_level=$LGSS_KEYRING_DEBUG
fi
fi
}
# verify that lustre actually cleaned up properly
cleanup_check() {
- [ -f "$CATASTROPHE" ] && [[ $(< $CATASTROPHE) -ne 0 ]] &&
- error "LBUG/LASSERT detected"
+ VAR=$(lctl get_param -n catastrophe 2>&1)
+ if [ $? = 0 ] ; then
+ if [ $VAR != 0 ]; then
+ error "LBUG/LASSERT detected"
+ fi
+ fi
BUSY=$(dmesg | grep -i destruct || true)
if [ -n "$BUSY" ]; then
echo "$BUSY" 1>&2
cleanupall -f || error "cleanup failed"
unset I_MOUNTED
fi
-
- if grep -qe "/sbin/mount\.lustre " /proc/mounts; then
- umount /sbin/mount.lustre
- fi
}
#######
return $RC
}
-drop_bl_callback() {
+drop_bl_callback_once() {
+ rc=0
+ do_facet client lctl set_param ldlm.namespaces.*.early_lock_cancel=0
#define OBD_FAIL_LDLM_BL_CALLBACK_NET 0x305
- RC=0
do_facet client lctl set_param fail_loc=0x80000305
- do_facet client "$@" || RC=$?
+ do_facet client "$@" || rc=$?
do_facet client lctl set_param fail_loc=0
- return $RC
+ do_facet client lctl set_param ldlm.namespaces.*.early_lock_cancel=1
+ return $rc
+}
+
+drop_bl_callback() {
+ rc=0
+ do_facet client lctl set_param ldlm.namespaces.*.early_lock_cancel=0
+#define OBD_FAIL_LDLM_BL_CALLBACK_NET 0x305
+ do_facet client lctl set_param fail_loc=0x305
+ do_facet client "$@" || rc=$?
+ do_facet client lctl set_param fail_loc=0
+ do_facet client lctl set_param ldlm.namespaces.*.early_lock_cancel=1
+ return $rc
}
drop_ldlm_reply() {
cancel_lru_locks() {
$LCTL mark "cancel_lru_locks $1 start"
- for d in `lctl get_param -N ldlm.namespaces.*.lru_size | egrep -i $1`; do
- $LCTL set_param -n $d=clear
- done
- $LCTL get_param ldlm.namespaces.*.lock_unused_count | egrep -i $1 | grep -v '=0'
+
+ if [ $1 != "MGC" ]; then
+ for d in $(lctl get_param -N ldlm.namespaces.*.lru_size |
+ egrep -i $1); do
+ $LCTL set_param -n $d=clear
+ done
+ $LCTL get_param ldlm.namespaces.*.lock_unused_count | egrep -i $1 |
+ grep -v '=0'
+ else
+ for d in $(find \
+ /{proc,sys}/fs/lustre/ldlm/namespaces/*$1*/lru_size \
+ 2> /dev/null); do
+ echo "clear" > $d
+ done
+
+ for d in $(find \
+ /{proc,sys}/fs/lustre/ldlm/namespaces/*$1*/lock_unused_count \
+ 2> /dev/null); do
+ if [ $(cat $d) != 0 ]; then
+ echo "ldlm.namespaces.$(echo "$d" |
+ cut -f 7 -d'/').lock_unused_count=$(cat $d)"
+ fi
+ done
+ fi
+
$LCTL mark "cancel_lru_locks $1 stop"
}
check_catastrophe() {
local rnodes=${1:-$(comma_list $(remote_nodes_list))}
- local C=$CATASTROPHE
- [ -f $C ] && [ $(cat $C) -ne 0 ] && return 1
+ VAR=$(lctl get_param -n catastrophe 2>&1)
+ if [ $? = 0 ] ; then
+ if [ $VAR != 0 ]; then
+ return 1
+ fi
+ fi
[ -z "$rnodes" ] && return 0
local data
- data=$(do_nodes "$rnodes" "rc=\\\$([ -f $C ] &&
- echo \\\$(< $C) || echo 0);
+ data=$(do_nodes "$rnodes" "rc=\\\$(lctl get_param -n catastrophe);
if [ \\\$rc -ne 0 ]; then echo \\\$(hostname): \\\$rc; fi
exit \\\$rc")
local rc=$?