From 6b56269b555b6621bf9fb37323c999e2846c327f Mon Sep 17 00:00:00 2001 From: Vladmir Saveliev Date: Sun, 5 Jan 2014 19:45:26 +0800 Subject: [PATCH] LU-3909 tests: sanity test 129 fix 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 Signed-off-by: Jian Yu Change-Id: I691d7bac3dffe4eea98085ef2f9be3736e970869 Reviewed-on: http://review.whamcloud.com/8727 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Oleg Drokin --- lustre/tests/sanity.sh | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/lustre/tests/sanity.sh b/lustre/tests/sanity.sh index 31d5327..da2c101 100644 --- a/lustre/tests/sanity.sh +++ b/lustre/tests/sanity.sh @@ -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 " \ -- 1.8.3.1