From: Eric Biggers Date: Tue, 28 May 2019 23:12:30 +0000 (-0700) Subject: tests: add test for e2fsck of verity file X-Git-Tag: v1.45.3~30 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=0e660ee14592d2e893522f2ccc836c011ca4f383;p=tools%2Fe2fsprogs.git tests: add test for e2fsck of verity file Test that e2fsck doesn't report errors when an inode with the 'verity' flag has blocks past i_size. This is a regression test for commits 3baafde6a8ae ("e2fsck: allow verity files to have initialized blocks past i_size") and 43466d039689 ("e2fsck: handle verity files in scan_extent_node()"). Signed-off-by: Eric Biggers Signed-off-by: Theodore Ts'o --- diff --git a/tests/f_verity/expect.1 b/tests/f_verity/expect.1 new file mode 100644 index 0000000..0705967 --- /dev/null +++ b/tests/f_verity/expect.1 @@ -0,0 +1,7 @@ +Pass 1: Checking inodes, blocks, and sizes +Pass 2: Checking directory structure +Pass 3: Checking directory connectivity +Pass 4: Checking reference counts +Pass 5: Checking group summary information +test_filesys: 12/128 files (8.3% non-contiguous), 58/128 blocks +Exit status is 0 diff --git a/tests/f_verity/image.gz b/tests/f_verity/image.gz new file mode 100644 index 0000000..72dfd81 Binary files /dev/null and b/tests/f_verity/image.gz differ diff --git a/tests/f_verity/mkimage.sh b/tests/f_verity/mkimage.sh new file mode 100755 index 0000000..565083e --- /dev/null +++ b/tests/f_verity/mkimage.sh @@ -0,0 +1,28 @@ +#!/bin/bash + +# This is the script that was used to create the image.gz in this directory. + +set -e -u + +mkdir -p mnt +umount mnt &> /dev/null || true + +dd if=/dev/zero of=image bs=4096 count=128 +mke2fs -O 'verity,extents' -b 4096 -N 128 image +mount image mnt + +# Create a verity file, but make it fragmented so that it needs at least one +# extent tree index node, in order to cover the scan_extent_node() case. +for i in {1..80}; do + head -c 4096 /dev/zero > mnt/tmp_$i +done +for i in {1..80..2}; do + rm mnt/tmp_$i +done +head -c $((40 * 4096)) /dev/zero > mnt/file +fsverity enable mnt/file +rm mnt/tmp_* + +umount mnt +rmdir mnt +gzip -9 -f image diff --git a/tests/f_verity/name b/tests/f_verity/name new file mode 100644 index 0000000..f43910f --- /dev/null +++ b/tests/f_verity/name @@ -0,0 +1 @@ +verity file diff --git a/tests/f_verity/script b/tests/f_verity/script new file mode 100644 index 0000000..8ab2b9c --- /dev/null +++ b/tests/f_verity/script @@ -0,0 +1,2 @@ +ONE_PASS_ONLY="true" +. $cmd_dir/run_e2fsck