From e19d4187599ffe7788f8045ad23fbd2f12ee78eb Mon Sep 17 00:00:00 2001 From: Andreas Dilger Date: Mon, 3 May 2021 19:25:23 -0600 Subject: [PATCH] LU-13440 utils: update sanity 413a, 413b and 413c In sanity test 413a,413b and 413c, create "qos" directory on most full directory, so that its subdirectories won't be created on the same MDT. Lustre-change: https://review.whamcloud.com/43530 Lustre-commit: 1dbe63301b8c5cb7f7d0fe9960cafd3cd0e45534 Test-Parameters: trivial Signed-off-by: Andreas Dilger Reviewed-by: Jian Yu Reviewed-by: Lai Siyao Reviewed-by: Oleg Drokin Change-Id: Ia8061ee48ac219e6948d667269c3ad80f6198401 Reviewed-on: https://review.whamcloud.com/44542 Tested-by: jenkins Tested-by: Maloo --- lustre/tests/sanity.sh | 43 +++++++++++++++++++++++++++++++++---------- lustre/utils/lfs.c | 2 +- 2 files changed, 34 insertions(+), 11 deletions(-) diff --git a/lustre/tests/sanity.sh b/lustre/tests/sanity.sh index a88f8da..b3a6e37 100755 --- a/lustre/tests/sanity.sh +++ b/lustre/tests/sanity.sh @@ -23657,7 +23657,7 @@ test_qos_mkdir() { (( $count == 100 )) || error "subdirs are not evenly distributed" elif (( $i == $stripe_index )); then - (( $count == 100 * $MDSCOUNT )) || + (( $count == 100 * MDSCOUNT )) || error "$count subdirs created on MDT$i" else (( $count == 0 )) || @@ -23669,8 +23669,8 @@ test_qos_mkdir() { grep -c -P "^\s+$i\t") echo "$count stripes created on MDT$i" # deviation should < 5% of average - (( $count >= 95 * $stripe_count && - $count <= 105 * $stripe_count)) || + (( $count >= 95 * stripe_count && + $count <= 105 * stripe_count)) || error "stripes are not evenly distributed" fi done @@ -23742,7 +23742,7 @@ test_qos_mkdir() { if [ $stripe_count -gt 1 ]; then count=$($LFS getdirstripe $testdir/* | - grep -P "^\s+$i\t" | wc -l) + grep -c -P "^\s+$i\t") echo "$count stripes created on MDT$i" fi done @@ -23765,6 +23765,28 @@ test_qos_mkdir() { fi } +most_full_mdt() { + local ffree + local bavail + local bsize + local min + local min_index + local tmp + + ffree=($(lctl get_param -n mdc.*[mM][dD][cC]-[^M]*.filesfree)) + bavail=($(lctl get_param -n mdc.*[mM][dD][cC]-[^M]*.kbytesavail)) + bsize=$(lctl get_param -n mdc.*MDT0000*.blocksize) + + min=$(((${ffree[0]} >> 8) * (${bavail[0]} * bsize >> 16))) + min_index=0 + for ((i = 1; i < ${#ffree[@]}; i++)); do + tmp=$(((${ffree[i]} >> 8) * (${bavail[i]} * bsize >> 16))) + (( tmp < min )) && min=$tmp && min_index=$i + done + + echo -n $min_index +} + test_413a() { [ $MDSCOUNT -lt 2 ] && skip "We need at least 2 MDTs for this test" @@ -23778,7 +23800,8 @@ test_413a() { for stripe_count in $(seq 1 $((MDSCOUNT - 1))); do mkdir $DIR/$tdir-s$stripe_count || error "mkdir failed" mkdir $DIR/$tdir-s$stripe_count/rr || error "mkdir failed" - mkdir $DIR/$tdir-s$stripe_count/qos || error "mkdir failed" + $LFS mkdir -i $(most_full_mdt) $DIR/$tdir-s$stripe_count/qos || + error "mkdir failed" test_qos_mkdir "$LFS mkdir -i -1 -c $stripe_count" $stripe_count done } @@ -23799,7 +23822,8 @@ test_413b() { testdir=$DIR/$tdir-s$stripe_count mkdir $testdir || error "mkdir $testdir failed" mkdir $testdir/rr || error "mkdir rr failed" - mkdir $testdir/qos || error "mkdir qos failed" + $LFS mkdir -i $(most_full_mdt) $testdir/qos || + error "mkdir qos failed" $LFS setdirstripe -D -c $stripe_count --max-inherit-rr 2 \ $testdir/rr || error "setdirstripe rr failed" $LFS setdirstripe -D -c $stripe_count $testdir/qos || @@ -23810,7 +23834,7 @@ test_413b() { run_test 413b "QoS mkdir under dir whose default LMV starting MDT offset is -1" test_413c() { - [ $MDSCOUNT -ge 2 ] || + (( $MDSCOUNT >= 2 )) || skip "We need at least 2 MDTs for this test" [ $MDS1_VERSION -ge $(version_code 2.14.0) ] || @@ -23823,7 +23847,7 @@ test_413c() { testdir=$DIR/${tdir}-s1 mkdir -v $testdir || error "mkdir $testdir failed" mkdir -v $testdir/rr || error "mkdir rr failed" - mkdir -v $testdir/qos || error "mkdir qos failed" + $LFS mkdir -i $(most_full_mdt) $testdir/qos || error "mkdir qos failed" # default max_inherit is -1, default max_inherit_rr is 0 $LFS setdirstripe -D -c 1 $testdir/rr || error "setdirstripe rr failed" @@ -23835,8 +23859,7 @@ test_413c() { inherit=$($LFS getdirstripe -D -X $testdir/rr/level1) (( $inherit == -1 )) || error "rr/level1 inherit $inherit != -1" inherit_rr=$($LFS getdirstripe -D --max-inherit-rr $testdir/rr/level1) - (( $inherit_rr == 0 )) || - error "rr/level1 inherit-rr $inherit_rr != 0" + (( $inherit_rr == 0 )) || error "rr/level1 inherit-rr $inherit_rr != 0" mkdir -v $testdir/qos/level1 || error "mkdir qos/level1 failed" inherit=$($LFS getdirstripe -D -X $testdir/qos/level1) diff --git a/lustre/utils/lfs.c b/lustre/utils/lfs.c index 094d7b9..103db65 100644 --- a/lustre/utils/lfs.c +++ b/lustre/utils/lfs.c @@ -6439,7 +6439,7 @@ static int lfs_setdirstripe(int argc, char **argv) lsa.lsa_stripe_off != LLAPI_LAYOUT_DEFAULT && lsa.lsa_stripe_off != LMV_OFFSET_DEFAULT) { fprintf(stderr, - "%s %s: max-inherit-rr is meaningless if stripe offset %lld != -1\n", + "%s %s: max-inherit-rr needs mdt-index=-1, not %lld\n", progname, argv[0], lsa.lsa_stripe_off); return CMD_HELP; } -- 1.8.3.1