>From 7c03fe2c9f498bad7e40d29f2eb4573d23e102d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A1draig=20Brady?= Date: Fri, 11 Apr 2014 23:44:13 +0100 Subject: [PATCH] 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 --- THANKS.in | 1 + tests/dd/sparse.sh | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletions(-) diff --git a/THANKS.in b/THANKS.in index e7298ef..a92540a 100644 --- a/THANKS.in +++ b/THANKS.in @@ -95,6 +95,7 @@ Bjorn Helgaas address@hidden Bob McCracken address@hidden Branden Robinson address@hidden Brendan O'Dea address@hidden +Brian Foster address@hidden Brian Kimball address@hidden Brian M. Carlson address@hidden Brian Silverman address@hidden diff --git a/tests/dd/sparse.sh b/tests/dd/sparse.sh index 06efc70..a7e90d2 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 -- 1.7.7.6