run_test 32b "lockless i/o"
print_jbd_stat () {
- local dev=$(basename $(do_facet $SINGLEMDS lctl get_param -n osd.*MDT*.mntdev))
- do_facet $SINGLEMDS cat /proc/fs/jbd/$dev/info | head -1
+ local dev
+ local mdts=$(get_facets MDS)
+ local varcvs
+ local mds
+
+ local stat=0
+ for mds in ${mdts//,/ }; do
+ varsvc=${mds}_svc
+ dev=$(basename $(do_facet $mds lctl get_param -n osd.${!varsvc}.mntdev))
+ val=$(do_facet $mds cat /proc/fs/jbd/$dev/info | head -1 | cut -d" " -f1)
+ stat=$(( stat + val))
+ done
+ echo $stat
}
# commit on sharing tests
local nfiles=${TEST33_NFILES:-10000}
local param_file=$TMP/$tfile-params
- save_lustre_params $(facet_active_host $SINGLEMDS) "mdt.*.commit_on_sharing" > $param_file
+ save_lustre_params $(comma_list $(mdts_nodes)) "mdt.*.commit_on_sharing" > $param_file
local COS
local jbdold
do_nodes $CLIENT1,$CLIENT2 "mkdir -p $DIR1/$tdir-\\\$(hostname)-$i"
jbdold=$(print_jbd_stat)
- echo "=== START createmany $jbdold"
+ echo "=== START createmany old: $jbdold transaction"
local elapsed=$(do_and_time "do_nodes $CLIENT1,$CLIENT2 createmany -o $DIR1/$tdir-\\\$(hostname)-$i/f- -r $DIR2/$tdir-\\\$(hostname)-$i/f- $nfiles > /dev/null 2>&1")
jbdnew=$(print_jbd_stat)
- jbd=$((`echo $jbdnew | cut -d" " -f1` - `echo $jbdold | cut -d" " -f1`))
- echo "=== END createmany $jbdnew : $jbd transactions nfiles $nfiles time $elapsed COS=$COS"
+ jbd=$(( jbdnew - jbdold ))
+ echo "=== END createmany new: $jbdnew transaction : $jbd transactions nfiles $nfiles time $ELAPSED COS=$COS"
avgjbd=$(( avgjbd + jbd ))
avgtime=$(( avgtime + elapsed ))
done
}
do_node() {
- HOST=$1
+ local verbose=false
+ # do not stripe off hostname if verbose, bug 19215
+ if [ x$1 = x--verbose ]; then
+ shift
+ verbose=true
+ fi
+
+ local HOST=$1
shift
local myPDSH=$PDSH
if [ "$HOST" = "$HOSTNAME" ]; then
[ -n "$($myPDSH $HOST cat $command_status)" ] && return 1 || true
return 0
fi
- $myPDSH $HOST "(PATH=\$PATH:$RLUSTRE/utils:$RLUSTRE/tests:/sbin:/usr/sbin; cd $RPWD; sh -c \"$@\")" | sed "s/^${HOST}: //"
+
+ if $verbose ; then
+ $myPDSH $HOST "(PATH=\$PATH:$RLUSTRE/utils:$RLUSTRE/tests:/sbin:/usr/sbin; cd $RPWD; sh -c \"$@\")"
+ else
+ $myPDSH $HOST "(PATH=\$PATH:$RLUSTRE/utils:$RLUSTRE/tests:/sbin:/usr/sbin; cd $RPWD; sh -c \"$@\")" | sed "s/^${HOST}: //"
+ fi
return ${PIPESTATUS[0]}
}
}
do_nodes() {
+ local verbose=false
+ # do not stripe off hostname if verbose, bug 19215
+ if [ x$1 = x--verbose ]; then
+ shift
+ verbose=true
+ fi
+
local rnodes=$1
shift
if $(single_local_node $rnodes); then
+ $verbose && echo -n $rnodes:' ' || true
do_node $rnodes $@
return $?
fi
$myPDSH $rnodes $LCTL mark "$@" > /dev/null 2>&1 || :
fi
- $myPDSH $rnodes "(PATH=\$PATH:$RLUSTRE/utils:$RLUSTRE/tests:/sbin:/usr/sbin; cd $RPWD; sh -c \"$@\")" | sed -re "s/\w+:\s//g"
+ if $verbose ; then
+ $myPDSH $rnodes "(PATH=\$PATH:$RLUSTRE/utils:$RLUSTRE/tests:/sbin:/usr/sbin; cd $RPWD; sh -c \"$@\")"
+ else
+ $myPDSH $rnodes "(PATH=\$PATH:$RLUSTRE/utils:$RLUSTRE/tests:/sbin:/usr/sbin; cd $RPWD; sh -c \"$@\")" | sed -re "s/\w+:\s//g"
+ fi
return ${PIPESTATUS[0]}
}
# generate a stream of formatted strings (<node> <param name>=<param value>)
save_lustre_params() {
local s
- do_node $1 "lctl get_param $2" | while read s; do echo "$1 $s"; done
+ do_nodes --verbose $1 "lctl get_param $2 | while read s; do echo \\\$s; done"
}
# restore lustre parameters from input stream, produces by save_lustre_params
local name
local val
while IFS=" =" read node name val; do
- do_node $node "lctl set_param -n $name $val"
+ do_node ${node//:/} "lctl set_param -n $name $val"
done
}