Whamcloud - gitweb
LU-13440 utils: update sanity 413a, 413b and 413c
authorAndreas Dilger <adilger@whamcloud.com>
Tue, 4 May 2021 01:25:23 +0000 (19:25 -0600)
committerAndreas Dilger <adilger@whamcloud.com>
Wed, 11 Aug 2021 02:11:39 +0000 (02:11 +0000)
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 <adilger@whamcloud.com>
Reviewed-by: Jian Yu <yujian@whamcloud.com>
Reviewed-by: Lai Siyao <lai.siyao@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
Change-Id: Ia8061ee48ac219e6948d667269c3ad80f6198401
Reviewed-on: https://review.whamcloud.com/44542
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
lustre/tests/sanity.sh
lustre/utils/lfs.c

index a88f8da..b3a6e37 100755 (executable)
@@ -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)
index 094d7b9..103db65 100644 (file)
@@ -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;
        }