aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2023-06-15 00:29:41 -0400
committerTheodore Ts'o <tytso@mit.edu>2023-06-15 00:29:41 -0400
commit2d005701c152ba5924bd1de895747401f87ff2a4 (patch)
tree0ebb88a6f1646d6ae088447e22b1f0d0280a5bf0
parente76886f76dfca6b9228902cff028b3b7b1ac3131 (diff)
parent43a498e938887956f393b5e45ea6ac79cc5f4b84 (diff)
downloade2fsprogs-2d005701c152ba5924bd1de895747401f87ff2a4.tar.gz
Merge branch 'maint' into next
-rw-r--r--e2fsck/pass2.c2
-rw-r--r--resize/main.c2
-rw-r--r--tests/f_inlinedir_bad_symlink/expect.112
-rw-r--r--tests/f_inlinedir_bad_symlink/expect.27
-rw-r--r--tests/f_inlinedir_bad_symlink/image.gzbin0 -> 1797 bytes
-rw-r--r--tests/f_inlinedir_bad_symlink/name1
6 files changed, 23 insertions, 1 deletions
diff --git a/e2fsck/pass2.c b/e2fsck/pass2.c
index 2d5fa9aaf..b91628567 100644
--- a/e2fsck/pass2.c
+++ b/e2fsck/pass2.c
@@ -1524,7 +1524,7 @@ skip_checksum:
dirent->inode)) {
if (e2fsck_process_bad_inode(ctx, ino,
dirent->inode,
- buf + fs->blocksize)) {
+ cd->buf + fs->blocksize)) {
dirent->inode = 0;
dir_modified++;
goto next;
diff --git a/resize/main.c b/resize/main.c
index 94f5ec6d6..f914c0507 100644
--- a/resize/main.c
+++ b/resize/main.c
@@ -409,6 +409,8 @@ int main (int argc, char ** argv)
if (!(mount_flags & EXT2_MF_MOUNTED) && !print_min_size)
io_flags = EXT2_FLAG_RW | EXT2_FLAG_EXCLUSIVE;
+ if (mount_flags & EXT2_MF_MOUNTED)
+ io_flags |= EXT2_FLAG_DIRECT_IO;
io_flags |= EXT2_FLAG_64BITS | EXT2_FLAG_THREADS;
if (undo_file) {
diff --git a/tests/f_inlinedir_bad_symlink/expect.1 b/tests/f_inlinedir_bad_symlink/expect.1
new file mode 100644
index 000000000..e1d0e879e
--- /dev/null
+++ b/tests/f_inlinedir_bad_symlink/expect.1
@@ -0,0 +1,12 @@
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Symlink /a/7 (inode #19) is invalid.
+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: 19/112 files (0.0% non-contiguous), 16/200 blocks
+Exit status is 1
diff --git a/tests/f_inlinedir_bad_symlink/expect.2 b/tests/f_inlinedir_bad_symlink/expect.2
new file mode 100644
index 000000000..b881d6573
--- /dev/null
+++ b/tests/f_inlinedir_bad_symlink/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: 19/112 files (0.0% non-contiguous), 16/200 blocks
+Exit status is 0
diff --git a/tests/f_inlinedir_bad_symlink/image.gz b/tests/f_inlinedir_bad_symlink/image.gz
new file mode 100644
index 000000000..c5bd71a3b
--- /dev/null
+++ b/tests/f_inlinedir_bad_symlink/image.gz
Binary files differ
diff --git a/tests/f_inlinedir_bad_symlink/name b/tests/f_inlinedir_bad_symlink/name
new file mode 100644
index 000000000..f7f7f0d6c
--- /dev/null
+++ b/tests/f_inlinedir_bad_symlink/name
@@ -0,0 +1 @@
+bad symlink in an inline directory