From: Pádraig Brady
Date: Fri, 11 Apr 2014 22:44:13 +0000 (+0100) Subject: tests: fix false dd conv=sparse failure on newer XFS X-Git-Tag: v8.23~94 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7c03fe2c9f498bad7e40d29f2eb4573d23e102d0;p=thirdparty%2Fcoreutils.git tests: fix false dd conv=sparse failure on newer XFS * tests/dd/sparse.sh: When testing that a hole is created, use an existing sparse destination file, so that we're not write extending the file size, and thus avoiding speculative preallocation which can result in smaller holes than requested. Workaround suggested by Brian Foster --- diff --git a/THANKS.in b/THANKS.in index e7298ef6e2..a92540adc3 100644 --- a/THANKS.in +++ b/THANKS.in @@ -95,6 +95,7 @@ Bjorn Helgaas helgaas@rsn.hp.com Bob McCracken kerouac@ravenet.com Branden Robinson branden@necrotic.deadbeast.net Brendan O'Dea bod@compusol.com.au +Brian Foster bfoster@redhat.com Brian Kimball bfk@footbag.org Brian M. Carlson sandals@crustytoothpaste.ath.cx Brian Silverman bsilverman@conceptxdesign.com diff --git a/tests/dd/sparse.sh b/tests/dd/sparse.sh index 06efc7017d..a7e90d2be0 100755 --- a/tests/dd/sparse.sh +++ b/tests/dd/sparse.sh @@ -61,8 +61,15 @@ if test $(kb_alloc file.in) -gt 3000; then dd if=file.in of=file.out bs=2M conv=sparse test 2500 -lt $(kb_alloc file.out) || fail=1 + # Note we recreate a sparse file first to avoid + # speculative preallocation seen in XFS, where a write() that + # extends a file can preallocate some extra space that + # a subsequent seek will not convert to a hole. + rm -f file.out + truncate --size=3M file.out + # Ensure that this 1MiB string of NULs *is* converted to a hole. - dd if=file.in of=file.out bs=1M conv=sparse + dd if=file.in of=file.out bs=1M conv=sparse,notrunc test $(kb_alloc file.out) -lt 2500 || fail=1 fi