| #! /bin/bash |
| # SPDX-License-Identifier: GPL-2.0 |
| # Copyright (c) 2022 Red Hat Inc. All Rights Reserved. |
| # |
| # FS QA Test No. 701 |
| # |
| # Verify that i_blocks for truncated files larger than 4 GiB have correct |
| # values. |
| # |
| # This test verifies the problem fixed in kernel with commit |
| # 92fba084b79e exfat: fix i_blocks for files truncated over 4 GiB |
| # |
| . ./common/preamble |
| . ./common/filter |
| |
| _begin_fstest auto |
| |
| # Override the default cleanup function. |
| _cleanup() |
| { |
| cd / |
| rm -r -f $tmp.* $junk_dir |
| } |
| |
| _supported_fs generic |
| _fixed_by_kernel_commit 92fba084b79e \ |
| "exfat: fix i_blocks for files truncated over 4 GiB" |
| |
| _require_test |
| _require_fs_space $TEST_DIR $((5 * 1024 * 1024)) #kB |
| |
| junk_dir=$TEST_DIR/$seq |
| junk_file=$junk_dir/junk |
| mkdir -p $junk_dir |
| |
| _create_file_sized 5G $junk_file |
| if [ $? -ne 0 ]; then |
| echo "Could not create 5G test file" |
| fi |
| |
| truncate -s 4G $junk_file |
| |
| block_size=`stat -c '%B' $junk_file` |
| iblocks_after_truncate=`stat -c '%b' $junk_file` |
| iblocks_expected=$((4 * 1024 * 1024 * 1024 / $block_size)) |
| |
| _within_tolerance "Number of allocated blocks after truncate" $iblocks_after_truncate $iblocks_expected 1% -v |
| |
| status=0 |
| |
| exit |