X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Ftests%2Fsanity.sh;h=90c2261f3d73a2814990e86ab8d1f9177070b888;hp=48c48909b00965dc76567c51c30930705bc1a905;hb=3ac7c325efaf3a2537fafc79168d87de67982acd;hpb=9ed6c21e6a04b99e045b663a627cd6f6fcdceb1c diff --git a/lustre/tests/sanity.sh b/lustre/tests/sanity.sh index 48c4890..90c2261 100644 --- a/lustre/tests/sanity.sh +++ b/lustre/tests/sanity.sh @@ -586,6 +586,59 @@ test_17m() { } run_test 17m "run e2fsck against MDT which contains short/long symlink" +check_fs_consistency_17n() { + local mdt_index + local devname + local cmd + local rc=0 + + for mdt_index in $(seq 1 $MDSCOUNT); do + devname=$(mdsdevname $mdt_index) + cmd="$E2FSCK -fnvd $devname" + + echo "stop and checking mds${mdt_index}: $cmd" + # e2fsck should not return error + stop mds${mdt_index} + do_facet mds${mdt_index} $cmd || rc=$? + + start mds${mdt_index} $devname $MDS_MOUNT_OPTS + df $MOUNT > /dev/null 2>&1 + [ $rc -ne 0 ] && break + done + return $rc +} + +test_17n() { + local i + + [ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.2.0) ] && + [ $(lustre_version_code $SINGLEMDS) -le $(version_code 2.2.93) ] && + skip "MDS 2.2.0-2.2.93 do not NUL-terminate symlinks" && return + + [ "$(facet_fstype $SINGLEMDS)" != "ldiskfs" ] && + skip "only for ldiskfs MDT" && return 0 + + [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return + + mkdir -p $DIR/$tdir + for ((i=0; i<10; i++)); do + $LFS mkdir -i 1 $DIR/$tdir/remote_dir_${i} || + error "create remote dir error $i" + createmany -o $DIR/$tdir/remote_dir_${i}/f 10 || + error "create files under remote dir failed $i" + done + + check_fs_consistency_17n || error "e2fsck report error" + + for ((i=0;i<10;i++)); do + rm -rf $DIR/$tdir/remote_dir_${i} || + error "destroy remote dir error $i" + done + + check_fs_consistency_17n || error "e2fsck report error" +} +run_test 17n "run e2fsck against master/slave MDT which contains remote dir" + test_18() { touch $DIR/f ls $DIR || error @@ -928,6 +981,80 @@ test_24w() { # bug21506 } run_test 24w "Reading a file larger than 4Gb" +test_24x() { + [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return + local MDTIDX=1 + local remote_dir=$DIR/$tdir/remote_dir + + mkdir -p $DIR/$tdir + $LFS mkdir -i $MDTIDX $remote_dir || + error "create remote directory failed" + + mkdir -p $DIR/$tdir/src_dir + touch $DIR/$tdir/src_file + mkdir -p $remote_dir/tgt_dir + touch $remote_dir/tgt_file + + mrename $DIR/$tdir/src_dir $remote_dir/tgt_dir && + error "rename dir cross MDT works!" + + mrename $DIR/$tdir/src_file $remote_dir/tgt_file && + error "rename file cross MDT works!" + + ln $DIR/$tdir/src_file $remote_dir/tgt_file1 && + error "ln file cross MDT should not work!" + + rm -rf $DIR/$tdir || error "Can not delete directories" +} +run_test 24x "cross rename/link should be failed" + +test_24y() { + [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return + local MDTIDX=1 + local remote_dir=$DIR/$tdir/remote_dir + + mkdir -p $DIR/$tdir + $LFS mkdir -i $MDTIDX $remote_dir || + error "create remote directory failed" + + mkdir -p $remote_dir/src_dir + touch $remote_dir/src_file + mkdir -p $remote_dir/tgt_dir + touch $remote_dir/tgt_file + + mrename $remote_dir/src_dir $remote_dir/tgt_dir || + error "rename subdir in the same remote dir failed!" + + mrename $remote_dir/src_file $remote_dir/tgt_file || + error "rename files in the same remote dir failed!" + + ln $remote_dir/tgt_file $remote_dir/tgt_file1 || + error "link files in the same remote dir failed!" + + rm -rf $DIR/$tdir || error "Can not delete directories" +} +run_test 24y "rename/link on the same dir should succeed" + +test_24z() { + [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return + local MDTIDX=1 + local remote_src=$DIR/$tdir/remote_dir + local remote_tgt=$DIR/$tdir/remote_tgt + + mkdir -p $DIR/$tdir + $LFS mkdir -i $MDTIDX $remote_src || + error "create remote directory failed" + + $LFS mkdir -i $MDTIDX $remote_tgt || + error "create remote directory failed" + + mrename $remote_src $remote_tgt && + error "rename remote dirs should not work!" + + rm -rf $DIR/$tdir || error "Can not delete directories" +} +run_test 24z "rename one remote dir to another remote dir should fail" + test_25a() { echo '== symlink sanity =============================================' @@ -2028,7 +2155,7 @@ test_32r() { } run_test 32r "opendir follows mountpoints in Lustre (should return error)" -test_33() { +test_33aa() { rm -f $DIR/$tfile touch $DIR/$tfile chmod 444 $DIR/$tfile @@ -2037,7 +2164,7 @@ test_33() { $RUNAS $OPENFILE -f O_RDWR $DIR/$tfile && error || true log 33_2 } -run_test 33 "write file with mode 444 (should return error) ====" +run_test 33aa "write file with mode 444 (should return error) ====" test_33a() { rm -fr $DIR/d33 @@ -2122,6 +2249,31 @@ test_33c() { } run_test 33c "test llobdstat and write_bytes" +test_33d() { + [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return + local MDTIDX=1 + local remote_dir=$DIR/$tdir/remote_dir + + mkdir -p $DIR/$tdir + $LFS mkdir -i $MDTIDX $remote_dir || + error "create remote directory failed" + + touch $remote_dir/$tfile + chmod 444 $remote_dir/$tfile + chown $RUNAS_ID $remote_dir/$tfile + + $RUNAS $OPENFILE -f O_RDWR $DIR/$tfile && error || true + + chown $RUNAS_ID $remote_dir + $RUNAS $OPENFILE -f O_RDWR:O_CREAT -m 0444 $remote_dir/f33 || + error "create" || true + $RUNAS $OPENFILE -f O_RDWR:O_CREAT -m 0444 $remote_dir/f33 && + error "open RDWR" || true + $RUNAS $OPENFILE -f 1286739555 $remote_dir/f33 && + error "create" || true +} +run_test 33d "openfile with 444 modes and malformed flags under remote dir" + TEST_34_SIZE=${TEST_34_SIZE:-2000000000000} test_34a() { rm -f $DIR/f34 @@ -9752,19 +9904,21 @@ mcreate_path2fid () { local rc local fid_path - $MCREATE --mode=$1 --major=$2 --minor=$3 $path || \ - error "error: cannot create $desc" + $MCREATE --mode=$1 --major=$2 --minor=$3 $path || + error "cannot create $desc" fid=$($LFS path2fid $path) rc=$? - [ $rc -ne 0 ] && error "error: cannot get fid of a $desc" + [ $rc -ne 0 ] && error "cannot get fid of a $desc" - fid_path=$($LFS fid2path $DIR $fid) + fid_path=$($LFS fid2path $DIR "$fid") rc=$? - [ $rc -ne 0 ] && error "error: cannot get path of a $desc by fid" + [ $rc -ne 0 ] && error "cannot get path of $desc by $DIR $path $fid" + + [ "$path" == "$fid_path" ] || + error "fid2path returned $fid_path, expected $path" - [ "$path" == "$fid_path" ] || \ - error "error: fid2path returned \`$fid_path', expected \`$path'" + echo "pass with $path and $fid" } test_226 () { @@ -9927,6 +10081,45 @@ test_228c() { } run_test 228c "NOT shrink the last entry in OI index node to recycle idle leaf" +test_230a() { + [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return + local MDTIDX=1 + + mkdir -p $DIR/$tdir/test_230_local + local mdt_idx=$($GETSTRIPE -M $DIR/$tdir/test_230_local) + [ $mdt_idx -ne 0 ] && + error "create local directory on wrong MDT $mdt_idx" + + $LFS mkdir -i $MDTIDX $DIR/$tdir/test_230 || + error "create remote directory failed" + local mdt_idx=$($GETSTRIPE -M $DIR/$tdir/test_230) + [ $mdt_idx -ne $MDTIDX ] && + error "create remote directory on wrong MDT $mdt_idx" + + createmany -o $DIR/$tdir/test_230/t- 10 || + error "create files on remote directory failed" + mdt_idx=$($GETSTRIPE -M $DIR/$tdir/test_230/t-0) + [ $mdt_idx -ne $MDTIDX ] && error "create files on wrong MDT $mdt_idx" + rm -r $DIR/$tdir || error "unlink remote directory failed" +} +run_test 230a "Create remote directory and files under the remote directory" + +test_230b() { + [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return + local MDTIDX=1 + local remote_dir=$DIR/$tdir/remote_dir + + mkdir -p $DIR/$tdir + $LFS mkdir -i $MDTIDX $remote_dir || + error "create remote directory failed" + + $LFS mkdir -i 0 $remote_dir/new_dir && + error "nested remote directory create succeed!" + + rm -r $DIR/$tdir || error "unlink remote directory failed" +} +run_test 230b "nested remote directory should be failed" + # # tests that do cleanup/setup should be run at the end #