From 804ea3abc4265c035d2b3941400c842e6d6fdb96 Mon Sep 17 00:00:00 2001 From: Hongchao Zhang Date: Thu, 18 Jan 2018 16:58:42 +0800 Subject: [PATCH] LU-10052 test: relate fs_log_size to recordsize If the backend filesystem is ZFS, the block usage difference is related to the recordsize of it, the maximum difference are 2 blocks. This affects several different tests that have intermittent failures. replay-dual test_14b, replay-single test_20b, test_89 Change-Id: I36b184587306bd2b9221e5771bf1adfe071653ca Signed-off-by: Hongchao Zhang Reviewed-on: https://review.whamcloud.com/30916 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Nathaniel Clark Reviewed-by: James Nunez Reviewed-by: Oleg Drokin --- lustre/tests/replay-dual.sh | 14 +++++++------- lustre/tests/replay-single.sh | 26 ++++++++++++++++++++------ lustre/tests/test-framework.sh | 7 ++++--- 3 files changed, 31 insertions(+), 16 deletions(-) diff --git a/lustre/tests/replay-dual.sh b/lustre/tests/replay-dual.sh index 7f311a2..527d0b4 100755 --- a/lustre/tests/replay-dual.sh +++ b/lustre/tests/replay-dual.sh @@ -2,8 +2,8 @@ set -e -# bug number: LU-2012 10124 LU-8333 -ALWAYS_EXCEPT="14b 15c 21b $REPLAY_DUAL_EXCEPT" +# bug number: 10124 LU-8333 +ALWAYS_EXCEPT="15c 21b $REPLAY_DUAL_EXCEPT" SAVE_PWD=$PWD PTLDEBUG=${PTLDEBUG:--1} @@ -327,7 +327,7 @@ test_14b() { wait_mds_ost_sync wait_delete_completed - local BEFOREUSED=$(df -P $DIR | tail -1 | awk '{ print $3 }') + local beforeused=$(df -P $DIR | tail -1 | awk '{ print $3 }') mkdir -p $MOUNT1/$tdir $SETSTRIPE -i 0 $MOUNT1/$tdir @@ -352,11 +352,11 @@ test_14b() { wait_mds_ost_sync || error "wait_mds_ost_sync failed" wait_delete_completed || error "wait_delete_complete failed" - local AFTERUSED=$(df -P $DIR | tail -1 | awk '{ print $3 }') - log "before $BEFOREUSED, after $AFTERUSED" + local afterused=$(df -P $DIR | tail -1 | awk '{ print $3 }') + log "before $beforeused, after $afterused" # leave some margin for some files/dirs to be modified (OI, llog, etc) - [ $AFTERUSED -gt $((BEFOREUSED + 128)) ] && - error "after $AFTERUSED > before $BEFOREUSED" || true + [ $afterused -le $((beforeused + $(fs_log_size))) ] || + error "after $afterused > before $beforeused" } run_test 14b "delete ost orphans if gap occured in objids due to VBR" diff --git a/lustre/tests/replay-single.sh b/lustre/tests/replay-single.sh index 7821118..3327962 100755 --- a/lustre/tests/replay-single.sh +++ b/lustre/tests/replay-single.sh @@ -448,10 +448,14 @@ run_test 20a "|X| open(O_CREAT), unlink, replay, close (test mds_cleanup_orphans test_20b() { # bug 10480 local wait_timeout=$((TIMEOUT * 4)) - local beforeused - local afterused + local extra=$(fs_log_size) + local n_attempts=1 + + sync_all_data + $LFS setstripe -i 0 -c 1 $DIR + + local beforeused=$(df -P $DIR | tail -1 | awk '{ print $3 }') - beforeused=$(df -P $DIR | tail -1 | awk '{ print $3 }') dd if=/dev/zero of=$DIR/$tfile bs=4k count=10000 & while [ ! -e $DIR/$tfile ] ; do usleep 60 # give dd a chance to start @@ -468,12 +472,22 @@ test_20b() { # bug 10480 fail $SINGLEMDS # start orphan recovery wait_recovery_complete $SINGLEMDS || error "MDS recovery not done" wait_delete_completed $wait_timeout || error "delete did not finish" + sync_all_data - afterused=$(df -P $DIR | tail -1 | awk '{ print $3 }') - (( $afterused > $beforeused + $(fs_log_size) )) && - error "after $afterused > before $beforeused" || + while true; do + local afterused=$(df -P $DIR | tail -1 | awk '{ print $3 }') log "before $beforeused, after $afterused" + + (( $beforeused + $extra >= $afterused )) && break + n_attempts=$((n_attempts + 1)) + [ $n_attempts -gt 3 ] && + error "after $afterused > before $beforeused" + + wait_zfs_commit $SINGLEMDS 5 + sync_all_data + done } + run_test 20b "write, unlink, eviction, replay (test mds_cleanup_orphans)" test_20c() { # bug 10480 diff --git a/lustre/tests/test-framework.sh b/lustre/tests/test-framework.sh index 06910a8..85756f0f 100755 --- a/lustre/tests/test-framework.sh +++ b/lustre/tests/test-framework.sh @@ -746,11 +746,12 @@ unload_modules() { fs_log_size() { local facet=${1:-$SINGLEMDS} - local fstype=$(facet_fstype $facet) local size=0 - case $fstype in + + case $(facet_fstype $facet) in ldiskfs) size=50;; # largest seen is 44, leave some headroom - zfs) size=512;; # largest seen is 512 + zfs) size=$(lctl get_param osc.$FSNAME-OST*.import | + awk '/grant_block_size:/ { print $2 * 2; exit; }');; esac echo -n $size -- 1.8.3.1