sanity.sh test_101b hangs during Lustre sanity test. This
is happening especially in cases where the $OSTCOUNT is
greater than 100.
Due to OSTCOUNT of more than 100, the ITERATION parameter
results in '0', which causes the 'reads' utility to run
in infinite 'for' loop. Thus resulting in a hang on such
setups.
This change would make necessary changes in FILE_LENGTH in
test_101b and its related routines(setup_101bc, ra_check)
so that, the test won't hang and would proceed rightly.
Signed-off-by: Parinay Kondekar <parinay_kondekar@xyratex.com>
Change-Id: I0815dfd8777d3055cf5dd6de01b2a18d1bff96bf
Xyratex-bug-id: MRP-1362
Reviewed-on: http://review.whamcloud.com/9788
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Jian Yu <jian.yu@intel.com>
Reviewed-by: Nathaniel Clark <nathaniel.l.clark@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
setup_test101bc() {
test_mkdir -p $DIR/$tdir
setup_test101bc() {
test_mkdir -p $DIR/$tdir
- STRIPE_SIZE=1048576
- STRIPE_COUNT=$OSTCOUNT
+ local STRIPE_SIZE=$1
+ local FILE_LENGTH=$2
+ local FILE_SIZE_MB=$((FILE_LENGTH / STRIPE_SIZE))
+
local list=$(comma_list $(osts_nodes))
set_osd_param $list '' read_cache_enable 0
set_osd_param $list '' writethrough_cache_enable 0
local list=$(comma_list $(osts_nodes))
set_osd_param $list '' read_cache_enable 0
set_osd_param $list '' writethrough_cache_enable 0
# prepare the read-ahead file
$SETSTRIPE -S $STRIPE_SIZE -i $STRIPE_OFFSET -c $OSTCOUNT $DIR/$tfile
# prepare the read-ahead file
$SETSTRIPE -S $STRIPE_SIZE -i $STRIPE_OFFSET -c $OSTCOUNT $DIR/$tfile
- dd if=/dev/zero of=$DIR/$tfile bs=1024k count=100 2> /dev/null
+ dd if=/dev/zero of=$DIR/$tfile bs=$STRIPE_SIZE \
+ count=$FILE_SIZE_MB 2> /dev/null
+
ra_check_101() {
local READ_SIZE=$1
ra_check_101() {
local READ_SIZE=$1
- local STRIPE_SIZE=1048576
+ local STRIPE_SIZE=$2
+ local FILE_LENGTH=$3
local RA_INC=1048576
local STRIDE_LENGTH=$((STRIPE_SIZE/READ_SIZE))
local RA_INC=1048576
local STRIDE_LENGTH=$((STRIPE_SIZE/READ_SIZE))
- local FILE_LENGTH=$((64*100))
local discard_limit=$((((STRIDE_LENGTH - 1)*3/(STRIDE_LENGTH*OSTCOUNT))* \
(STRIDE_LENGTH*OSTCOUNT - STRIDE_LENGTH)))
DISCARD=`$LCTL get_param -n llite.*.read_ahead_stats | \
local discard_limit=$((((STRIDE_LENGTH - 1)*3/(STRIDE_LENGTH*OSTCOUNT))* \
(STRIDE_LENGTH*OSTCOUNT - STRIDE_LENGTH)))
DISCARD=`$LCTL get_param -n llite.*.read_ahead_stats | \
[ "$OSTCOUNT" -lt "2" ] && skip_env "skipping stride IO stride-ahead test" && return
local STRIPE_SIZE=1048576
local STRIDE_SIZE=$((STRIPE_SIZE*OSTCOUNT))
[ "$OSTCOUNT" -lt "2" ] && skip_env "skipping stride IO stride-ahead test" && return
local STRIPE_SIZE=1048576
local STRIDE_SIZE=$((STRIPE_SIZE*OSTCOUNT))
- local FILE_LENGTH=$((STRIPE_SIZE*100))
- local ITERATION=$((FILE_LENGTH/STRIDE_SIZE))
+ if [ $SLOW == "yes" ]; then
+ local FILE_LENGTH=$((STRIDE_SIZE * 64))
+ else
+ local FILE_LENGTH=$((STRIDE_SIZE * 8))
+ fi
+
+ local ITERATION=$((FILE_LENGTH / STRIDE_SIZE))
+
# prepare the read-ahead file
# prepare the read-ahead file
+ setup_test101bc $STRIPE_SIZE $FILE_LENGTH
cancel_lru_locks osc
for BIDX in 2 4 8 16 32 64 128 256
do
cancel_lru_locks osc
for BIDX in 2 4 8 16 32 64 128 256
do
$READS -f $DIR/$tfile -l $STRIDE_LENGTH -o $OFFSET \
-s $FILE_LENGTH -b $STRIPE_SIZE -a $READ_COUNT -n $ITERATION
cancel_lru_locks osc
$READS -f $DIR/$tfile -l $STRIDE_LENGTH -o $OFFSET \
-s $FILE_LENGTH -b $STRIPE_SIZE -a $READ_COUNT -n $ITERATION
cancel_lru_locks osc
+ ra_check_101 $BSIZE $STRIPE_SIZE $FILE_LENGTH
done
cleanup_test101bc
true
done
cleanup_test101bc
true
local nreads=10000
local osc_rpc_stats
local nreads=10000
local osc_rpc_stats
+ setup_test101bc $STRIPE_SIZE $FILE_LENGTH
cancel_lru_locks osc
$LCTL set_param osc.*.rpc_stats 0
cancel_lru_locks osc
$LCTL set_param osc.*.rpc_stats 0