From 148090c1c4400306c9077eb3eaaea18c61e15d5e Mon Sep 17 00:00:00 2001 From: "Darrick J. Wong" Date: Wed, 25 Oct 2017 22:51:39 -0700 Subject: [PATCH] quota: clear speculative delalloc when checking quota usage Occasionally speculative preallocation kicks in when writing files to a filesystem under test. These preallocations consume quota and /usually/ aren't around after we drop_caches, but there's nothing to guarantee that they actually have, so the quota reports will be different before and after the fs remount, causing sporadic test failures in generic/{23[123],270}. We now have xfs_spaceman which can instruct XFS to forcibly remove the speculative preallocations. This fixes the sporadic failures, at least for XFS. Signed-off-by: Darrick J. Wong Reviewed-by: Eryu Guan Signed-off-by: Eryu Guan --- common/config | 1 + common/quota | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/common/config b/common/config index 8844173f..96503c67 100644 --- a/common/config +++ b/common/config @@ -149,6 +149,7 @@ export XFS_LOGPRINT_PROG="`set_prog_path xfs_logprint`" export XFS_REPAIR_PROG="`set_prog_path xfs_repair`" export XFS_DB_PROG="`set_prog_path xfs_db`" export XFS_GROWFS_PROG=`set_prog_path xfs_growfs` +export XFS_SPACEMAN_PROG="`set_prog_path xfs_spaceman`" export XFS_SCRUB_PROG="`set_prog_path xfs_scrub`" export XFS_PARALLEL_REPAIR_PROG="`set_prog_path xfs_prepair`" export XFS_PARALLEL_REPAIR64_PROG="`set_prog_path xfs_prepair64`" diff --git a/common/quota b/common/quota index d027a8c1..2611c484 100644 --- a/common/quota +++ b/common/quota @@ -267,6 +267,12 @@ _check_quota_usage() VFS_QUOTA=1 quotaon -f -u -g $SCRATCH_MNT 2>/dev/null ;; + xfs) + # Clear out speculative preallocations to eliminate them + # as a source of intermittent orig/checked differences. + test -x "$XFS_SPACEMAN_PROG" && \ + "$XFS_SPACEMAN_PROG" -c 'prealloc -s' $SCRATCH_MNT + ;; *) ;; esac