5 . ./lfscktest_config.sh
7 #Create mount points on target OST and MDS
14 export PATH=$E2FSCK_PATH/e2fsck:$PATH
16 # Create some files on the filesystem
17 for i in `seq 0 3`; do
19 for j in `seq 0 5`; do
20 mkdir -p ${MOUNT}/d$i/d$j
21 for k in `seq 1 5`; do
22 FILE="${MOUNT}/d$i/d$j/test$k"
24 dd if=/dev/zero bs=4k count=1 of=$FILE
28 # Create Files to be modified
32 for FILE in `seq -f ${TEST_DIR}/${file_name}.%g 0 40`; do
33 dd if=/dev/zero count=1 bs=64k of=$FILE || exit 1
36 #Create some more files
38 for i in `seq 21 23`; do
40 for j in `seq 0 5`; do
41 mkdir -p ${MOUNT}/d$i/d$j
42 for k in `seq 0 5`; do
43 FILE="${MOUNT}/d$i/d$j/test$k"
45 dd if=/dev/zero bs=4k count=1 of=$FILE
50 # Get objids for a file on the OST
51 OST_TEST_FILE_OBJIDS=""
52 for i in `seq 0 19`; do
53 OST_TEST_FILE=${TEST_DIR}/${file_name}.$i
55 OST_TEST_FILE_OBJID=`$LFIND -v -o $OST_UUID $OST_TEST_FILE|grep '\*$' | awk '{ print $2 }'` || exit 1
56 if [ "$OST_TEST_FILE_OBJID" ]; then
57 echo "REMOVING OBJID $OST_TEST_FILE_OBJID on $OST_UUID from $OST_TEST_FILE"
59 OST_TEST_FILE_OBJIDS="$OST_TEST_FILE_OBJIDS $OST_TEST_FILE_OBJID"
63 for i in `seq 20 39`; do
64 TEST_FILE=${TEST_DIR}/${file_name}.$i
65 echo "REMOVING MDS FILE $TEST_FILE which has info:"
66 $LFIND -v $TEST_FILE || exit 1
67 MDS_FILES="$MDS_FILES ${TESTNAME}/${file_name}.$i"
70 $LCONF --cleanup ${CONFIGXML} || exit 1
72 # Remove objects associated with files
73 echo "removing objects: $OST_TEST_FILE_OBJIDS"
74 for i in $OST_TEST_FILE_OBJIDS; do
76 $DEBUGFS -w -R "rm O/0/d$z/$i" "$OSTDEV" || exit 1
79 mount "-o" loop $MDSDEV $MDS_MOUNTPT
81 #Remove files from mds
82 for i in $MDS_FILES; do
83 rm $MDS_MOUNTPT/ROOT/$i || (umount $MDS_MOUNTPT && exit 1)
86 #Create EAs on files so objects are referenced twice from different mds files
87 for i in `seq 40 59`; do
88 touch $MDS_MOUNTPT/ROOT/${TESTNAME}/${TESTNAME}.bad.$i
89 ${GPATH}/copy_attr $MDS_MOUNTPT/ROOT/${TESTNAME}/${TESTNAME}.$i $MDS_MOUNTPT/ROOT/${TESTNAME}/${TESTNAME}.bad.$i || (umount $MDS_MOUNTPT && exit 1)
96 # Run e2fsck to get mds and ost info
97 # a return status of 1 indicates e2fsck successfuly fixed problems found
99 e2fsck -d -f -y --mdsdb $GPATH/mdsdb $MDSDEV
101 [ $RET -ne 0 -a $RET -ne 1 ] && exit 1
104 while [ $i -lt $NUM_OSTS ]; do
105 e2fsck -d -f -y --mdsdb $GPATH/mdsdb --ostdb $GPATH/ostdb-$i $TMP/ost$i-`hostname`
107 [ $RET -ne 0 -a $RET -ne 1 ] && exit 1
108 if [ -z "${OSTDB_LIST}" ]; then
109 OSTDB_LIST=${GPATH}/ostdb-$i
111 OSTDB_LIST=${GPATH}/ostdb-$i,${OSTDB_LIST}
117 ${LCONF} ${CONFIGXML} || exit 1
119 lfsck -l --mdsdb $GPATH/mdsdb --ostdb ${OSTDB_LIST} ${MOUNT} || exit 1