[ "$SLOW" = "no" ] && EXCEPT_SLOW="24o 27m 64b 68 71 77f 78 115 124b 230d"
if [ $(facet_fstype $SINGLEMDS) = "zfs" ]; then
- # bug number for skipped test: LU-1593 LU-2833 LU-1957 LU-2805
- ALWAYS_EXCEPT="$ALWAYS_EXCEPT 34h 48a 180 184c"
+ # bug number for skipped test: LU-1593 LU-4536 LU-5242 LU-1957 LU-2805
+ ALWAYS_EXCEPT="$ALWAYS_EXCEPT 34h 65ic 132 180 184c"
[ "$SLOW" = "no" ] && EXCEPT_SLOW="$EXCEPT_SLOW 51b 51ba"
fi
rm -fr $DIR/d33
test_mkdir -p $DIR/d33
chown $RUNAS_ID $DIR/d33
- $RUNAS $OPENFILE -f 1286739555 $DIR/d33/f33
+ $RUNAS $OPENFILE -f 1286739555 $DIR/d33/f33 || true
}
run_test 33b "test open file with malformed flags (No panic)"
# test_47 is removed "Device nodes check" is moved to test_28
test_48a() { # bug 2399
+ [ $(facet_fstype $SINGLEMDS) = "zfs" ] &&
+ [ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.3.63) ] &&
+ skip "MDS prior to 2.3.63 handle ZFS dir .. incorrectly" &&
+ return
check_kernel_version 34 || return 0
test_mkdir -p $DIR/$tdir
cd $DIR/$tdir
run_test 56v "check 'lfs find -mdt match with lfs getstripe -M' ======="
test_56w() {
+ [[ $OSTCOUNT -lt 2 ]] && skip_env "$OSTCOUNT < 2 OSTs -- skipping" &&
+ return
[ $PARALLEL == "yes" ] && skip "skip parallel run" && return
TDIR=$DIR/${tdir}w
check_stripe_count $TDIR/file1 $expected
+ if [ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.6.90) ];
+ then
+ # lfs_migrate file onto OST 0 if it is on OST 1, or onto
+ # OST 1 if it is on OST 0. This file is small enough to
+ # be on only one stripe.
+ file=$TDIR/migr_1_ost
+ dd bs=$dd_bs count=1 if=/dev/urandom of=$file >/dev/null 2>&1 ||
+ error "write data into $file failed"
+ local obdidx=$($LFS getstripe -i $file)
+ local oldmd5=$(md5sum $file)
+ local newobdidx=0
+ [[ $obdidx -eq 0 ]] && newobdidx=1
+ cmd="$LFS migrate -i $newobdidx $file"
+ echo $cmd
+ eval $cmd || error "$cmd failed"
+ local realobdix=$($LFS getstripe -i $file)
+ local newmd5=$(md5sum $file)
+ [[ $newobdidx -ne $realobdix ]] &&
+ error "new OST is different (was=$obdidx, wanted=$newobdidx, got=$realobdix)"
+ [[ "$oldmd5" != "$newmd5" ]] &&
+ error "md5sum differ: $oldmd5, $newmd5"
+ fi
+
# lfs_migrate dir
cmd="$LFS_MIGRATE -y -c $expected $TDIR/dir1"
echo "$cmd"
local fid=$2
local path=$(${LFS} fid2path $*)
+ # Remove the '//' indicating a remote directory
+ path=$(echo $path | sed 's#//#/#g')
RC=$?
if [ $RC -ne 0 ]; then
}
run_test 162b "striped directory path lookup sanity"
+# LU-4239: Verify fid2path works with paths 100 or more directories deep
+test_162c() {
+ test_mkdir $DIR/$tdir.local
+ test_mkdir $DIR/$tdir.remote
+ local lpath=$tdir.local
+ local rpath=$tdir.remote
+
+ for ((i = 0; i <= 101; i++)); do
+ lpath="$lpath/$i"
+ mkdir $DIR/$lpath
+ FID=$($LFS path2fid $DIR/$lpath | tr -d '[]') ||
+ error "get fid for local directory $DIR/$lpath failed"
+ check_path "$DIR/$lpath" $MOUNT $FID --link 0 ||
+ error "check path for local directory $DIR/$lpath failed"
+
+ rpath="$rpath/$i"
+ test_mkdir $DIR/$rpath
+ FID=$($LFS path2fid $DIR/$rpath | tr -d '[]') ||
+ error "get fid for remote directory $DIR/$rpath failed"
+ check_path "$DIR/$rpath" $MOUNT $FID --link 0 ||
+ error "check path for remote directory $DIR/$rpath failed"
+ done
+
+ return 0
+}
+run_test 162c "fid2path works with paths 100 or more directories deep"
+
test_169() {
# do directio so as not to populate the page cache
log "creating a 10 Mb file"
local ost_range="$first_ost $last_ost $ost_step"
local test_path=$POOL_ROOT/$POOL_DIR_NAME
local file_dir=$POOL_ROOT/file_tst
+ local subdir=$test_path/subdir
local rc=0
while : ; do
mkdir -p $test_path
pool_set_dir $POOL $test_path || { rc=$? ; break; }
pool_check_dir $POOL $test_path || { rc=$? ; break; }
+ mkdir -p $subdir
+ pool_check_dir $POOL $subdir || { rc=$? ; break; }
pool_dir_rel_path $POOL $POOL_DIR_NAME $POOL_ROOT \
|| { rc=$? ; break; }
# former test_200e test_200f
}
run_test 241 "bio vs dio"
+test_242() {
+ mkdir -p $DIR/$tdir
+ touch $DIR/$tdir/$tfile
+
+ #define OBD_FAIL_MDS_READPAGE_PACK 0x105
+ do_facet mds1 lctl set_param fail_loc=0x105
+ /bin/ls $DIR/$tdir && error "ls $DIR/$tdir should fail"
+
+ do_facet mds1 lctl set_param fail_loc=0
+ /bin/ls $DIR/$tdir || error "ls $DIR/$tdir failed"
+}
+run_test 242 "mdt_readpage failure should not cause directory unreadable"
+
cleanup_test_300() {
trap 0
umask $SAVE_UMASK