L2FSCK_PATH=${L2FSCK_PATH:-""}
NUMFILES=${NUMFILES:-10}
NUMDIRS=${NUMDIRS:-4}
-LFIND=${LFIND:-"lfs find"}
+GETSTRIPE=${GETSTRIPE:-"lfs getstripe"}
GETFATTR=${GETFATTR:-getfattr}
SETFATTR=${SETFATTR:-setfattr}
MAX_ERR=1
init_test_env $@
. ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh}
+remote_mds && skip "remote MDS" && exit 0
+remote_ost && skip "remote OST" && exit 0
+
# if nothing mounted, don't nuke MOUNT variable needed in llmount.sh
WAS_MOUNTED=$(mounted_lustre_filesystems | head -1)
if [ -z "$WAS_MOUNTED" ]; then
MOUNT=${WAS_MOUNTED}
fi
-DIR=${DIR:-$MOUNT/$TESTNAME}
+DIR=$DIR/$TESTNAME
[ -z "`echo $DIR | grep $MOUNT`" ] && echo "$DIR not in $MOUNT" && exit 3
if [ "$WAS_MOUNTED" ]; then
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/).*//" ;;
# -- can't remove the mountpoint...
[ -z "$DIR" ] && rm -rf $DIR/*
mkdir -p $DIR
- OSTCOUNT=`$LFIND $MOUNT | grep -c "^[0-9]*: "`
+ OSTCOUNT=`$LFS osts | grep -c "^[0-9]*: " || true`
# Create some files on the filesystem
for d in `seq -f d%g $NUMDIRS`; do
# Get objids for a file on the OST
OST_FILES=`seq -f $DIR/testfile.%g $NUMFILES`
- OST_REMOVE=`$LFIND $OST_FILES | awk '$1 == 0 { print $2 }' | head -n $NUMFILES`
+ OST_REMOVE=`$GETSTRIPE $OST_FILES | awk '$1 == 0 { print $2 }' | head -n $NUMFILES`
export MDS_DUPE=""
for f in `seq -f testfile.%g $((NUMFILES + 1)) $((NUMFILES * 2))`; do
TEST_FILE=$DIR/$f
echo "DUPLICATING MDS file $TEST_FILE"
- $LFIND -v $TEST_FILE >> $LOG || exit 20
+ $GETSTRIPE -v $TEST_FILE >> $LOG || exit 20
MDS_DUPE="$MDS_DUPE $TEST_FILE"
done
MDS_DUPE=`echo $MDS_DUPE | sed "s#$MOUNT/##g"`
for f in `seq -f testfile.%g $((NUMFILES * 2 + 1)) $((NUMFILES * 3))`; do
TEST_FILE=$DIR/$f
echo "REMOVING MDS file $TEST_FILE which has info:"
- $LFIND -v $TEST_FILE >> $LOG || exit 30
+ $GETSTRIPE -v $TEST_FILE >> $LOG || exit 30
MDS_REMOVE="$MDS_REMOVE $TEST_FILE"
done
MDS_REMOVE=`echo $MDS_REMOVE | sed "s#$MOUNT/##g"`
- # when the OST is also using an OSD this needs to be fixed
- MDTDEVS=`get_mnt_devs osd`
+ MDTDEVS=`get_mnt_devs mds`
OSTDEVS=`get_mnt_devs obdfilter`
OSTCOUNT=`echo $OSTDEVS | wc -w`
sh llmountcleanup.sh || exit 40
for i in $OST_REMOVE; do
echo "rm O/0/d$((i % 32))/$i" >> $DEBUGTMP
done
- debugfs -w -f $DEBUGTMP `echo $OSTDEVS | cut -d' ' -f 1`
+ $DEBUGFS -w -f $DEBUGTMP `echo $OSTDEVS | cut -d' ' -f 1`
RET=$?
rm $DEBUGTMP
[ $RET -ne 0 ] && exit 50
SAVE_PWD=$PWD
+ [ "$FSTYPE" = "ldiskfs" ] && load_module ../ldiskfs/ldiskfs/ldiskfs
mount -t $FSTYPE -o loop $MDSDEV $MOUNT || exit 60
do_umount() {
trap 0
do_umount
else
- # when the OST is also using an OSD this needs to be fixed
- MDTDEVS=`get_mnt_devs osd`
+ MDTDEVS=`get_mnt_devs mds`
OSTDEVS=`get_mnt_devs obdfilter`
OSTCOUNT=`echo $OSTDEVS | wc -w`
fi # LFSCK_SETUP
# a return status of 1 indicates e2fsck successfuly fixed problems found
set +e
-echo "e2fsck -d -v -fn --mdsdb $MDSDB $MDSDEV"
+echo "$E2FSCK -d -v -fn --mdsdb $MDSDB $MDSDEV"
df > /dev/null # update statfs data on disk
-e2fsck -d -v -fn --mdsdb $MDSDB $MDSDEV
+$E2FSCK -d -v -fn --mdsdb $MDSDB $MDSDEV
RET=$?
-[ $RET -gt $MAX_ERR ] && echo "e2fsck returned $RET" && exit 90 || true
+[ $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
+ $E2FSCK -d -v -fn --mdsdb $MDSDB --ostdb $OSTDB-$i $OSTDEV
RET=$?
- [ $RET -gt $MAX_ERR ] && echo "e2fsck returned $RET" && exit 100
+ [ $RET -gt $MAX_ERR ] && echo "$E2FSCK returned $RET" && exit 100
OSTDB_LIST="$OSTDB_LIST $OSTDB-$i"
i=$((i + 1))
done
#Remount filesystem
-[ "`mount | grep $MOUNT`" ] || $SETUP
+[ "`mount | grep $MOUNT`" ] || setupall
# need to turn off shell error detection to get proper error return
# lfsck will return 1 if the filesystem had errors fixed
sync; sleep 2; sync
echo "LFSCK TEST 2"
-echo "e2fsck -d -v -fn --mdsdb $MDSDB $MDSDEV"
+echo "$E2FSCK -d -v -fn --mdsdb $MDSDB $MDSDEV"
df > /dev/null # update statfs data on disk
-e2fsck -d -v -fn --mdsdb $MDSDB $MDSDEV
+$E2FSCK -d -v -fn --mdsdb $MDSDB $MDSDEV
RET=$?
-[ $RET -gt $MAX_ERR ] && echo "e2fsck returned $RET" && exit 123 || true
+[ $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
+ $E2FSCK -d -v -fn --mdsdb $MDSDB --ostdb $OSTDB-$i $OSTDEV
RET=$?
- [ $RET -gt $MAX_ERR ] && echo "e2fsck returned $RET" && exit 124
+ [ $RET -gt $MAX_ERR ] && echo "$E2FSCK returned $RET" && exit 124
OSTDB_LIST="$OSTDB_LIST $OSTDB-$i"
i=$((i + 1))
done