Whamcloud - gitweb
e2fsck: add tests for EA inodes
authorJan Kara <jack@suse.cz>
Mon, 6 May 2024 17:41:18 +0000 (19:41 +0200)
committerTheodore Ts'o <tytso@mit.edu>
Thu, 9 May 2024 14:58:35 +0000 (10:58 -0400)
Add tests exercising EA inodes and testing various types of corruption.

Signed-off-by: Jan Kara <jack@suse.cz>
Link: https://lore.kernel.org/r/20240506174132.12883-2-jack@suse.cz
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
18 files changed:
tests/f_ea_inode_dir_ref/expect.1 [new file with mode: 0644]
tests/f_ea_inode_dir_ref/expect.2 [new file with mode: 0644]
tests/f_ea_inode_dir_ref/image.gz [new file with mode: 0644]
tests/f_ea_inode_dir_ref/name [new file with mode: 0644]
tests/f_ea_inode_disconnected/expect.1 [new file with mode: 0644]
tests/f_ea_inode_disconnected/expect.2 [new file with mode: 0644]
tests/f_ea_inode_disconnected/image [new file with mode: 0644]
tests/f_ea_inode_disconnected/image.gz [new file with mode: 0644]
tests/f_ea_inode_disconnected/name [new file with mode: 0644]
tests/f_ea_inode_no_feature/expect.1 [new file with mode: 0644]
tests/f_ea_inode_no_feature/expect.2 [new file with mode: 0644]
tests/f_ea_inode_no_feature/image.gz [new file with mode: 0644]
tests/f_ea_inode_no_feature/name [new file with mode: 0644]
tests/f_ea_inode_spurious_flag_dir/expect.1 [new file with mode: 0644]
tests/f_ea_inode_spurious_flag_dir/expect.2 [new file with mode: 0644]
tests/f_ea_inode_spurious_flag_dir/image [new file with mode: 0644]
tests/f_ea_inode_spurious_flag_dir/image.gz [new file with mode: 0644]
tests/f_ea_inode_spurious_flag_dir/name [new file with mode: 0644]

diff --git a/tests/f_ea_inode_dir_ref/expect.1 b/tests/f_ea_inode_dir_ref/expect.1
new file mode 100644 (file)
index 0000000..fa6a872
--- /dev/null
@@ -0,0 +1,12 @@
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Entry 'xlink' in / (2) references EA inode 13.
+Clear? yes
+
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+
+test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
+test_filesys: 13/128 files (0.0% non-contiguous), 63/1024 blocks
+Exit status is 1
diff --git a/tests/f_ea_inode_dir_ref/expect.2 b/tests/f_ea_inode_dir_ref/expect.2
new file mode 100644 (file)
index 0000000..24d059a
--- /dev/null
@@ -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/128 files (0.0% non-contiguous), 63/1024 blocks
+Exit status is 0
diff --git a/tests/f_ea_inode_dir_ref/image.gz b/tests/f_ea_inode_dir_ref/image.gz
new file mode 100644 (file)
index 0000000..483cc72
Binary files /dev/null and b/tests/f_ea_inode_dir_ref/image.gz differ
diff --git a/tests/f_ea_inode_dir_ref/name b/tests/f_ea_inode_dir_ref/name
new file mode 100644 (file)
index 0000000..e43cd69
--- /dev/null
@@ -0,0 +1 @@
+true ea inode referenced from a directory
diff --git a/tests/f_ea_inode_disconnected/expect.1 b/tests/f_ea_inode_disconnected/expect.1
new file mode 100644 (file)
index 0000000..afc77ae
--- /dev/null
@@ -0,0 +1,23 @@
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Unattached inode 13
+Connect to /lost+found? yes
+
+Inode 13 ref count is 2, should be 1.  Fix? yes
+
+Pass 5: Checking group summary information
+Inode bitmap differences:  -12
+Fix? yes
+
+Free inodes count wrong for group #0 (115, counted=116).
+Fix? yes
+
+Free inodes count wrong (115, counted=116).
+Fix? yes
+
+
+test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
+test_filesys: 12/128 files (0.0% non-contiguous), 63/1024 blocks
+Exit status is 1
diff --git a/tests/f_ea_inode_disconnected/expect.2 b/tests/f_ea_inode_disconnected/expect.2
new file mode 100644 (file)
index 0000000..a67f944
--- /dev/null
@@ -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 (0.0% non-contiguous), 63/1024 blocks
+Exit status is 0
diff --git a/tests/f_ea_inode_disconnected/image b/tests/f_ea_inode_disconnected/image
new file mode 100644 (file)
index 0000000..f24547c
Binary files /dev/null and b/tests/f_ea_inode_disconnected/image differ
diff --git a/tests/f_ea_inode_disconnected/image.gz b/tests/f_ea_inode_disconnected/image.gz
new file mode 100644 (file)
index 0000000..f440f20
Binary files /dev/null and b/tests/f_ea_inode_disconnected/image.gz differ
diff --git a/tests/f_ea_inode_disconnected/name b/tests/f_ea_inode_disconnected/name
new file mode 100644 (file)
index 0000000..ce04192
--- /dev/null
@@ -0,0 +1 @@
+ea inode that is not connected anywhere
diff --git a/tests/f_ea_inode_no_feature/expect.1 b/tests/f_ea_inode_no_feature/expect.1
new file mode 100644 (file)
index 0000000..f6a232b
--- /dev/null
@@ -0,0 +1,12 @@
+Pass 1: Checking inodes, blocks, and sizes
+Inode 12 references EA inode but superblock is missing EA_INODE feature
+Fix? yes
+
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+
+test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
+test_filesys: 13/128 files (0.0% non-contiguous), 63/1024 blocks
+Exit status is 1
diff --git a/tests/f_ea_inode_no_feature/expect.2 b/tests/f_ea_inode_no_feature/expect.2
new file mode 100644 (file)
index 0000000..24d059a
--- /dev/null
@@ -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/128 files (0.0% non-contiguous), 63/1024 blocks
+Exit status is 0
diff --git a/tests/f_ea_inode_no_feature/image.gz b/tests/f_ea_inode_no_feature/image.gz
new file mode 100644 (file)
index 0000000..596d69a
Binary files /dev/null and b/tests/f_ea_inode_no_feature/image.gz differ
diff --git a/tests/f_ea_inode_no_feature/name b/tests/f_ea_inode_no_feature/name
new file mode 100644 (file)
index 0000000..b357afb
--- /dev/null
@@ -0,0 +1 @@
+inode with ea inode but EA_INODE feature is not set
diff --git a/tests/f_ea_inode_spurious_flag_dir/expect.1 b/tests/f_ea_inode_spurious_flag_dir/expect.1
new file mode 100644 (file)
index 0000000..19999ab
--- /dev/null
@@ -0,0 +1,11 @@
+Pass 1: Checking inodes, blocks, and sizes
+Inode 2 has the ea_inode flag set but is not a regular file.  Clear flag? yes
+
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+
+test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
+test_filesys: 11/128 files (0.0% non-contiguous), 58/1024 blocks
+Exit status is 1
diff --git a/tests/f_ea_inode_spurious_flag_dir/expect.2 b/tests/f_ea_inode_spurious_flag_dir/expect.2
new file mode 100644 (file)
index 0000000..a354770
--- /dev/null
@@ -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: 11/128 files (0.0% non-contiguous), 58/1024 blocks
+Exit status is 0
diff --git a/tests/f_ea_inode_spurious_flag_dir/image b/tests/f_ea_inode_spurious_flag_dir/image
new file mode 100644 (file)
index 0000000..f323b61
Binary files /dev/null and b/tests/f_ea_inode_spurious_flag_dir/image differ
diff --git a/tests/f_ea_inode_spurious_flag_dir/image.gz b/tests/f_ea_inode_spurious_flag_dir/image.gz
new file mode 100644 (file)
index 0000000..af19132
Binary files /dev/null and b/tests/f_ea_inode_spurious_flag_dir/image.gz differ
diff --git a/tests/f_ea_inode_spurious_flag_dir/name b/tests/f_ea_inode_spurious_flag_dir/name
new file mode 100644 (file)
index 0000000..8ae52cc
--- /dev/null
@@ -0,0 +1 @@
+ea inode flag set on a directory