rm -f $F77_TMP
unset F77_TMP
+cleanup_test_78() {
+ trap 0
+ rm -f $DIR/$tfile
+}
+
test_78() { # bug 10901
[ $PARALLEL == "yes" ] && skip "skip parallel run" && return
remote_ost || { skip_env "local OST" && return; }
[[ $SMALLESTOST -lt 10240 ]] &&
skip "too small OSTSIZE, useless to run large O_DIRECT test" && return 0
+ trap cleanup_test_78 EXIT
+
[[ $F78SIZE -gt $((SMALLESTOST * $OSTCOUNT / 1024 - 80)) ]] &&
F78SIZE=$((SMALLESTOST * $OSTCOUNT / 1024 - 80))
$DIRECTIO rdwr $DIR/$tfile 0 $FSIZE 1048576||error "rdwr failed"
done
- rm -f $DIR/$tfile
+ cleanup_test_78
}
run_test 78 "handle large O_DIRECT writes correctly ============"
true
}
+save_writethrough() {
+ local facets=$(get_facets OST)
+
+ save_lustre_params $facets "obdfilter.*.writethrough_cache_enable" > $1
+ save_lustre_params $facets "osd-*.*.writethrough_cache_enable" >> $1
+}
+
test_155a() {
[ $PARALLEL == "yes" ] && skip "skip parallel run" && return
+ local p="$TMP/$TESTSUITE-$TESTNAME.parameters"
+ save_writethrough $p
+
set_cache read on
set_cache writethrough on
test_155_small_load
+ restore_lustre_params < $p
+ rm -f $p
}
run_test 155a "Verify small file correctness: read cache:on write_cache:on"
test_155b() {
[ $PARALLEL == "yes" ] && skip "skip parallel run" && return
+ local p="$TMP/$TESTSUITE-$TESTNAME.parameters"
+ save_writethrough $p
+
set_cache read on
set_cache writethrough off
test_155_small_load
+ restore_lustre_params < $p
+ rm -f $p
}
run_test 155b "Verify small file correctness: read cache:on write_cache:off"
test_155c() {
[ $PARALLEL == "yes" ] && skip "skip parallel run" && return
+ local p="$TMP/$TESTSUITE-$TESTNAME.parameters"
+ save_writethrough $p
+
set_cache read off
set_cache writethrough on
test_155_small_load
+ restore_lustre_params < $p
+ rm -f $p
}
run_test 155c "Verify small file correctness: read cache:off write_cache:on"
test_155d() {
[ $PARALLEL == "yes" ] && skip "skip parallel run" && return
+ local p="$TMP/$TESTSUITE-$TESTNAME.parameters"
+ save_writethrough $p
+
set_cache read off
set_cache writethrough off
test_155_small_load
+ restore_lustre_params < $p
+ rm -f $p
}
run_test 155d "Verify small file correctness: read cache:off write_cache:off"
test_155e() {
[ $PARALLEL == "yes" ] && skip "skip parallel run" && return
+ local p="$TMP/$TESTSUITE-$TESTNAME.parameters"
+ save_writethrough $p
+
set_cache read on
set_cache writethrough on
test_155_big_load
+ restore_lustre_params < $p
+ rm -f $p
}
run_test 155e "Verify big file correctness: read cache:on write_cache:on"
test_155f() {
[ $PARALLEL == "yes" ] && skip "skip parallel run" && return
+ local p="$TMP/$TESTSUITE-$TESTNAME.parameters"
+ save_writethrough $p
+
set_cache read on
set_cache writethrough off
test_155_big_load
+ restore_lustre_params < $p
+ rm -f $p
}
run_test 155f "Verify big file correctness: read cache:on write_cache:off"
test_155g() {
[ $PARALLEL == "yes" ] && skip "skip parallel run" && return
+ local p="$TMP/$TESTSUITE-$TESTNAME.parameters"
+ save_writethrough $p
+
set_cache read off
set_cache writethrough on
test_155_big_load
+ restore_lustre_params < $p
+ rm -f $p
}
run_test 155g "Verify big file correctness: read cache:off write_cache:on"
test_155h() {
[ $PARALLEL == "yes" ] && skip "skip parallel run" && return
+ local p="$TMP/$TESTSUITE-$TESTNAME.parameters"
+ save_writethrough $p
+
set_cache read off
set_cache writethrough off
test_155_big_load
+ restore_lustre_params < $p
+ rm -f $p
}
run_test 155h "Verify big file correctness: read cache:off write_cache:off"
local BEFORE
local AFTER
local file="$DIR/$tfile"
+ local p="$TMP/$TESTSUITE-$TESTNAME.parameters"
[ "$(facet_fstype ost1)" = "zfs" -a \
$(lustre_version_code ost1 -lt $(version_code 2.6.93)) ] &&
skip "LU-1956/LU-2261: stats not implemented on OSD ZFS" &&
return
+ save_writethrough $p
roc_hit_init
log "Turn on read and write cache"
fi
rm -f $file
+ restore_lustre_params < $p
+ rm -f $p
}
run_test 156 "Verification of tunables"
test_224c() { # LU-6441
[ $PARALLEL == "yes" ] && skip "skip parallel run" && return
remote_mds_nodsh && skip "remote MDS with nodsh" && return
+
+ local p="$TMP/$TESTSUITE-$TESTNAME.parameters"
+ save_writethrough $p
+ set_cache writethrough on
+
local pages_per_rpc=$($LCTL get_param \
osc.*.max_pages_per_rpc)
local at_max=$($LCTL get_param -n at_max)
$timeout || error "conf_param timeout=$timeout failed"
$LCTL set_param -n $pages_per_rpc
+ restore_lustre_params < $p
+ rm -f $p
}
run_test 224c "Don't hang if one of md lost during large bulk RPC"
local new_iused
for i in $(seq 120); do
new_iused=$($LFS df -i | grep OST0000 | awk '{ print $3 }')
- [ $new_iused -lt $((old_iused - 900)) ] && break
+ [ $((old_iused - new_iused)) -gt 800 ] && break
sleep 1
done
echo "waited $i sec, old Iused $old_iused, new Iused $new_iused"
- [ $new_iused -lt $((old_iused - 900)) ] ||
+ [ $((old_iused - new_iused)) -gt 800 ] ||
error "objs not destroyed after unlink"
}
run_test 311 "disable OSP precreate, and unlink should destroy objs"
+zfs_oid_to_objid()
+{
+ local ost=$1
+ local objid=$2
+
+ local vdevdir=$(dirname $(facet_vdevice $ost))
+ local cmd="$ZDB -e -p $vdevdir -dddd $(facet_device $ost)"
+ local zfs_zapid=$(do_facet $ost $cmd |
+ grep -w "/O/0/d$((objid%32))" -C 5 |
+ awk '/Object/{getline; print $1}')
+ local zfs_objid=$(do_facet $ost $cmd $zfs_zapid |
+ awk "/$objid = /"'{printf $3}')
+
+ echo $zfs_objid
+}
+
+zfs_object_blksz() {
+ local ost=$1
+ local objid=$2
+
+ local vdevdir=$(dirname $(facet_vdevice $ost))
+ local cmd="$ZDB -e -p $vdevdir -dddd $(facet_device $ost)"
+ local blksz=$(do_facet $ost $cmd $objid |
+ awk '/dblk/{getline; printf $4}')
+
+ case "${blksz: -1}" in
+ k|K) blksz=$((${blksz:0:$((${#blksz} - 1))}*1024)) ;;
+ m|M) blksz=$((${blksz:0:$((${#blksz} - 1))}*1024*1024)) ;;
+ *) ;;
+ esac
+
+ echo $blksz
+}
+
+test_312() { # LU-4856
+ [ $(facet_fstype ost1) = "zfs" ] ||
+ { skip "the test only applies to zfs" && return; }
+
+ local max_blksz=$(do_facet ost1 \
+ $ZFS get -p recordsize $(facet_device ost1) |
+ awk '!/VALUE/{print $3}')
+
+ # to make life a little bit easier
+ $LFS mkdir -c 1 -i 0 $DIR/$tdir
+ $LFS setstripe -c 1 -i 0 $DIR/$tdir
+
+ local tf=$DIR/$tdir/$tfile
+ touch $tf
+ local oid=$($LFS getstripe $tf | awk '/obdidx/{getline; print $2}')
+
+ # Get ZFS object id
+ local zfs_objid=$(zfs_oid_to_objid ost1 $oid)
+
+ # block size change by sequential over write
+ local blksz
+ for ((bs=4096; bs <= max_blksz; bs <<= 2)); do
+ dd if=/dev/zero of=$tf bs=$bs count=1 oflag=sync conv=notrunc
+
+ blksz=$(zfs_object_blksz ost1 $zfs_objid)
+ [ $blksz -eq $bs ] || error "blksz error: $blksz, expected: $bs"
+ done
+ rm -f $tf
+
+ # block size change by sequential append write
+ dd if=/dev/zero of=$tf bs=4K count=1 oflag=sync conv=notrunc
+ oid=$($LFS getstripe $tf | awk '/obdidx/{getline; print $2}')
+ zfs_objid=$(zfs_oid_to_objid ost1 $oid)
+
+ for ((count = 1; count < $((max_blksz / 4096)); count *= 2)); do
+ dd if=/dev/zero of=$tf bs=4K count=$count seek=$count \
+ oflag=sync conv=notrunc
+
+ blksz=$(zfs_object_blksz ost1 $zfs_objid)
+ blksz=$((blksz / 8192)) # in 2*4K unit
+ [ $blksz -eq $count ] ||
+ error "blksz error(in 8k): $blksz, expected: $count"
+ done
+ rm -f $tf
+
+ # random write
+ touch $tf
+ oid=$($LFS getstripe $tf | awk '/obdidx/{getline; print $2}')
+ zfs_objid=$(zfs_oid_to_objid ost1 $oid)
+
+ dd if=/dev/zero of=$tf bs=8K count=1 oflag=sync conv=notrunc
+ blksz=$(zfs_object_blksz ost1 $zfs_objid)
+ [ $blksz -eq 8192 ] || error "blksz error: $blksz, expected: 8k"
+
+ dd if=/dev/zero of=$tf bs=64K count=1 oflag=sync conv=notrunc seek=128
+ blksz=$(zfs_object_blksz ost1 $zfs_objid)
+ [ $blksz -eq 65536 ] || error "blksz error: $blksz, expected: 64k"
+
+ dd if=/dev/zero of=$tf bs=1M count=1 oflag=sync conv=notrunc
+ blksz=$(zfs_object_blksz ost1 $zfs_objid)
+ [ $blksz -eq 65536 ] || error "rewrite error: $blksz, expected: 64k"
+}
+run_test 312 "make sure ZFS adjusts its block size by write pattern"
+
test_400a() { # LU-1606, was conf-sanity test_74
local extra_flags=''
local out=$TMP/$tfile
}
run_test 406 "DNE support fs default striping"
+test_407() {
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return
+
+ [[ $(lustre_version_code $SINGLEMDS) -lt $(version_code 2.8.55) ]] &&
+ skip "Need MDS version at least 2.8.55" && return
+
+ $LFS mkdir -i 0 -c 1 $DIR/$tdir.0 ||
+ error "$LFS mkdir -i 0 -c 1 $tdir.0 failed"
+ $LFS mkdir -i 1 -c 1 $DIR/$tdir.1 ||
+ error "$LFS mkdir -i 1 -c 1 $tdir.1 failed"
+ touch $DIR/$tdir.0/$tfile.0 || error "touch $tdir.0/$tfile.0 failed"
+
+ #define OBD_FAIL_DT_TXN_STOP 0x2019
+ for idx in $(seq $MDSCOUNT); do
+ do_facet mds$idx "lctl set_param fail_loc=0x2019"
+ done
+ $LFS mkdir -c 2 $DIR/$tdir && error "$LFS mkdir -c 2 $tdir should fail"
+ mv $DIR/$tdir.0/$tfile.0 $DIR/$tdir.1/$tfile.1 &&
+ error "mv $tdir.0/$tfile.0 $tdir.1/$tfile.1 should fail"
+ true
+}
+run_test 407 "transaction fail should cause operation fail"
+
#
# tests that do cleanup/setup should be run at the end
#