SETFATTR=${SETFATTR:-setfattr}
MAX_ERR=1
-FSTYPE=${FSTYPE:-ldiskfs}
-
export PATH=$LFSCK_PATH:`dirname $0`:`dirname $0`/../utils:$PATH
[ -z "`which $GETFATTR`" ] && echo "$0: $GETFATTR not found" && exit 5
init_test_env $@
. ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh}
-WAS_MOUNTED=`mount | grep $MOUNT`
-[ "$WAS_MOUNTED" ] || $FORMAT && $SETUP
+# if nothing mounted, don't nuke MOUNT variable needed in llmount.sh
+WAS_MOUNTED=$(mounted_lustre_filesystems | head -1)
+if [ -z "$WAS_MOUNTED" ]; then
+ # This code doesn't handle multiple mounts well, so nuke MOUNT2 variable
+ MOUNT2="" sh llmount.sh
+ MOUNT=$(mounted_lustre_filesystems)
+ [ -z "$MOUNT" ] && echo "NAME=$NAME not mounted" && exit 2
+else
+ MOUNT=${WAS_MOUNTED}
+fi
DIR=${DIR:-$MOUNT/$TESTNAME}
[ -z "`echo $DIR | grep $MOUNT`" ] && echo "$DIR not in $MOUNT" && exit 3
fi
get_mnt_devs() {
- DEVS=`cat /proc/fs/lustre/$1/*/mntdev`
+ DEVS=`lctl get_param -n $1.*.mntdev`
for DEV in $DEVS; do
case $DEV in
*loop*) losetup $DEV | sed -e "s/.*(//" -e "s/).*//" ;;
if [ "$LFSCK_SETUP" != "no" ]; then
#Create test directory
- rm -rf $DIR
+ # -- can't remove the mountpoint...
+ [ -z "$DIR" ] && rm -rf $DIR/*
mkdir -p $DIR
OSTCOUNT=`$LFIND $MOUNT | grep -c "^[0-9]*: "`
done
MDS_REMOVE=`echo $MDS_REMOVE | sed "s#$MOUNT/##g"`
- MDTDEVS=`get_mnt_devs mds`
+ # when the OST is also using an OSD this needs to be fixed
+ MDTDEVS=`get_mnt_devs osd`
OSTDEVS=`get_mnt_devs obdfilter`
OSTCOUNT=`echo $OSTDEVS | wc -w`
sh llmountcleanup.sh || exit 40
do_umount
else
- MDTDEVS=`get_mnt_devs mds`
+ # when the OST is also using an OSD this needs to be fixed
+ MDTDEVS=`get_mnt_devs osd`
OSTDEVS=`get_mnt_devs obdfilter`
OSTCOUNT=`echo $OSTDEVS | wc -w`
fi # LFSCK_SETUP
set +e
echo "e2fsck -d -v -fn --mdsdb $MDSDB $MDSDEV"
+df > /dev/null # update statfs data on disk
e2fsck -d -v -fn --mdsdb $MDSDB $MDSDEV
RET=$?
[ $RET -gt $MAX_ERR ] && echo "e2fsck returned $RET" && exit 90 || true
export OSTDB_LIST=""
i=0
for OSTDEV in $OSTDEVS; do
+ df > /dev/null # update statfs data on disk
e2fsck -d -v -fn --mdsdb $MDSDB --ostdb $OSTDB-$i $OSTDEV
RET=$?
[ $RET -gt $MAX_ERR ] && echo "e2fsck returned $RET" && exit 100
# lfsck will return 1 if the filesystem had errors fixed
echo "LFSCK TEST 1"
echo "lfsck -c -l --mdsdb $MDSDB --ostdb $OSTDB_LIST $MOUNT"
-lfsck -c -l --mdsdb $MDSDB --ostdb $OSTDB_LIST $MOUNT
+echo y | lfsck -c -l --mdsdb $MDSDB --ostdb $OSTDB_LIST $MOUNT
RET=$?
[ $RET -eq 0 ] && echo "clean after first check" && exit 0
echo "LFSCK TEST 1 - finished with rc=$RET"
echo "LFSCK TEST 2"
echo "e2fsck -d -v -fn --mdsdb $MDSDB $MDSDEV"
+df > /dev/null # update statfs data on disk
e2fsck -d -v -fn --mdsdb $MDSDB $MDSDEV
RET=$?
[ $RET -gt $MAX_ERR ] && echo "e2fsck returned $RET" && exit 123 || true
i=0
export OSTDB_LIST=""
for OSTDEV in $OSTDEVS; do
+ df > /dev/null # update statfs data on disk
e2fsck -d -v -fn --mdsdb $MDSDB --ostdb $OSTDB-$i $OSTDEV
RET=$?
[ $RET -gt $MAX_ERR ] && echo "e2fsck returned $RET" && exit 124