Merge tag 'f2fs-for-6.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk...
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 11 Oct 2022 03:28:41 +0000 (20:28 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 11 Oct 2022 03:28:41 +0000 (20:28 -0700)
Pull f2fs updates from Jaegeuk Kim:
 "This round looks fairly small comparing to the previous updates and
  includes mostly minor bug fixes. Nevertheless, as we've still
  interested in improving the stability, Chao added some debugging
  methods to diagnoze subtle runtime inconsistency problem.

  Enhancements:
   - store all the corruption or failure reasons in superblock
   - detect meta inode, summary info, and block address inconsistency
   - increase the limit for reserve_root for low-end devices
   - add the number of compressed IO in iostat

  Bug fixes:
   - DIO write fix for zoned devices
   - do out-of-place writes for cold files
   - fix some stat updates (FS_CP_DATA_IO, dirty page count)
   - fix race condition on setting FI_NO_EXTENT flag
   - fix data races when freezing super
   - fix wrong continue condition check in GC
   - do not allow ATGC for LFS mode

  In addition, there're some code enhancement and clean-ups as usual"

* tag 'f2fs-for-6.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs: (32 commits)
  f2fs: change to use atomic_t type form sbi.atomic_files
  f2fs: account swapfile inodes
  f2fs: allow direct read for zoned device
  f2fs: support recording errors into superblock
  f2fs: support recording stop_checkpoint reason into super_block
  f2fs: remove the unnecessary check in f2fs_xattr_fiemap
  f2fs: introduce cp_status sysfs entry
  f2fs: fix to detect corrupted meta ino
  f2fs: fix to account FS_CP_DATA_IO correctly
  f2fs: code clean and fix a type error
  f2fs: add "c_len" into trace_f2fs_update_extent_tree_range for compressed file
  f2fs: fix to do sanity check on summary info
  f2fs: port to vfs{g,u}id_t and associated helpers
  f2fs: fix to do sanity check on destination blkaddr during recovery
  f2fs: let FI_OPU_WRITE override FADVISE_COLD_BIT
  f2fs: fix race condition on setting FI_NO_EXTENT flag
  f2fs: remove redundant check in f2fs_sanity_check_cluster
  f2fs: add static init_idisk_time function to reduce the code
  f2fs: fix typo
  f2fs: fix wrong dirty page count when race between mmap and fallocate.
  ...

1  2 
fs/f2fs/data.c
fs/f2fs/f2fs.h
fs/f2fs/file.c
fs/f2fs/super.c

diff --cc fs/f2fs/data.c
Simple merge
diff --cc fs/f2fs/f2fs.h
Simple merge
diff --cc fs/f2fs/file.c
@@@ -808,29 -808,6 +808,34 @@@ int f2fs_truncate(struct inode *inode
        return 0;
  }
  
 +static bool f2fs_force_buffered_io(struct inode *inode, int rw)
 +{
 +      struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
 +
 +      if (!fscrypt_dio_supported(inode))
 +              return true;
 +      if (fsverity_active(inode))
 +              return true;
 +      if (f2fs_compressed_file(inode))
 +              return true;
 +
 +      /* disallow direct IO if any of devices has unaligned blksize */
 +      if (f2fs_is_multi_device(sbi) && !sbi->aligned_blksize)
 +              return true;
++      /*
++       * for blkzoned device, fallback direct IO to buffered IO, so
++       * all IOs can be serialized by log-structured write.
++       */
++      if (f2fs_sb_has_blkzoned(sbi) && (rw == WRITE))
++              return true;
 +      if (f2fs_lfs_mode(sbi) && rw == WRITE && F2FS_IO_ALIGNED(sbi))
 +              return true;
 +      if (is_sbi_flag_set(sbi, SBI_CP_DISABLED))
 +              return true;
 +
 +      return false;
 +}
 +
  int f2fs_getattr(struct user_namespace *mnt_userns, const struct path *path,
                 struct kstat *stat, u32 request_mask, unsigned int query_flags)
  {
diff --cc fs/f2fs/super.c
Simple merge