5 . ./lfscktest_config.sh
7 sh llmount.sh || exit 1
9 #Create mount points on target OST and MDS
10 #Create test directory
15 export PATH=$LFSCK_PATH:`dirname $0`:`dirname $0`/../utils:$PATH
17 # Create some files on the filesystem
18 for i in `seq 0 3`; do
20 for j in `seq 0 5`; do
21 mkdir -p ${MOUNT}/d$i/d$j
22 for k in `seq 1 5`; do
23 FILE="${MOUNT}/d$i/d$j/test$k"
25 dd if=/dev/zero bs=4k count=1 of=$FILE
30 # 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
37 for i in `seq 21 23`; do
39 for j in `seq 0 5`; do
40 mkdir -p ${MOUNT}/d$i/d$j
41 for k in `seq 0 5`; do
42 FILE="${MOUNT}/d$i/d$j/test$k"
44 dd if=/dev/zero bs=4k count=1 of=$FILE
49 # Get objids for a file on the OST
50 OST_TEST_FILE_OBJIDS=""
51 for i in `seq 0 19`; do
52 OST_TEST_FILE=${TEST_DIR}/${file_name}.$i
54 OST_TEST_FILE_OBJID=`$LFIND -v -o $OST_UUID $OST_TEST_FILE|grep '\*$' | awk '{ print $2 }'` || exit 1
55 if [ "$OST_TEST_FILE_OBJID" ]; then
56 echo "REMOVING OBJID $OST_TEST_FILE_OBJID on $OST_UUID from $OST_TEST_FILE"
58 OST_TEST_FILE_OBJIDS="$OST_TEST_FILE_OBJIDS $OST_TEST_FILE_OBJID"
62 for i in `seq 20 39`; do
63 TEST_FILE=${TEST_DIR}/${file_name}.$i
64 echo "REMOVING MDS FILE $TEST_FILE which has info:"
65 $LFIND -v $TEST_FILE || exit 1
66 MDS_FILES="$MDS_FILES ${TESTNAME}/${file_name}.$i"
69 sh llmountcleanup.sh || exit 1
70 # Remove objects associated with files
71 echo "removing objects: $OST_TEST_FILE_OBJIDS"
72 for i in $OST_TEST_FILE_OBJIDS; do
74 debugfs -w -R "rm O/0/d$z/$i" "$OSTDEV" || exit 1
77 mount "-o" loop $MDSDEV $MDS_MOUNTPT
79 #Remove files from mds
80 for i in $MDS_FILES; do
81 rm $MDS_MOUNTPT/ROOT/$i || (umount $MDS_MOUNTPT && exit 1)
84 #Create EAs on files so objects are referenced twice from different mds files
85 for i in `seq 0 19`; do
86 touch $MDS_MOUNTPT/ROOT/${TESTNAME}/${TESTNAME}.bad.$i
87 copy_attr $MDS_MOUNTPT/ROOT/${TESTNAME}/${TESTNAME}.$i $MDS_MOUNTPT/ROOT/${TESTNAME}/${TESTNAME}.bad.$i || (umount $MDS_MOUNTPT && exit 1)
94 # Run e2fsck to get mds and ost info
95 # a return status of 1 indicates e2fsck successfuly fixed problems found
97 e2fsck -d -f -y --mdsdb $GPATH/mdsdb $MDSDEV
99 [ $RET -ne 0 -a $RET -ne 1 ] && exit 1
102 while [ $i -lt $NUM_OSTS ]; do
103 e2fsck -d -f -y --mdsdb $GPATH/mdsdb --ostdb $GPATH/ostdb-$i $TMP/ost`expr $i + 1`-`hostname`
105 [ $RET -ne 0 -a $RET -ne 1 ] && exit 1
106 if [ -z "${OSTDB_LIST}" ]; then
107 OSTDB_LIST=${GPATH}/ostdb-$i
109 OSTDB_LIST=${GPATH}/ostdb-$i,${OSTDB_LIST}
115 sh llrmount.sh || exit 1
117 lfsck -l --mdsdb $GPATH/mdsdb --ostdb ${OSTDB_LIST} ${MOUNT} || exit 1
122 sh llmountcleanup.sh || exit 1