}
run_test 27ce "more stripes than OSTs with -o"
+test_27cf() {
+ local osp_proc="osp.$FSNAME-OST0000-osc-MDT000*.active"
+ local pid=0
+
+ test_mkdir -p $DIR/$tdir || error "failed to mkdir $DIR/$tdir"
+ do_facet $SINGLEMDS "$LCTL set_param -n $osp_proc=0"
+ stack_trap "do_facet $SINGLEMDS $LCTL set_param -n $osp_proc=1" EXIT
+ wait_update_facet $SINGLEMDS "$LCTL get_param -n $osp_proc | grep 1" ||
+ error "failed to set $osp_proc=0"
+
+ $LFS setstripe -o 0 $DIR/$tdir/$tfile &
+ pid=$!
+ sleep 1
+ do_facet $SINGLEMDS "$LCTL set_param -n $osp_proc=1"
+ wait_update_facet $SINGLEMDS "$LCTL get_param -n $osp_proc | grep 0" ||
+ error "failed to set $osp_proc=1"
+ wait $pid
+ [[ $pid -ne 0 ]] ||
+ error "should return error due to $osp_proc=0"
+}
+run_test 27cf "'setstripe -o' on inactive OSTs should return error"
+
test_27d() {
test_mkdir $DIR/$tdir
$LFS setstripe -c 0 -i -1 -S 0 $DIR/$tdir/$tfile ||
}
run_test 56ra "check lfs find -size -lazy works for data on OSTs"
+test_56rb() {
+ local dir=$DIR/$tdir
+ local tmp=$TMP/$tfile.log
+ local mdt_idx;
+
+ test_mkdir -p $dir || error "failed to mkdir $dir"
+ $LFS setstripe -c 1 -i 0 $dir/$tfile ||
+ error "failed to setstripe $dir/$tfile"
+ dd if=/dev/zero of=$dir/$tfile bs=1M count=1
+
+ stack_trap "rm -f $tmp" EXIT
+ $LFS find --size +100K --ost 0 $dir 2>&1 | tee $tmp
+ [ -z "$(cat $tmp | grep "obd_uuid: ")" ] ||
+ error "failed to find --size +100K --ost 0 $dir"
+ $LFS find --size +100K --mdt $mdt_idx $dir 2>&1 | tee $tmp
+ [ -z "$(cat $tmp | grep "obd_uuid: ")" ] ||
+ error "failed to find --size +100K --mdt $mdt_idx $dir"
+}
+run_test 56rb "check lfs find --size --ost/--mdt works"
+
test_56s() { # LU-611 #LU-9369
[[ $OSTCOUNT -lt 2 ]] && skip_env "need at least 2 OSTs"
[ $PARALLEL == "yes" ] && skip "skip parallel run"
local file=$DIR/$tfile
- local sz_MB=${FILESIZE_101d:-500}
+ local sz_MB=${FILESIZE_101d:-80}
local ra_MB=${READAHEAD_MB:-40}
local free_MB=$(($(df -P $DIR | tail -n 1 | awk '{ print $4 }') / 1024))
$LCTL get_param -n llite.*.max_read_ahead_mb
echo Reading the test file $file with read-ahead disabled
- local raOFF=$(do_and_time "dd if=$file of=/dev/null bs=1M count=$sz_MB")
+ local sz_KB=$((sz_MB * 1024 / 4))
+ local raOFF=$(do_and_time "dd if=$file of=/dev/null bs=4k count=$sz_KB")
echo Cancel LRU locks on lustre client to flush the client cache
cancel_lru_locks osc
$LCTL set_param -n llite.*.max_read_ahead_mb=$ra_MB
echo Reading the test file $file with read-ahead enabled
- local raON=$(do_and_time "dd if=$file of=/dev/null bs=1M count=$sz_MB")
+ local raON=$(do_and_time "dd if=$file of=/dev/null bs=4k count=$sz_KB")
echo "read-ahead disabled time read $raOFF"
- echo "read-ahead enabled time read $raON"
+ echo "read-ahead enabled time read $raON"
rm -f $file
wait_delete_completed
}
run_test 101i "allow current readahead to exceed reservation"
+test_101j() {
+ $LFS setstripe -i 0 -c 1 $DIR/$tfile ||
+ error "setstripe $DIR/$tfile failed"
+ local file_size=$((1048576 * 16))
+ local old_ra=$($LCTL get_param -n llite.*.max_read_ahead_mb | head -n 1)
+ stack_trap "$LCTL set_param -n llite.*.max_read_ahead_mb $old_ra" EXIT
+
+ echo Disable read-ahead
+ $LCTL set_param -n llite.*.max_read_ahead_mb=0
+
+ dd if=/dev/zero of=$DIR/$tfile bs=1M count=$(($file_size / 1048576))
+ for blk in $PAGE_SIZE 1048576 $file_size; do
+ cancel_lru_locks osc
+ echo "Reset readahead stats"
+ $LCTL set_param -n llite.*.read_ahead_stats=0
+ local count=$(($file_size / $blk))
+ dd if=$DIR/$tfile bs=$blk count=$count of=/dev/null
+ local miss=$($LCTL get_param -n llite.*.read_ahead_stats |
+ get_named_value 'failed to fast read' |
+ cut -d" " -f1 | calc_total)
+ $LCTL get_param -n llite.*.read_ahead_stats
+ [ $miss -eq $count ] || error "expected $count got $miss"
+ done
+
+ rm -f $p $DIR/$tfile
+}
+run_test 101j "A complete read block should be submitted when no RA"
+
setup_test102() {
test_mkdir $DIR/$tdir
chown $RUNAS_ID $DIR/$tdir
fi
if [ $facet_ver -ge $(version_code 2.5.54) ]; then
do_facet $facet "$LCTL list_param -R '*' | grep '=' |
- tr -d= | egrep -v 'force_lbug|changelog_mask' |
+ tr -d = | egrep -v 'force_lbug|changelog_mask' |
xargs badarea_io" ||
error_133 "$facet badarea_io failed"
else
}
run_test 230m "xattrs not changed after dir migration"
+test_230n() {
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs"
+ [[ $MDS1_VERSION -ge $(version_code 2.13.53) ]] ||
+ skip "Need MDS version at least 2.13.53"
+
+ $LFS mkdir -i 0 $DIR/$tdir || error "mkdir $tdir failed"
+ cat /etc/hosts > $DIR/$tdir/$tfile
+ $LFS mirror extend -N1 $DIR/$tdir/$tfile || error "Mirroring failed"
+ $LFS migrate -m 1 $DIR/$tdir || error "Migration failed"
+
+ cmp /etc/hosts $DIR/$tdir/$tfile ||
+ error "File data mismatch after migration"
+}
+run_test 230n "Dir migration with mirrored file"
+
test_231a()
{
# For simplicity this test assumes that max_pages_per_rpc
error "truncate $tdir/trunc failed"
local bs=1048576
- dd if=/dev/zero of=$DIR/$tdir/single_dd bs=$bs count=1 ||
+ dd if=/dev/zero of=$DIR/$tdir/single_dd bs=$bs count=1 conv=fsync ||
error "write $tfile failed"
# multi-client wirtes
wait ${pids[$i]}
done
- sleep 5
+ do_rpc_nodes "$CLIENTS" cancel_lru_locks osc
+ do_nodes "$CLIENTS" "sync ; sleep 5 ; sync"
$LSOM_SYNC -u $cl_user -m $FSNAME-MDT0000 $MOUNT
check_lsom_data $DIR/$tdir/trunc
check_lsom_data $DIR/$tdir/single_dd
}
run_test 810 "partial page writes on ZFS (LU-11663)"
-test_811() {
- [ $MDS1_VERSION -lt $(version_code 2.11.56) ] &&
- skip "Need MDS version at least 2.11.56"
-
- #define OBD_FAIL_MDS_ORPHAN_DELETE 0x165
- do_facet mds1 $LCTL set_param fail_loc=0x165
- $MULTIOP $DIR/$tfile Ouc || error "multiop failed"
-
- stop mds1
- start mds1 $(mdsdevname 1) $MDS_MOUNT_OPTS
-
- wait_update_facet mds1 "pgrep orph_.*-MDD | wc -l" "0" ||
- error "MDD orphan cleanup thread not quit"
-}
-run_test 811 "orphan name stub can be cleaned up in startup"
-
test_812a() {
[ $OST1_VERSION -lt $(version_code 2.12.51) ] &&
skip "OST < 2.12.51 doesn't support this fail_loc"