+run_test 66 "replace nids"
+
+test_70a() {
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ local MDTIDX=1
+
+ start_mdt 1 || error "MDT0 start fail"
+
+ start_ost || error "OST0 start fail"
+
+ start_mdt 2 || error "MDT1 start fail"
+
+ mount_client $MOUNT || error "mount client fails"
+
+ mkdir -p $DIR/$tdir || error "create dir fail"
+
+ $LFS mkdir -i $MDTIDX $DIR/$tdir/remote_dir ||
+ error "create remote dir fail"
+
+ rm -rf $DIR/$tdir || error "delete dir fail"
+ cleanup || return $?
+}
+run_test 70a "start MDT0, then OST, then MDT1"
+
+test_70b() {
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ local MDTIDX=1
+
+ start_ost || error "OST0 start fail"
+
+ start_mdt 1 || error "MDT0 start fail"
+ start_mdt 2 || error "MDT1 start fail"
+
+ mount_client $MOUNT || error "mount client fails"
+
+ mkdir -p $DIR/$tdir || error "create dir fail"
+
+ $LFS mkdir -i $MDTIDX $DIR/$tdir/remote_dir ||
+ error "create remote dir fail"
+
+ rm -rf $DIR/$tdir || error "delete dir fail"
+
+ cleanup || return $?
+}
+run_test 70b "start OST, MDT1, MDT0"
+
+test_70c() {
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ local MDTIDX=1
+
+ start_mdt 1 || error "MDT0 start fail"
+ start_mdt 2 || error "MDT1 start fail"
+ start_ost || error "OST0 start fail"
+
+ mount_client $MOUNT || error "mount client fails"
+ stop_mdt 1 || error "MDT1 start fail"
+
+ local mdc_for_mdt1=$($LCTL dl | grep MDT0000-mdc | awk '{print $4}')
+ echo "deactivate $mdc_for_mdt1"
+ $LCTL --device $mdc_for_mdt1 deactivate || return 1
+
+ mkdir -p $DIR/$tdir && error "mkdir succeed"
+
+ $LFS mkdir -i $MDTIDX $DIR/$tdir/remote_dir &&
+ error "create remote dir succeed"
+
+ cleanup || return $?
+}
+run_test 70c "stop MDT0, mkdir fail, create remote dir fail"
+
+test_70d() {
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ local MDTIDX=1
+
+ start_mdt 1 || error "MDT0 start fail"
+ start_mdt 2 || error "MDT1 start fail"
+ start_ost || error "OST0 start fail"
+
+ mount_client $MOUNT || error "mount client fails"
+
+ stop_mdt 2 || error "MDT1 start fail"
+
+ local mdc_for_mdt2=$($LCTL dl | grep MDT0001-mdc |
+ awk '{print $4}')
+ echo "deactivate $mdc_for_mdt2"
+ $LCTL --device $mdc_for_mdt2 deactivate ||
+ error "set $mdc_for_mdt2 deactivate failed"
+
+ mkdir -p $DIR/$tdir || error "mkdir fail"
+ $LFS mkdir -i $MDTIDX $DIR/$tdir/remote_dir &&
+ error "create remote dir succeed"
+
+ rm -rf $DIR/$tdir || error "delete dir fail"
+
+ cleanup || return $?
+}
+run_test 70d "stop MDT1, mkdir succeed, create remote dir fail"
+
+test_71a() {
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ if combined_mgs_mds; then
+ skip "needs separate MGS/MDT" && return
+ fi
+ local MDTIDX=1
+
+ start_mdt 1 || error "MDT0 start fail"
+ start_ost || error "OST0 start fail"
+ start_mdt 2 || error "MDT1 start fail"
+ start_ost2 || error "OST1 start fail"
+
+ mount_client $MOUNT || error "mount client fails"
+
+ mkdir -p $DIR/$tdir || error "mkdir fail"
+ $LFS mkdir -i $MDTIDX $DIR/$tdir/remote_dir ||
+ error "create remote dir succeed"
+
+ mcreate $DIR/$tdir/remote_dir/$tfile || error "create file failed"
+ rm -rf $DIR/$tdir || error "delete dir fail"
+
+ umount_client $MOUNT
+ stop_mdt 1 || error "MDT0 stop fail"
+ stop_mdt 2 || error "MDT1 stop fail"
+ stop_ost || error "OST0 stop fail"
+ stop_ost2 || error "OST1 stop fail"
+}
+run_test 71a "start MDT0 OST0, MDT1, OST1"
+
+test_71b() {
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ if combined_mgs_mds; then
+ skip "needs separate MGS/MDT" && return
+ fi
+ local MDTIDX=1
+
+ start_mdt 2 || error "MDT1 start fail"
+ start_ost || error "OST0 start fail"
+ start_mdt 1 || error "MDT0 start fail"
+ start_ost2 || error "OST1 start fail"
+
+ mount_client $MOUNT || error "mount client fails"
+
+ mkdir -p $DIR/$tdir || error "mkdir fail"
+ $LFS mkdir -i $MDTIDX $DIR/$tdir/remote_dir ||
+ error "create remote dir succeed"
+
+ mcreate $DIR/$tdir/remote_dir/$tfile || error "create file failed"
+ rm -rf $DIR/$tdir || error "delete dir fail"
+
+ umount_client $MOUNT
+ stop_mdt 1 || error "MDT0 stop fail"
+ stop_mdt 2 || error "MDT1 stop fail"
+ stop_ost || error "OST0 stop fail"
+ stop_ost2 || error "OST1 stop fail"
+}
+run_test 71b "start MDT1, OST0, MDT0, OST1"
+
+test_71c() {
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ if combined_mgs_mds; then
+ skip "needs separate MGS/MDT" && return
+ fi
+ local MDTIDX=1
+
+ start_ost || error "OST0 start fail"
+ start_ost2 || error "OST1 start fail"
+ start_mdt 2 || error "MDT1 start fail"
+ start_mdt 1 || error "MDT0 start fail"
+
+ mount_client $MOUNT || error "mount client fails"
+
+ mkdir -p $DIR/$tdir || error "mkdir fail"
+ $LFS mkdir -i $MDTIDX $DIR/$tdir/remote_dir ||
+ error "create remote dir succeed"
+
+ mcreate $DIR/$tdir/remote_dir/$tfile || error "create file failed"
+ rm -rf $DIR/$tdir || error "delete dir fail"
+
+ umount_client $MOUNT
+ stop_mdt 1 || error "MDT0 stop fail"
+ stop_mdt 2 || error "MDT1 stop fail"
+ stop_ost || error "OST0 stop fail"
+ stop_ost2 || error "OST1 stop fail"
+
+}
+run_test 71c "start OST0, OST1, MDT1, MDT0"
+
+test_71d() {
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ if combined_mgs_mds; then
+ skip "needs separate MGS/MDT" && return
+ fi
+ local MDTIDX=1
+
+ start_ost || error "OST0 start fail"
+ start_mdt 2 || error "MDT0 start fail"
+ start_mdt 1 || error "MDT0 start fail"
+ start_ost2 || error "OST1 start fail"
+
+ mount_client $MOUNT || error "mount client fails"
+
+ mkdir -p $DIR/$tdir || error "mkdir fail"
+ $LFS mkdir -i $MDTIDX $DIR/$tdir/remote_dir ||
+ error "create remote dir succeed"
+
+ mcreate $DIR/$tdir/remote_dir/$tfile || error "create file failed"
+ rm -rf $DIR/$tdir || error "delete dir fail"
+
+ umount_client $MOUNT
+ stop_mdt 1 || error "MDT0 stop fail"
+ stop_mdt 2 || error "MDT1 stop fail"
+ stop_ost || error "OST0 stop fail"
+ stop_ost2 || error "OST1 stop fail"
+
+}
+run_test 71d "start OST0, MDT1, MDT0, OST1"
+
+test_71e() {
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+ if combined_mgs_mds; then
+ skip "needs separate MGS/MDT" && return
+ fi
+ local MDTIDX=1
+
+ start_ost || error "OST0 start fail"
+ start_mdt 2 || error "MDT1 start fail"
+ start_ost2 || error "OST1 start fail"
+ start_mdt 1 || error "MDT0 start fail"
+
+ mount_client $MOUNT || error "mount client fails"
+
+ mkdir -p $DIR/$tdir || error "mkdir fail"
+ $LFS mkdir -i $MDTIDX $DIR/$tdir/remote_dir ||
+ error "create remote dir succeed"
+
+ mcreate $DIR/$tdir/remote_dir/$tfile || error "create file failed"
+ rm -rf $DIR/$tdir || error "delete dir fail"
+
+ umount_client $MOUNT
+ stop_mdt 1 || error "MDT0 stop fail"
+ stop_mdt 2 || error "MDT1 stop fail"
+ stop_ost || error "OST0 stop fail"
+ stop_ost2 || error "OST1 stop fail"
+
+}
+run_test 71e "start OST0, MDT1, OST1, MDT0"
+
+test_72() { #LU-2634
+ local mdsdev=$(mdsdevname 1)
+ local ostdev=$(ostdevname 1)
+ local cmd="$E2FSCK -fnvd $mdsdev"
+ local fn=3
+
+ [ "$(facet_fstype $SINGLEMDS)" != "ldiskfs" ] &&
+ skip "ldiskfs only test" && return
+
+ #tune MDT with "-O extents"
+
+ for num in $(seq $MDSCOUNT); do
+ add mds${num} $(mkfs_opts mds$num $(mdsdevname $num)) \
+ --reformat $(mdsdevname $num) $(mdsvdevname $num) ||
+ error "add mds $num failed"
+ $TUNE2FS -O extents $(mdsdevname $num)
+ done
+
+ add ost1 $(mkfs_opts ost1 $ostdev) --reformat $ostdev ||
+ error "add $ostdev failed"
+ start_mgsmds || error "start mds failed"
+ start_ost || error "start ost failed"
+ mount_client $MOUNT || error "mount client failed"
+
+ #create some short symlinks
+ mkdir -p $DIR/$tdir
+ createmany -o $DIR/$tdir/$tfile-%d $fn
+ echo "create $fn short symlinks"
+ for i in $(seq -w 1 $fn); do
+ ln -s $DIR/$tdir/$tfile-$i $MOUNT/$tfile-$i
+ done
+ ls -al $MOUNT
+
+ #umount
+ umount_client $MOUNT || error "umount client failed"
+ stop_mds || error "stop mds failed"
+ stop_ost || error "stop ost failed"
+
+ #run e2fsck
+ run_e2fsck $(facet_active_host $SINGLEMDS) $mdsdev "-n"
+}
+run_test 72 "test fast symlink with extents flag enabled"