Whamcloud - gitweb
LU-1431 ptlrpc: Support for over 1MB bulk I/O RPC
[fs/lustre-release.git] / lustre / tests / sanity.sh
index 1ebc64d..fe49708 100644 (file)
@@ -10653,6 +10653,56 @@ test_230b() {
 }
 run_test 230b "nested remote directory should be failed"
 
+test_231a()
+{
+       # For simplicity this test assumes that max_pages_per_rpc
+       # is the same across all OSCs
+       local max_pages=$($LCTL get_param -n osc.*.max_pages_per_rpc | head -1)
+       local bulk_size=$((max_pages * 4096))
+
+       mkdir -p $DIR/$tdir
+
+       # clear the OSC stats
+       $LCTL set_param osc.*.stats=0 &>/dev/null
+
+       # Client writes $bulk_size - there must be 1 rpc for $max_pages.
+       dd if=/dev/zero of=$DIR/$tdir/$tfile bs=$bulk_size count=1 \
+               oflag=direct &>/dev/null || error "dd failed"
+
+       local nrpcs=$($LCTL get_param osc.*.stats |awk '/ost_write/ {print $2}')
+       if [ x$nrpcs != "x1" ]; then
+               error "found $nrpc ost_write RPCs, not 1 as expected"
+       fi
+
+       # Drop the OSC cache, otherwise we will read from it
+       cancel_lru_locks osc
+
+       # clear the OSC stats
+       $LCTL set_param osc.*.stats=0 &>/dev/null
+
+       # Client reads $bulk_size.
+       dd if=$DIR/$tdir/$tfile of=/dev/null bs=$bulk_size count=1 \
+               iflag=direct &>/dev/null || error "dd failed"
+
+       nrpcs=$($LCTL get_param osc.*.stats | awk '/ost_read/ { print $2 }')
+       if [ x$nrpcs != "x1" ]; then
+               error "found $nrpc ost_read RPCs, not 1 as expected"
+       fi
+}
+run_test 231a "checking that reading/writing of BRW RPC size results in one RPC"
+
+test_231b() {
+       mkdir -p $DIR/$tdir
+       local i
+       for i in {0..1023}; do
+               dd if=/dev/zero of=$DIR/$tdir/$tfile conv=notrunc \
+                       seek=$((2 * i)) bs=4096 count=1 &>/dev/null ||
+                       error "dd of=$DIR/$tdir/$tfile seek=$((2 * i)) failed"
+       done
+       sync
+}
+run_test 231b "must not assert on fully utilized OST request buffer"
+
 #
 # tests that do cleanup/setup should be run at the end
 #