Whamcloud - gitweb
LU-10052 test: relate fs_log_size to recordsize 46/31146/2
authorHongchao Zhang <hongchao.zhang@intel.com>
Thu, 18 Jan 2018 08:58:42 +0000 (16:58 +0800)
committerJohn L. Hammond <john.hammond@intel.com>
Thu, 8 Mar 2018 21:20:41 +0000 (21:20 +0000)
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

Lustre-change: https://review.whamcloud.com/30916
Lustre-commit: 804ea3abc4265c035d2b3941400c842e6d6fdb96

Change-Id: I36b184587306bd2b9221e5771bf1adfe071653ca
Signed-off-by: Hongchao Zhang <hongchao.zhang@intel.com>
Reviewed-by: Nathaniel Clark <nathaniel.l.clark@intel.com>
Reviewed-by: James Nunez <james.a.nunez@intel.com>
Signed-off-by: Minh Diep <minh.diep@intel.com>
Reviewed-on: https://review.whamcloud.com/31146
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: John L. Hammond <john.hammond@intel.com>
lustre/tests/replay-dual.sh
lustre/tests/replay-single.sh
lustre/tests/test-framework.sh

index 0a25100..527d0b4 100755 (executable)
@@ -2,8 +2,8 @@
 
 set -e
 
-# bug number:  LU-2012 10124 LU-7372 LU-8333
-ALWAYS_EXCEPT="14b     15c   26      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"
 
index 2149d05..483e893 100755 (executable)
@@ -449,10 +449,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
@@ -469,12 +473,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
index 3d06590..becadcb 100755 (executable)
@@ -744,11 +744,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=400;; # largest seen is 384
+               zfs)     size=$(lctl get_param osc.$FSNAME-OST*.import |
+                       awk '/grant_block_size:/ { print $2 * 2; exit; }');;
        esac
 
        echo -n $size