Merge tag 'xfs-6.9-merge-8' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Wed, 13 Mar 2024 20:52:24 +0000 (13:52 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 13 Mar 2024 20:52:24 +0000 (13:52 -0700)
Pull xfs updates from Chandan Babu:

 - Online repair updates:
    - More ondisk structures being repaired:
        - Inode's mode field by trying to obtain file type value from
          the a directory entry
        - Quota counters
        - Link counts of inodes
        - FS summary counters
        - Support for in-memory btrees has been added to support repair
          of rmap btrees
    - Misc changes:
        - Report corruption of metadata to the health tracking subsystem
        - Enable indirect health reporting when resources are scarce
        - Reduce memory usage while repairing refcount btree
        - Extend "Bmap update" intent item to support atomic extent
          swapping on the realtime device
        - Extend "Bmap update" intent item to support extended attribute
          fork and unwritten extents
    - Code cleanups:
        - Bmap log intent
        - Btree block pointer checking
        - Btree readahead
        - Buffer target
        - Symbolic link code

 - Remove mrlock wrapper around the rwsem

 - Convert all the GFP_NOFS flag usages to use the scoped
   memalloc_nofs_save() API instead of direct calls with the GFP_NOFS

 - Refactor and simplify xfile abstraction. Lower level APIs in shmem.c
   are required to be exported in order to achieve this

 - Skip checking alignment constraints for inode chunk allocations when
   block size is larger than inode chunk size

 - Do not submit delwri buffers collected during log recovery when an
   error has been encountered

 - Fix SEEK_HOLE/DATA for file regions which have active COW extents

 - Fix lock order inversion when executing error handling path during
   shrinking a filesystem

 - Remove duplicate ifdefs

* tag 'xfs-6.9-merge-8' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux: (183 commits)
  xfs: shrink failure needs to hold AGI buffer
  mm/shmem.c: Use new form of *@param in kernel-doc
  kernel-doc: Add unary operator * to $type_param_ref
  xfs: use kvfree() in xlog_cil_free_logvec()
  xfs: xfs_btree_bload_prep_block() should use __GFP_NOFAIL
  xfs: fix scrub stats file permissions
  xfs: fix log recovery erroring out on refcount recovery failure
  xfs: move symlink target write function to libxfs
  xfs: move remote symlink target read function to libxfs
  xfs: move xfs_symlink_remote.c declarations to xfs_symlink_remote.h
  xfs: xfs_bmap_finish_one should map unwritten extents properly
  xfs: support deferred bmap updates on the attr fork
  xfs: support recovering bmap intent items targetting realtime extents
  xfs: add a realtime flag to the bmap update log redo items
  xfs: add a xattr_entry helper
  xfs: fix xfs_bunmapi to allow unmapping of partial rt extents
  xfs: move xfs_bmap_defer_add to xfs_bmap_item.c
  xfs: reuse xfs_bmap_update_cancel_item
  xfs: add a bi_entry helper
  xfs: remove xfs_trans_set_bmap_flags
  ...

1  2 
fs/xfs/xfs_buf.c
fs/xfs/xfs_buf.h
fs/xfs/xfs_mount.c
fs/xfs/xfs_super.c
include/linux/swap.h
mm/filemap.c
mm/shmem.c
scripts/kernel-doc

index 01b41fabbe3c7ba89d2f59c6dad15e49dfe781c5,7fc26e64368de25b0da9a8d47ccb22ae6f660c6e..1a18c381127e2183169eaa8280aa620d66340a71
@@@ -1951,9 -2030,8 +2030,8 @@@ xfs_free_buftarg
        fs_put_dax(btp->bt_daxdev, btp->bt_mount);
        /* the main block device is closed by kill_block_super */
        if (btp->bt_bdev != btp->bt_mount->m_super->s_bdev)
 -              bdev_release(btp->bt_bdev_handle);
 +              fput(btp->bt_bdev_file);
-       kmem_free(btp);
+       kfree(btp);
  }
  
  int
@@@ -1994,20 -2095,20 +2095,20 @@@ out_destroy_lru
  struct xfs_buftarg *
  xfs_alloc_buftarg(
        struct xfs_mount        *mp,
 -      struct bdev_handle      *bdev_handle)
 +      struct file             *bdev_file)
  {
-       xfs_buftarg_t           *btp;
+       struct xfs_buftarg      *btp;
        const struct dax_holder_operations *ops = NULL;
  
  #if defined(CONFIG_FS_DAX) && defined(CONFIG_MEMORY_FAILURE)
        ops = &xfs_dax_holder_operations;
  #endif
-       btp = kmem_zalloc(sizeof(*btp), KM_NOFS);
+       btp = kzalloc(sizeof(*btp), GFP_KERNEL | __GFP_NOFAIL);
  
        btp->bt_mount = mp;
 -      btp->bt_bdev_handle = bdev_handle;
 -      btp->bt_dev = bdev_handle->bdev->bd_dev;
 -      btp->bt_bdev = bdev_handle->bdev;
 +      btp->bt_bdev_file = bdev_file;
 +      btp->bt_bdev = file_bdev(bdev_file);
 +      btp->bt_dev = btp->bt_bdev->bd_dev;
        btp->bt_daxdev = fs_dax_get_by_bdev(btp->bt_bdev, &btp->bt_dax_part_off,
                                            mp, ops);
  
index 304e858d04fb3cfca71d4378f2878293f7462d8b,73249abca968e5ae9923c34d13a4712018a72ace..b1580644501fb079d1a719226fce4ccaf23c491f
@@@ -96,11 -104,12 +104,12 @@@ void xfs_buf_cache_destroy(struct xfs_b
   * The latter is derived from the underlying device, and controls direct IO
   * alignment constraints.
   */
typedef struct xfs_buftarg {
+ struct xfs_buftarg {
        dev_t                   bt_dev;
 -      struct bdev_handle      *bt_bdev_handle;
 +      struct file             *bt_bdev_file;
        struct block_device     *bt_bdev;
        struct dax_device       *bt_daxdev;
+       struct file             *bt_file;
        u64                     bt_dax_part_off;
        struct xfs_mount        *bt_mount;
        unsigned int            bt_meta_sectorsize;
Simple merge
Simple merge
Simple merge
diff --cc mm/filemap.c
Simple merge
diff --cc mm/shmem.c
Simple merge
Simple merge