From c6070404a2bed3ff675fc6500828ab6acee985f1 Mon Sep 17 00:00:00 2001 From: "Luis Henriques (SUSE)" Date: Fri, 5 Apr 2024 15:24:05 +0100 Subject: [PATCH] tests: new test to check quota after a bad inode deallocation This new test validates e2fsck by verifying that quota is updated after a bad inode is deallocated. It mimics fstest ext4/019 by including a filesystem image where a symbolic link was created to an existing file, using a long symlink name. This symbolic link was then wiped with: # debugfs -w -R 'zap -f /testlink 0' f_testnew/image Signed-off-by: Luis Henriques (SUSE) Reviewed-by: Andreas Dilger Link: https://lore.kernel.org/r/20240405142405.12312-5-luis.henriques@linux.dev Signed-off-by: Theodore Ts'o --- tests/f_quota_deallocate_inode/expect.1 | 18 ++++++++++++++++++ tests/f_quota_deallocate_inode/expect.2 | 7 +++++++ tests/f_quota_deallocate_inode/image.gz | Bin 0 -> 11594 bytes tests/f_quota_deallocate_inode/name | 1 + 4 files changed, 26 insertions(+) create mode 100644 tests/f_quota_deallocate_inode/expect.1 create mode 100644 tests/f_quota_deallocate_inode/expect.2 create mode 100644 tests/f_quota_deallocate_inode/image.gz create mode 100644 tests/f_quota_deallocate_inode/name diff --git a/tests/f_quota_deallocate_inode/expect.1 b/tests/f_quota_deallocate_inode/expect.1 new file mode 100644 index 00000000..2b2f128d --- /dev/null +++ b/tests/f_quota_deallocate_inode/expect.1 @@ -0,0 +1,18 @@ +Pass 1: Checking inodes, blocks, and sizes +Pass 2: Checking directory structure +Symlink /testlink (inode #14) is invalid. +Clear? yes + +Pass 3: Checking directory connectivity +Pass 4: Checking reference counts +Pass 5: Checking group summary information +[QUOTA WARNING] Usage inconsistent for ID 0:actual (15360, 4) != expected (16384, 5) +Update quota info for quota type 0? yes + +[QUOTA WARNING] Usage inconsistent for ID 0:actual (15360, 4) != expected (16384, 5) +Update quota info for quota type 1? yes + + +test_filesys: ***** FILE SYSTEM WAS MODIFIED ***** +test_filesys: 13/256 files (15.4% non-contiguous), 1157/8192 blocks +Exit status is 1 diff --git a/tests/f_quota_deallocate_inode/expect.2 b/tests/f_quota_deallocate_inode/expect.2 new file mode 100644 index 00000000..80231794 --- /dev/null +++ b/tests/f_quota_deallocate_inode/expect.2 @@ -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: 13/256 files (15.4% non-contiguous), 1157/8192 blocks +Exit status is 0 diff --git a/tests/f_quota_deallocate_inode/image.gz b/tests/f_quota_deallocate_inode/image.gz new file mode 100644 index 0000000000000000000000000000000000000000..798a72c3a0da0323fc55c5e034f778e967394c81 GIT binary patch literal 11594 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 literal 0 Hc-jL100001 diff --git a/tests/f_quota_deallocate_inode/name b/tests/f_quota_deallocate_inode/name new file mode 100644 index 00000000..396887c1 --- /dev/null +++ b/tests/f_quota_deallocate_inode/name @@ -0,0 +1 @@ +update quota when deallocating bad inode -- 2.47.2