}
run_test 15 "test out-of-space with multiple writers ==========="
+COUNT=${COUNT:-2500}
+# The FSXNUM reduction for ZFS is needed until ORI-487 is fixed.
+# We don't want to skip it entirely, but ZFS is VERY slow and cannot
+# pass a 2500 operation dual-mount run within the time limit.
+if [ "$OSTFSTYPE" = "zfs" ]; then
+ FSXNUM=$((COUNT / 5))
+ FSXP=1
+elif [ "$SLOW" = "yes" ]; then
+ FSXNUM=$((COUNT * 5))
+ FSXP=500
+else
+ FSXNUM=$COUNT
+ FSXP=100
+fi
+
test_16() {
- rm -f $MOUNT1/fsxfile
- lfs setstripe $MOUNT1/fsxfile -c -1 # b=10919
- fsx -c 50 -p 100 -N 2500 -l $((SIZE * 256)) -S 0 $FSXOPT \
- $MOUNT1/fsxfile $MOUNT2/fsxfile
+ local file1=$DIR1/$tfile
+ local file2=$DIR2/$tfile
+
+ # to allocate grant because it may run out due to test_15.
+ lfs setstripe -c -1 $file1
+ dd if=/dev/zero of=$file1 bs=$STRIPE_BYTES count=$OSTCOUNT oflag=sync
+ dd if=/dev/zero of=$file2 bs=$STRIPE_BYTES count=$OSTCOUNT oflag=sync
+ rm -f $file1
+
+ lfs setstripe -c -1 $file1 # b=10919
+ fsx -c 50 -p $FSXP -N $FSXNUM -l $((SIZE * 256)) -S 0 $file1 $file2
}
-run_test 16 "2500 iterations of dual-mount fsx ================="
+run_test 16 "$FSXNUM iterations of dual-mount fsx"
test_17() { # bug 3513, 3667
remote_ost_nodsh && skip "remote OST with nodsh" && return
while [ $i -le 10 ]; do
lctl mark "start test"
- local before=$($LFS df | awk '{if ($1 ~/^filesystem/) \
- {print $5; exit} }')
- dd if=/dev/zero of=$DIR1/$tdir/file000 bs=1M count=$SIZE
- sync # sync data from client's cache
- sync_all_data # sync data from server's cache (delayed
- # allocation)
+ local before=$($LFS df | awk '{ if ($1 ~/^filesystem/) \
+ { print $5; exit} }')
+ dd if=/dev/zero of=$DIR1/$tdir/$tfile bs=1M count=$SIZE ||
+ error "dd $DIR1/$tdir/$tfile ${SIZE}MB failed"
+ sync # sync data from client cache
+ sync_all_data # sync data from server cache (delayed allocation)
sleep 1
- local after_dd=$($LFS df | awk '{if ($1 ~/^filesystem/) \
- {print $5; exit} }')
- multiop_bg_pause $DIR2/$tdir/file000 O_r${SIZE_B}c || return 3
+ local after_dd=$($LFS df | awk '{ if ($1 ~/^filesystem/) \
+ { print $5; exit} }')
+ multiop_bg_pause $DIR2/$tdir/$tfile O_r${SIZE_B}c || return 3
read_pid=$!
- rm -f $DIR1/$tdir/file000
+ rm -f $DIR1/$tdir/$tfile
kill -USR1 $read_pid
wait $read_pid
wait_delete_completed
- local after=$($LFS df | awk '{if ($1 ~/^filesystem/) \
- {print $5; exit} }')
+ local after=$($LFS df | awk '{ if ($1 ~/^filesystem/) \
+ { print $5; exit} }')
echo "*** cycle($i) *** before($before) after_dd($after_dd)" \
"after($after)"
# this free space! not used
[ "$(mount | grep $MOUNT2)" ] && umount $MOUNT2
-complete $(basename $0) $SECONDS
+complete $SECONDS
check_and_cleanup_lustre
exit_status