6 # This test needs to be run on the client
9 LUSTRE=${LUSTRE:-`dirname $0`/..}
10 . $LUSTRE/tests/test-framework.sh
14 . ${CONFIG:=$LUSTRE/tests/cfg/lmv.sh}
23 if [ "$MDSCOUNT" -gt 1 ]; then
25 for num in `seq $MDSCOUNT`; do
26 MDSDEV=$TMP/mds${num}-`hostname`
27 add_mds mds$num --dev $MDSDEV --size $MDSSIZE --lmv lmv1
29 add_lov_to_lmv lov1 lmv1 --stripe_sz $STRIPE_BYTES \
30 --stripe_cnt $STRIPES_PER_OBJ --stripe_pattern 0
31 add_ost ost --lov lov1 --dev $OSTDEV --size $OSTSIZE
32 add_ost ost2 --lov lov1 --dev ${OSTDEV}-2 --size $OSTSIZE
33 add_client client --lmv lmv1 --lov lov1 --path $MOUNT
35 add_mds mds1 --dev $MDSDEV --size $MDSSIZE
36 if [ ! -z "$mdsfailover_HOST" ]; then
37 add_mdsfailover mds --dev $MDSDEV --size $MDSSIZE
40 add_lov lov1 mds1 --stripe_sz $STRIPE_BYTES \
41 --stripe_cnt $STRIPES_PER_OBJ --stripe_pattern 0
42 add_ost ost --lov lov1 --dev $OSTDEV --size $OSTSIZE
43 add_ost ost2 --lov lov1 --dev ${OSTDEV}-2 --size $OSTSIZE
44 add_client client --mds mds1_svc --lov lov1 --path $MOUNT
51 # make sure we are using the primary MDS, so the config log will
52 # be able to clean up properly.
53 activemds=`facet_active mds`
54 if [ $activemds != "mds" ]; then
57 zconf_umount `hostname` $MOUNT
58 if [ "$MDSCOUNT" -gt 1 ]; then
59 for num in `seq $MDSCOUNT`; do
60 stop mds$num ${FORCE} $MDSLCONFARGS
63 stop mds ${FORCE} $MDSLCONFARGS
65 stop ost2 ${FORCE} --dump cleanup.log
66 stop ost ${FORCE} --dump cleanup.log
69 if [ "$ONLY" == "cleanup" ]; then
70 sysctl -w portals.debug=0 || true
75 SETUP=${SETUP:-"setup"}
76 CLEANUP=${CLEANUP:-"cleanup"}
81 start ost --reformat $OSTLCONFARGS
82 start ost2 --reformat $OSTLCONFARGS
83 [ "$DAEMONFILE" ] && $LCTL debug_daemon start $DAEMONFILE $DAEMONSIZE
84 start mds1 $MDSLCONFARGS --reformat
85 start mds2 $MDSLCONFARGS --reformat
86 start mds3 $MDSLCONFARGS --reformat
87 grep " $MOUNT " /proc/mounts || zconf_mount `hostname` $MOUNT
92 if [ "$ONLY" == "setup" ]; then
102 run_test 0 "empty replay"
105 # this test attempts to trigger a race in the precreation code,
106 # and must run before any other objects are created on the filesystem
108 createmany -o $DIR/$tfile 20 || return 1
109 unlinkmany $DIR/$tfile 20 || return 2
111 run_test 0b "ensure object created after recover exists. (3284)"
116 $CHECKSTAT -t dir $DIR/dir01 || return 1
121 run_test 1a "unlink cross-node dir (fail mds with inode)"
126 $CHECKSTAT -t dir $DIR/dir11 || return 1
131 run_test 1b "unlink cross-node dir (fail mds with name)"
135 createmany -o $DIR/dir21/f 3000
137 $CHECKSTAT -t dir $DIR/dir21 || return 1
138 $CHECKSTAT -t file $DIR/dir21/f1002 || return 1
142 stat $DIR/dir21/f1002
144 run_test 2a "unlink cross-node file (fail mds with name)"
150 $LCTL mark "FAILOVER mds2"
153 $CHECKSTAT -t dir $DIR/dir3a1 || return 1
155 run_test 3a "mkdir cross-node dir (fail mds with inode)"
160 $CHECKSTAT -t dir $DIR/dir13 || return 1
165 run_test 3b "mkdir cross-node dir (fail mds with name)"
167 equals_msg test complete, cleaning up