Commit bf3aa9de authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'xfs-6.11-merge-3' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux

Pull xfs updates from Chandan Babu:
 "Major changes in this release are limited to enabling FITRIM on
  realtime devices and Byte-based grant head log reservation tracking.

  The remaining changes are limited to fixes and cleanups included in
  this pull request.

  Core:

   - Enable FITRIM on the realtime device

   - Introduce byte-based grant head log reservation tracking instead of
     physical log location tracking.

     This allows grant head to track a full 64 bit bytes space and hence
     overcome the limit of 4GB indexing that has been present until now

  Fixes:

   - xfs_flush_unmap_range() and xfs_prepare_shift() should consider RT
     extents in the flush unmap range

   - Implement bounds check when traversing log operations during log
     replay

   - Prevent out of bounds access when traversing a directory data block

   - Prevent incorrect ENOSPC when concurrently performing file creation
     and file writes

   - Fix rtalloc rotoring when delalloc is in use

  Cleanups:

   - Clean up I/O path inode locking helpers and the page fault handler

   - xfs: hoist inode operations to libxfs in anticipation of the
     metadata inode directory feature, which maintains a directory tree
     of metadata inodes. This will be necessary for further enhancements
     to the realtime feature, subvolume support

   - Clean up some warts in the extent freeing log intent code

   - Clean up the refcount and rmap intent code before adding support
     for realtime devices

   - Provide the correct email address for sysfs ABI documentation"

* tag 'xfs-6.11-merge-3' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux: (80 commits)
  xfs: fix rtalloc rotoring when delalloc is in use
  xfs: get rid of xfs_ag_resv_rmapbt_alloc
  xfs: skip flushing log items during push
  xfs: grant heads track byte counts, not LSNs
  xfs: pass the full grant head to accounting functions
  xfs: track log space pinned by the AIL
  xfs: collapse xlog_state_set_callback in caller
  xfs: l_last_sync_lsn is really AIL state
  xfs: ensure log tail is always up to date
  xfs: background AIL push should target physical space
  xfs: AIL doesn't need manual pushing
  xfs: move and rename xfs_trans_committed_bulk
  xfs: fix the contact address for the sysfs ABI documentation
  xfs: Avoid races with cnt_btree lastrec updates
  xfs: move xfs_refcount_update_defer_add to xfs_refcount_item.c
  xfs: simplify usage of the rcur local variable in xfs_refcount_finish_one
  xfs: don't bother calling xfs_refcount_finish_one_cleanup in xfs_refcount_finish_one
  xfs: reuse xfs_refcount_update_cancel_item
  xfs: add a ci_entry helper
  xfs: remove xfs_trans_set_refcount_flags
  ...
parents 0260b0a7 2bf6e353
Loading
Loading
Loading
Loading
+12 −14
Original line number Diff line number Diff line
What:		/sys/fs/xfs/<disk>/log/log_head_lsn
Date:		July 2014
KernelVersion:	3.17
Contact:	xfs@oss.sgi.com
Contact:	linux-xfs@vger.kernel.org
Description:
		The log sequence number (LSN) of the current head of the
		log. The LSN is exported in "cycle:basic block" format.
@@ -10,30 +10,28 @@ Users: xfstests
What:		/sys/fs/xfs/<disk>/log/log_tail_lsn
Date:		July 2014
KernelVersion:	3.17
Contact:	xfs@oss.sgi.com
Contact:	linux-xfs@vger.kernel.org
Description:
		The log sequence number (LSN) of the current tail of the
		log. The LSN is exported in "cycle:basic block" format.

What:		/sys/fs/xfs/<disk>/log/reserve_grant_head
Date:		July 2014
KernelVersion:	3.17
Contact:	xfs@oss.sgi.com
What:		/sys/fs/xfs/<disk>/log/reserve_grant_head_bytes
Date:		June 2024
KernelVersion:	6.11
Contact:	linux-xfs@vger.kernel.org
Description:
		The current state of the log reserve grant head. It
		represents the total log reservation of all currently
		outstanding transactions. The grant head is exported in
		"cycle:bytes" format.
		outstanding transactions in bytes.
Users:		xfstests

What:		/sys/fs/xfs/<disk>/log/write_grant_head
Date:		July 2014
KernelVersion:	3.17
Contact:	xfs@oss.sgi.com
What:		/sys/fs/xfs/<disk>/log/write_grant_head_bytes
Date:		June 2024
KernelVersion:	6.11
Contact:	linux-xfs@vger.kernel.org
Description:
		The current state of the log write grant head. It
		represents the total log reservation of all currently
		outstanding transactions, including regrants due to
		rolling transactions. The grant head is exported in
		"cycle:bytes" format.
		rolling transactions in bytes.
Users:		xfstests
+12 −0
Original line number Diff line number Diff line
@@ -217,6 +217,18 @@ config XFS_DEBUG

	  Say N unless you are an XFS developer, or you play one on TV.

config XFS_DEBUG_EXPENSIVE
	bool "XFS expensive debugging checks"
	depends on XFS_FS && XFS_DEBUG
	help
	  Say Y here to get an XFS build with expensive debugging checks
	  enabled.  These checks may affect performance significantly.

	  Note that the resulting code will be HUGER and SLOWER, and probably
	  not useful unless you are debugging a particular problem.

	  Say N unless you are an XFS developer, or you play one on TV.

config XFS_ASSERT_FATAL
	bool "XFS fatal asserts"
	default y
+1 −0
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ xfs-y += $(addprefix libxfs/, \
				   xfs_iext_tree.o \
				   xfs_inode_fork.o \
				   xfs_inode_buf.o \
				   xfs_inode_util.o \
				   xfs_log_rlimit.o \
				   xfs_ag_resv.o \
				   xfs_parent.o \
+1 −1
Original line number Diff line number Diff line
@@ -1008,7 +1008,7 @@ xfs_ag_shrink_space(
			goto resv_err;

		err2 = xfs_free_extent_later(*tpp, args.fsbno, delta, NULL,
				XFS_AG_RESV_NONE, true);
				XFS_AG_RESV_NONE, XFS_FREE_EXTENT_SKIP_DISCARD);
		if (err2)
			goto resv_err;

+0 −19
Original line number Diff line number Diff line
@@ -33,23 +33,4 @@ xfs_perag_resv(
	}
}

/*
 * RMAPBT reservation accounting wrappers. Since rmapbt blocks are sourced from
 * the AGFL, they are allocated one at a time and the reservation updates don't
 * require a transaction.
 */
static inline void
xfs_ag_resv_rmapbt_alloc(
	struct xfs_mount	*mp,
	xfs_agnumber_t		agno)
{
	struct xfs_alloc_arg	args = { NULL };
	struct xfs_perag	*pag;

	args.len = 1;
	pag = xfs_perag_get(mp, agno);
	xfs_ag_resv_alloc_extent(pag, XFS_AG_RESV_RMAPBT, &args);
	xfs_perag_put(pag);
}

#endif	/* __XFS_AG_RESV_H__ */
Loading