From: Theodore Ts'o Date: Thu, 15 Jun 2023 04:17:01 +0000 (-0400) Subject: resize2fs: use Direct I/O when reading the superblock for online resizes X-Git-Tag: v1.47.1-rc1~84^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=43a498e938887956f393b5e45ea6ac79cc5f4b84;p=thirdparty%2Fe2fsprogs.git resize2fs: use Direct I/O when reading the superblock for online resizes 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 Signed-off-by: Theodore Ts'o --- 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) {