Whamcloud - gitweb
LU-3909 tests: sanity test 129 fix 27/8727/2
authorVladmir Saveliev <vladimir_saveliev@xyratex.com>
Sun, 5 Jan 2014 11:45:26 +0000 (19:45 +0800)
committerOleg Drokin <oleg.drokin@intel.com>
Mon, 6 Jan 2014 14:12:11 +0000 (14:12 +0000)
Patch from LU-2479 changed max dir size limit behaviour. Before the
patch last block of a directory which reached its limit was mostly
empty so that creation of new file after limit cancelation caused no
dir size grow. With the patch last block of limited directory gets
full when limit is reached. Therefore dir size increases on file
creation after limit cancellation.
The patch makes sanity test_129 to distinguish these cases.

This patch is back-ported from the following one:
Lustre-commit: 5cb9ac9c09f25234babc239ed949d85cd8489bef
Lustre-change: http://review.whamcloud.com/8143

Test-Parameters: envdefinitions=SLOW=yes,ENABLE_QUOTA=yes,ONLY=129 \
ossjob=lustre-b2_4 mdsjob=lustre-b2_4 ossbuildno=70 mdsbuildno=70 \
testlist=sanity

Xyratex-bug-id: MRP-1444

Signed-off-by: Vladmir Saveliev <vladimir_saveliev@xyratex.com>
Signed-off-by: Jian Yu <jian.yu@intel.com>
Change-Id: I691d7bac3dffe4eea98085ef2f9be3736e970869
Reviewed-on: http://review.whamcloud.com/8727
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/tests/sanity.sh

index 31d5327..da2c101 100644 (file)
@@ -7857,11 +7857,15 @@ test_129() {
        ENOSPC=28
        EFBIG=27
 
+       rm -rf $DIR/$tdir
        test_mkdir -p $DIR/$tdir
 
-       MAX=$(stat -c%s "$DIR/$tdir")
+       # block size of mds1
+       local MDT_DEV=$(mdsdevname ${SINGLEMDS//mds/})
+       local MDSBLOCKSIZE=$($LCTL get_param -n mdc.*MDT0000*.blocksize)
+       local MAX=$((MDSBLOCKSIZE * 3))
        set_dir_limits $MAX
-       local I=0
+       local I=$(stat -c%s "$DIR/$tdir")
        local J=0
        while [ ! $I -gt $MAX ]; do
                $MULTIOP $DIR/$tdir/$J Oc
@@ -7869,18 +7873,22 @@ test_129() {
                #check two errors ENOSPC for new version of ext4 max_dir_size patch
                #mainline kernel commit df981d03eeff7971ac7e6ff37000bfa702327ef1
                #and EFBIG for previous versions
-               if [ $rc -eq $EFBIG -o $rc -eq $ENOSPC ] && [ $I -gt 0 ]; then
+               if [ $rc -eq $EFBIG -o $rc -eq $ENOSPC ]; then
                        set_dir_limits 0
                        echo "return code $rc received as expected"
-                       multiop $DIR/$tdir/$J Oc
-                       rc=$?
+                       multiop $DIR/$tdir/$J Oc ||
+                               error_exit "multiop failed w/o dir size limit"
+
                        I=$(stat -c%s "$DIR/$tdir")
-                       if [ $I -gt $MAX ] && [ $rc -eq 0 ]; then
-                               return 0
+
+                       if [ $(lustre_version_code $SINGLEMDS) -lt \
+                                       $(version_code 2.4.51) ]
+                       then
+                               [ $I -eq $MAX ] && return 0
                        else
-                               error_exit "return code $rc current dir size $I " \
-                                          "previous limit $MAX"
+                               [ $I -gt $MAX ] && return 0
                        fi
+                       error_exit "current dir size $I, previous limit $MAX"
                elif [ $rc -ne 0 ]; then
                        set_dir_limits 0
                        error_exit "return code $rc received instead of expected " \