Merge tag 'xfs-merge-6.16' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 26 May 2025 19:56:01 +0000 (12:56 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 26 May 2025 19:56:01 +0000 (12:56 -0700)
Pull xfs updates from Carlos Maiolino:

 - Atomic writes for XFS

 - Remove experimental warnings for pNFS, scrub and parent pointers

* tag 'xfs-merge-6.16' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux: (26 commits)
  xfs: add inode to zone caching for data placement
  xfs: free the item in xfs_mru_cache_insert on failure
  xfs: remove the EXPERIMENTAL warning for pNFS
  xfs: remove some EXPERIMENTAL warnings
  xfs: Remove deprecated xfs_bufd sysctl parameters
  xfs: stop using set_blocksize
  xfs: allow sysadmins to specify a maximum atomic write limit at mount time
  xfs: update atomic write limits
  xfs: add xfs_calc_atomic_write_unit_max()
  xfs: add xfs_file_dio_write_atomic()
  xfs: commit CoW-based atomic writes atomically
  xfs: add large atomic writes checks in xfs_direct_write_iomap_begin()
  xfs: add xfs_atomic_write_cow_iomap_begin()
  xfs: refine atomic write size check in xfs_file_write_iter()
  xfs: refactor xfs_reflink_end_cow_extent()
  xfs: allow block allocator to take an alignment hint
  xfs: ignore HW which cannot atomic write a single block
  xfs: add helpers to compute transaction reservation for finishing intent items
  xfs: add helpers to compute log item overhead
  xfs: separate out setting buftarg atomic writes limits
  ...

1  2 
block/bdev.c
fs/stat.c
fs/xfs/xfs_buf.c
fs/xfs/xfs_super.c
include/linux/fs.h

diff --cc block/bdev.c
Simple merge
diff --cc fs/stat.c
Simple merge
Simple merge
index 4a11ddccc563ad3c2704a78243af98aea5181735,5318ab438054cc172fff43949fd9af78f7b88a03..0bc4b5489078c97d16e84257bc8282a482bb9698
@@@ -2114,21 -2178,14 +2178,29 @@@ xfs_fs_reconfigure
        if (error)
                return error;
  
 +      /* attr2 -> noattr2 */
 +      if (xfs_has_noattr2(new_mp)) {
 +              if (xfs_has_crc(mp)) {
 +                      xfs_warn(mp,
 +                      "attr2 is always enabled for a V5 filesystem - can't be changed.");
 +                      return -EINVAL;
 +              }
 +              mp->m_features &= ~XFS_FEAT_ATTR2;
 +              mp->m_features |= XFS_FEAT_NOATTR2;
 +      } else if (xfs_has_attr2(new_mp)) {
 +              /* noattr2 -> attr2 */
 +              mp->m_features &= ~XFS_FEAT_NOATTR2;
 +              mp->m_features |= XFS_FEAT_ATTR2;
 +      }
 +
+       /* Validate new max_atomic_write option before making other changes */
+       if (mp->m_awu_max_bytes != new_mp->m_awu_max_bytes) {
+               error = xfs_set_max_atomic_write_opt(mp,
+                               new_mp->m_awu_max_bytes);
+               if (error)
+                       return error;
+       }
        /* inode32 -> inode64 */
        if (xfs_has_small_inums(mp) && !xfs_has_small_inums(new_mp)) {
                mp->m_features &= ~XFS_FEAT_SMALL_INUMS;
Simple merge