On 09/15/2014 11:17 PM, Bernhard Voelker wrote:
> * tests/du/2g.sh: Similar to the fix for a dd test (see commit
> v8.22-65-g7c03fe2), avoid speculative preallocation by creating
> the 'big' file in one go instead of appending to it in the loop.
> Remove debugging statements as the output with 'set -x' is
> sufficient nowadays.
> ---
> tests/du/2g.sh | 17 ++++++++---------
> 1 file changed, 8 insertions(+), 9 deletions(-)
>
> diff --git a/tests/du/2g.sh b/tests/du/2g.sh
> index f766d4d..d7cc987 100755
> --- a/tests/du/2g.sh
> +++ b/tests/du/2g.sh
> @@ -43,15 +43,14 @@ test $min_kb -lt $free_kb ||
>
> big=big
> rm -f $big
> -test -t 1 || printf 'creating a 2GB file...\n'
> -for i in $(seq 100); do
> - # Note: 2147483648 == 2^31. Print floor(2^31/100) per iteration.
> - printf %21474836s x >> $big || fail=1
> - # On the final iteration, append the remaining 48 bytes.
> - test $i = 100 && { printf %48s x >> $big || fail=1; }
> - test -t 1 && printf 'creating a 2GB file: %d%% complete\r' $i
> -done
> -echo
> +{
> + for i in $(seq 100); do
> + # Note: 2147483648 == 2^31. Print floor(2^31/100) per iteration.
> + printf %21474836s x || fail=1
> + done
> + # After the final iteration, append the remaining 48 bytes.
> + printf %48s x || fail=1
> +} > $big || fail=1
>
> du -k $big > out1 || fail=1
> rm -f $big
>
Thanks for the fix.
It's a bit surprising that (I presume) this allocated 3G.
That's a large overallocation, and also the allocation issue
is mainly so with holes.
What was the actual allocation reported by du?
thanks,
Pádraig.