Whamcloud - gitweb
LU-6951 tests: sanity test_27m failure 06/23506/5
authorAndrew Perepechko <c17827@cray.com>
Mon, 19 Feb 2018 10:17:42 +0000 (05:17 -0500)
committerOleg Drokin <green@whamcloud.com>
Sat, 4 May 2019 05:57:46 +0000 (05:57 +0000)
sanity 27m fails with "OST0 was full but new created file
still use it" if the test runs with more than 1 client.
The issue can be easily reproduced with qos_threshold_rr=100.

The reason is grants. Every client initially gets 2 Mb grant.
When dd from the first client receives ENOSPC, it does not mean
the OST is filled up, since the client is not allowed to use
other clients' grants. When creating a new file, the MDS still
sees free space on OST0 equal to the amount of unused grants
and allocates new objects on OST0.

This situation does not seem to reflect any defect in Lustre.
Rather, the original author's intent seems to be that
the test should always run with a single client. So, this patch
simply disables the test if the test is running with more than
one client.

Change-Id: I47cd1a6806e8fa5203aeb5bcf57a6b31b424f24d
Seagate-bug-id: MRP-1690
Signed-off-by: Alexander Boyko <c17825@cray.com>
Signed-off-by: Andrew Perepechko <andrew.perepechko@seagate.com>
Signed-off-by: Alexander Zarochentsev <c17826@cray.com>
Reviewed-on: https://review.whamcloud.com/23506
Tested-by: Jenkins
Reviewed-by: Vladimir Saveliev <c17830@cray.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/tests/sanity.sh

index 45cc115..ff1e175 100755 (executable)
@@ -1611,6 +1611,9 @@ run_test 27l "check setstripe permissions (should return error)"
 test_27m() {
        [[ $OSTCOUNT -lt 2 ]] && skip_env "needs >= 2 OSTs"
 
 test_27m() {
        [[ $OSTCOUNT -lt 2 ]] && skip_env "needs >= 2 OSTs"
 
+       [ -n "$RCLIENTS" -o -n "$MOUNT_2" ] &&
+               skip_env "multiple clients -- skipping"
+
        ORIGFREE=$($LCTL get_param -n lov.$FSNAME-clilov-*.kbytesavail |
                   head -n1)
        if [[ $ORIGFREE -gt $MAXFREE ]]; then
        ORIGFREE=$($LCTL get_param -n lov.$FSNAME-clilov-*.kbytesavail |
                   head -n1)
        if [[ $ORIGFREE -gt $MAXFREE ]]; then