From 545f947c373dc2c306a2f5f67743b95654b67a87 Mon Sep 17 00:00:00 2001 From: Li Wei Date: Wed, 20 Jun 2012 10:41:34 +0800 Subject: [PATCH] LU-1415 tests: Handle OFD procfs changes This patch handles these procfs entry changes in OFD: - obdfilter.*.mntdev -> osd-*.*.mntdev - obdfilter.*. -> osd-*.*. Change-Id: Ie9fac69446b5c183bc8eed44a86338ef62197529 Signed-off-by: Li Wei Reviewed-on: http://review.whamcloud.com/2934 Reviewed-by: Yu Jian Tested-by: Hudson Tested-by: Maloo Reviewed-by: Andreas Dilger --- lustre/tests/lfsck.sh | 35 ++++++++++++----------- lustre/tests/sanity.sh | 53 +++++++++++++++++----------------- lustre/tests/test-framework.sh | 64 +++++++++++++++++++++++++++++------------- 3 files changed, 89 insertions(+), 63 deletions(-) diff --git a/lustre/tests/lfsck.sh b/lustre/tests/lfsck.sh index 2c58f5f..6c8103c 100644 --- a/lustre/tests/lfsck.sh +++ b/lustre/tests/lfsck.sh @@ -121,23 +121,24 @@ get_ost_node() { # Get the OST target device (given the OST facet name and OST index). get_ost_dev() { - local node=$1 - local obdidx=$2 - local ost_name - local ost_dev - - ost_name=$(ostname_from_index $obdidx) - ost_dev=$(do_node $node "lctl get_param -n obdfilter.${ost_name}.mntdev") - [ ${PIPESTATUS[0]} -ne 0 ] && \ - echo "failed to find the OST device with index $obdidx on $facet" && \ - return 1 - - if [[ $ost_dev = *loop* ]]; then - ost_dev=$(do_node $node "losetup $ost_dev" | \ - sed -e "s/.*(//" -e "s/).*//") - fi - - echo $ost_dev + local node=$1 + local obdidx=$2 + local ost_name + local ost_dev + + ost_name=$(ostname_from_index $obdidx) + ost_dev=$(get_obdfilter_param $node $ost_name mntdev) + if [ $? -ne 0 ]; then + printf "unable to find OST%04x on $facet\n" $obdidx + return 1 + fi + + if [[ $ost_dev = *loop* ]]; then + ost_dev=$(do_node $node "losetup $ost_dev" | \ + sed -e "s/.*(//" -e "s/).*//") + fi + + echo $ost_dev } # Get the file names to be duplicated or removed on the MDS. diff --git a/lustre/tests/sanity.sh b/lustre/tests/sanity.sh index 528055b..dffae2f 100644 --- a/lustre/tests/sanity.sh +++ b/lustre/tests/sanity.sh @@ -7647,44 +7647,43 @@ test_150() { run_test 150 "truncate/append tests" function roc_hit() { - local list=$(comma_list $(osts_nodes)) + local list=$(comma_list $(osts_nodes)) - ACCNUM=$(do_nodes $list $LCTL get_param -n obdfilter.*.stats | \ - awk '/'cache_hit'/ {sum+=$2} END {print sum}') - echo $ACCNUM + echo $(get_obdfilter_param $list '' stats | + awk '/'cache_hit'/ {sum+=$2} END {print sum}') } function set_cache() { - local on=1 + local on=1 - if [ "$2" == "off" ]; then - on=0; - fi - local list=$(comma_list $(osts_nodes)) - do_nodes $list lctl set_param obdfilter.*.${1}_cache_enable $on + if [ "$2" == "off" ]; then + on=0; + fi + local list=$(comma_list $(osts_nodes)) + set_obdfilter_param $list '' $1_cache_enable $on - cancel_lru_locks osc + cancel_lru_locks osc } test_151() { - remote_ost_nodsh && skip "remote OST with nodsh" && return + remote_ost_nodsh && skip "remote OST with nodsh" && return - local CPAGES=3 - local list=$(comma_list $(osts_nodes)) + local CPAGES=3 + local list=$(comma_list $(osts_nodes)) - # check whether obdfilter is cache capable at all - if ! do_nodes $list $LCTL get_param -n obdfilter.*.read_cache_enable > /dev/null; then - echo "not cache-capable obdfilter" - return 0 - fi + # check whether obdfilter is cache capable at all + if ! get_obdfilter_param $list '' read_cache_enable >/dev/null; then + echo "not cache-capable obdfilter" + return 0 + fi - # check cache is enabled on all obdfilters - if do_nodes $list $LCTL get_param -n obdfilter.*.read_cache_enable | grep 0 >&/dev/null; then - echo "oss cache is disabled" - return 0 - fi + # check cache is enabled on all obdfilters + if get_obdfilter_param $list '' read_cache_enable | grep 0; then + echo "oss cache is disabled" + return 0 + fi - do_nodes $list $LCTL set_param -n obdfilter.*.writethrough_cache_enable 1 + set_obdfilter_param $list '' writethrough_cache_enable 1 # pages should be in the case right after write dd if=/dev/urandom of=$DIR/$tfile bs=4k count=$CPAGES || error "dd failed" @@ -7698,7 +7697,7 @@ test_151() { # the following read invalidates the cache cancel_lru_locks osc - do_nodes $list $LCTL set_param -n obdfilter.*.read_cache_enable 0 + set_obdfilter_param $list '' read_cache_enable 0 cat $DIR/$tfile >/dev/null # now data shouldn't be found in the cache @@ -7710,7 +7709,7 @@ test_151() { error "IN CACHE: before: $BEFORE, after: $AFTER" fi - do_nodes $list $LCTL set_param -n obdfilter.*.read_cache_enable 1 + set_obdfilter_param $list '' read_cache_enable 1 rm -f $DIR/$tfile } run_test 151 "test cache on oss and controls ===============================" diff --git a/lustre/tests/test-framework.sh b/lustre/tests/test-framework.sh index ec6415a..7953df3 100644 --- a/lustre/tests/test-framework.sh +++ b/lustre/tests/test-framework.sh @@ -738,6 +738,34 @@ ostdevlabel() { echo -n $label } +# +# This and set_obdfilter_param() shall be used to access OSD parameters +# once existed under "obdfilter": +# +# mntdev +# stats +# read_cache_enable +# writethrough_cache_enable +# +get_obdfilter_param() { + local nodes=$1 + local device=${2:-$FSNAME-OST*} + local name=$3 + + do_nodes $nodes "$LCTL get_param -n obdfilter.$device.$name \ + osd-*.$device.$name" 2>&1 | grep -v 'Found no match' +} + +set_obdfilter_param() { + local nodes=$1 + local device=${2:-$FSNAME-OST*} + local name=$3 + local value=$4 + + do_nodes $nodes "$LCTL set_param -n obdfilter.$device.$name=$value \ + osd-*.$device.$name=$value" 2>&1 | grep -v 'Found no match' +} + set_debug_size () { local dz=${1:-$DEBUG_SIZE} @@ -3015,26 +3043,24 @@ cleanup_and_setup_lustre() { # Get all of the server target devices from a given server node and type. get_mnt_devs() { - local node=$1 - local type=$2 - local obd_type - local devs - local dev - - case $type in - mdt) obd_type="osd" ;; - ost) obd_type="obdfilter" ;; # needs to be fixed when OST also uses an OSD - *) echo "invalid server type" && return 1 ;; - esac + local node=$1 + local type=$2 + local devs + local dev - devs=$(do_node $node "lctl get_param -n $obd_type*.*.mntdev") - for dev in $devs; do - case $dev in - *loop*) do_node $node "losetup $dev" | \ - sed -e "s/.*(//" -e "s/).*//" ;; - *) echo $dev ;; - esac - done + if [ "$type" == ost ]; then + devs=$(get_obdfilter_param $node "" mntdev) + else + devs=$(do_node $node \ + "lctl get_param -n osd-*.$FSNAME-M*.mntdev") + fi + for dev in $devs; do + case $dev in + *loop*) do_node $node "losetup $dev" | \ + sed -e "s/.*(//" -e "s/).*//" ;; + *) echo $dev ;; + esac + done } # Get all of the server target devices. -- 1.8.3.1