5 . ./lfscktest_config.sh
7 #Create mount points on target OST and MDS
14 export PATH=$LFSCK_PATH/e2fsck:`dirname $0`:`dirname $0`/../utils:$PATH
16 sh llmount.sh || exit 1
18 # Create some files on the filesystem
19 for i in `seq 0 3`; do
21 for j in `seq 0 5`; do
22 mkdir -p ${MOUNT}/d$i/d$j
23 for k in `seq 1 5`; do
24 FILE="${MOUNT}/d$i/d$j/test$k"
26 dd if=/dev/zero bs=4k count=1 of=$FILE
30 # Create Files to be modified
34 for FILE in `seq -f ${TEST_DIR}/${file_name}.%g 0 40`; do
35 dd if=/dev/zero count=1 bs=64k of=$FILE || exit 1
38 #Create some more files
40 for i in `seq 21 23`; do
42 for j in `seq 0 5`; do
43 mkdir -p ${MOUNT}/d$i/d$j
44 for k in `seq 0 5`; do
45 FILE="${MOUNT}/d$i/d$j/test$k"
47 dd if=/dev/zero bs=4k count=1 of=$FILE
52 # Get objids for a file on the OST
53 OST_TEST_FILE_OBJIDS=""
54 for i in `seq 0 19`; do
55 OST_TEST_FILE=${TEST_DIR}/${file_name}.$i
57 OST_TEST_FILE_OBJID=`$LFIND -v -o $OST_UUID $OST_TEST_FILE|grep '\*$' | awk '{ print $2 }'` || exit 1
58 if [ "$OST_TEST_FILE_OBJID" ]; then
59 echo "REMOVING OBJID $OST_TEST_FILE_OBJID on $OST_UUID from $OST_TEST_FILE"
61 OST_TEST_FILE_OBJIDS="$OST_TEST_FILE_OBJIDS $OST_TEST_FILE_OBJID"
65 for i in `seq 20 39`; do
66 TEST_FILE=${TEST_DIR}/${file_name}.$i
67 echo "REMOVING MDS FILE $TEST_FILE which has info:"
68 $LFIND -v $TEST_FILE || exit 1
69 MDS_FILES="$MDS_FILES ${TESTNAME}/${file_name}.$i"
72 sh llmountcleanup.sh || exit 1
73 # Remove objects associated with files
74 echo "removing objects: $OST_TEST_FILE_OBJIDS"
75 for i in $OST_TEST_FILE_OBJIDS; do
77 debugfs -w -R "rm O/0/d$z/$i" "$OSTDEV" || exit 1
80 mount "-o" loop $MDSDEV $MDS_MOUNTPT
82 #Remove files from mds
83 for i in $MDS_FILES; do
84 rm $MDS_MOUNTPT/ROOT/$i || (umount $MDS_MOUNTPT && exit 1)
87 #Create EAs on files so objects are referenced twice from different mds files
88 for i in `seq 40 59`; do
89 touch $MDS_MOUNTPT/ROOT/${TESTNAME}/${TESTNAME}.bad.$i
90 copy_attr $MDS_MOUNTPT/ROOT/${TESTNAME}/${TESTNAME}.$i $MDS_MOUNTPT/ROOT/${TESTNAME}/${TESTNAME}.bad.$i || (umount $MDS_MOUNTPT && exit 1)
97 # Run e2fsck to get mds and ost info
98 # a return status of 1 indicates e2fsck successfuly fixed problems found
100 e2fsck -d -f -y --mdsdb $GPATH/mdsdb $MDSDEV
102 [ $RET -ne 0 -a $RET -ne 1 ] && exit 1
105 while [ $i -lt $NUM_OSTS ]; do
106 e2fsck -d -f -y --mdsdb $GPATH/mdsdb --ostdb $GPATH/ostdb-$i $TMP/ost$i-`hostname`
108 [ $RET -ne 0 -a $RET -ne 1 ] && exit 1
109 if [ -z "${OSTDB_LIST}" ]; then
110 OSTDB_LIST=${GPATH}/ostdb-$i
112 OSTDB_LIST=${GPATH}/ostdb-$i,${OSTDB_LIST}
118 sh llrmount.sh || exit 1
120 lfsck -l --mdsdb $GPATH/mdsdb --ostdb ${OSTDB_LIST} ${MOUNT} || exit 1
125 sh llmountcleanup.sh || exit 1