Uploaded image for project: 'Lustre'
  1. Lustre
  2. LU-20578

sanity-lnet check_parameter() assumes every interface is configured

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Medium Medium
    • Lustre 2.18.0
    • None
    • None
    • 3
    • 9223372036854775807

      check_parameter() in lustre/tests/sanity-lnet.sh compares the number of NIs reporting a tunable against ${#INTERFACES[@]}:

      check_parameter() {
      	local para=$1
      	local value=$2
      
      	echo "check parameter ${para} value ${value}"
      
      	return $(( $(do_lnetctl net show -v | \
      		     tee /dev/stderr | \
      		     grep -c "^ \+${para}: ${value}$") != ${#INTERFACES[@]} ))
      }
      

      test_241 configures only INTERFACES[0], so on any node with two or more LNet interfaces the count is 1 while ${#INTERFACES[@]} is 2 or more, and the test fails:

       sanity-lnet test_241: @@@@@@ FAIL: Expected LND timeout 51
      

      The tunable is in fact set correctly. The same run shows:

                  lnd tunables:
                        conns_per_peer: 1
                        timeout: 51
                        tos: -1
      

      So this is a defect in the test helper, not in the LND timeout plumbing.

      test_310 uses the same helper but configures all interfaces via lnet configure, so it passes today only because the count happens to equal ${#INTERFACES[@]}.

      Reproduced on a 3-node rocky9 cluster whose LNet net runs on two interfaces (eth1, eth2).

      Suggested fix: derive the expected count from the NIs actually configured on ${NETTYPE} rather than from ${INTERFACES[@]}.

            hornc Chris Horn
            hornc Chris Horn
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: