On 13.05.19 17:52, Max Reitz wrote:
> It is possible for an empty file to take up blocks on a filesystem.
> Make iotest 175 take this into account.
>
> Reported-by: Thomas Huth <address@hidden>
> Signed-off-by: Max Reitz <address@hidden>
> ---
> v2: [Nir]
> - Use a function for filtering
> - s/empty_blocks/extra_blocks/
> ---
> tests/qemu-iotests/175 | 26 ++++++++++++++++++++++----
> tests/qemu-iotests/175.out | 8 ++++----
> 2 files changed, 26 insertions(+), 8 deletions(-)
>
> diff --git a/tests/qemu-iotests/175 b/tests/qemu-iotests/175
> index d0ffc495c2..b5eb0aa856 100755
> --- a/tests/qemu-iotests/175
> +++ b/tests/qemu-iotests/175
> @@ -28,10 +28,25 @@ status=1 # failure is the default!
>
> _cleanup()
> {
> - _cleanup_test_img
> + _cleanup_test_img
> + rm -f "$TEST_DIR/empty"
> }
> trap "_cleanup; exit \$status" 0 1 2 3 15
>
> +# Some file systems sometimes allocate extra blocks independently of
> +# the file size. This function hides the resulting difference in the
> +# stat -c '%b' output.
> +# Parameter 1: Number of blocks an empty file occupies
> +# Parameter 2: Image size in bytes
> +_filter_blocks()
> +{
> + extra_blocks=$1
> + img_size=$2
> +
> + sed -e "s/blocks=$extra_blocks/nothing allocated/" \
> + -e "s/blocks=$((extra_blocks + img_size / 512))/everything allocated/"
Only now got around to creating an FS with similar characteristics to
Thomas’s. Turns out this test still fails there because it prints
“blocks=nothing allocated050”...
Unless objections arise, I’ll just add a \$ to each pattern to fix that.
(I could also just swap the lines, but that isn’t really right.)
Can you share how to create file system which reproduces this?
Maybe adding the details in the test would be useful.
Nir