Whamcloud - gitweb
resize2fs: use Direct I/O when reading the superblock for online resizes
authorTheodore Ts'o <tytso@mit.edu>
Thu, 15 Jun 2023 04:17:01 +0000 (00:17 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Thu, 15 Jun 2023 04:17:01 +0000 (00:17 -0400)
If the file system is mounted, the superblock can be changing while
resize2fs is trying to read the superblock, resulting in checksum
failures.  One way of avoiding this problem is read the superblock
using Direct I/O, since the kernel makes sure that what gets written
to disk is self-consistent.

Suggested-by: Krister Johansen <kjlx@templeofstupid.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
resize/main.c

index 94f5ec6..f914c05 100644 (file)
@@ -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) {