Commit 0b0128e6 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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

Pull xfs updates from Carlos Maiolino:
 "There aren't any new features.

  The whole series is just a collection of bug fixes and code
  refactoring. There is some new information added a couple new
  tracepoints, new data added to mountstats, but no big changes"

* tag 'xfs-merge-7.1' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux: (41 commits)
  xfs: fix number of GC bvecs
  xfs: untangle the open zones reporting in mountinfo
  xfs: expose the number of open zones in sysfs
  xfs: reduce special casing for the open GC zone
  xfs: streamline GC zone selection
  xfs: refactor GC zone selection helpers
  xfs: rename xfs_zone_gc_iter_next to xfs_zone_gc_iter_irec
  xfs: put the open zone later xfs_open_zone_put
  xfs: add a separate tracepoint for stealing an open zone for GC
  xfs: delay initial open of the GC zone
  xfs: fix a resource leak in xfs_alloc_buftarg()
  xfs: handle too many open zones when mounting
  xfs: refactor xfs_mount_zones
  xfs: fix integer overflow in busy extent sort comparator
  xfs: fix integer overflow in deferred intent sort comparators
  xfs: fold xfs_setattr_size into xfs_vn_setattr_size
  xfs: remove a duplicate assert in xfs_setattr_size
  xfs: return default quota limits for IDs without a dquot
  xfs: start gc on zonegc_low_space attribute updates
  xfs: don't decrement the buffer LRU count for in-use buffers
  ...
parents 230fb3a3 2ffc6900
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -550,6 +550,10 @@ For zoned file systems, the following attributes are exposed in:
	is limited by the capabilities of the backing zoned device, file system
	size and the max_open_zones mount option.

  nr_open_zones			(Min:  0  Default:  Varies  Max:  UINTMAX)
	This read-only attribute exposes the current number of open zones
	used by the file system.

  zonegc_low_space		(Min:  0  Default:  0  Max:  100)
	Define a percentage for how much of the unused space that GC should keep
	available for writing. A high value will reclaim more of the space
+1 −5
Original line number Diff line number Diff line
@@ -1647,16 +1647,12 @@ iomap_zero_range(struct inode *inode, loff_t pos, loff_t len, bool *did_zero,
	while ((ret = iomap_iter(&iter, ops)) > 0) {
		const struct iomap *srcmap = iomap_iter_srcmap(&iter);

		if (WARN_ON_ONCE((iter.iomap.flags & IOMAP_F_FOLIO_BATCH) &&
				 srcmap->type != IOMAP_UNWRITTEN))
			return -EIO;

		if (!(iter.iomap.flags & IOMAP_F_FOLIO_BATCH) &&
		    (srcmap->type == IOMAP_HOLE ||
		     srcmap->type == IOMAP_UNWRITTEN)) {
			s64 status;

			if (range_dirty) {
			if (range_dirty && srcmap->type == IOMAP_UNWRITTEN) {
				range_dirty = false;
				status = iomap_zero_iter_flush_and_stale(&iter);
			} else {
+2 −11
Original line number Diff line number Diff line
@@ -110,10 +110,7 @@ xfs_perag_uninit(
	struct xfs_group	*xg)
{
#ifdef __KERNEL__
	struct xfs_perag	*pag = to_perag(xg);

	cancel_delayed_work_sync(&pag->pag_blockgc_work);
	xfs_buf_cache_destroy(&pag->pag_bcache);
	cancel_delayed_work_sync(&to_perag(xg)->pag_blockgc_work);
#endif
}

@@ -235,10 +232,6 @@ xfs_perag_alloc(
	INIT_RADIX_TREE(&pag->pag_ici_root, GFP_ATOMIC);
#endif /* __KERNEL__ */

	error = xfs_buf_cache_init(&pag->pag_bcache);
	if (error)
		goto out_free_perag;

	/*
	 * Pre-calculated geometry
	 */
@@ -250,12 +243,10 @@ xfs_perag_alloc(

	error = xfs_group_insert(mp, pag_group(pag), index, XG_TYPE_AG);
	if (error)
		goto out_buf_cache_destroy;
		goto out_free_perag;

	return 0;

out_buf_cache_destroy:
	xfs_buf_cache_destroy(&pag->pag_bcache);
out_free_perag:
	kfree(pag);
	return error;
+0 −2
Original line number Diff line number Diff line
@@ -85,8 +85,6 @@ struct xfs_perag {
	int		pag_ici_reclaimable;	/* reclaimable inodes */
	unsigned long	pag_ici_reclaim_cursor;	/* reclaim restart point */

	struct xfs_buf_cache	pag_bcache;

	/* background prealloc block trimming */
	struct delayed_work	pag_blockgc_work;
#endif /* __KERNEL__ */
+4 −1
Original line number Diff line number Diff line
@@ -995,7 +995,8 @@ struct xfs_rtgroup_geometry {
	__u32 rg_sick;		/* o: sick things in ag */
	__u32 rg_checked;	/* o: checked metadata in ag */
	__u32 rg_flags;		/* i/o: flags for this ag */
	__u32 rg_reserved[27];	/* o: zero */
	__u32 rg_writepointer;  /* o: write pointer block offset for zoned */
	__u32 rg_reserved[26];	/* o: zero */
};
#define XFS_RTGROUP_GEOM_SICK_SUPER	(1U << 0)  /* superblock */
#define XFS_RTGROUP_GEOM_SICK_BITMAP	(1U << 1)  /* rtbitmap */
@@ -1003,6 +1004,8 @@ struct xfs_rtgroup_geometry {
#define XFS_RTGROUP_GEOM_SICK_RMAPBT	(1U << 3)  /* reverse mappings */
#define XFS_RTGROUP_GEOM_SICK_REFCNTBT	(1U << 4)  /* reference counts */

#define XFS_RTGROUP_GEOM_WRITEPOINTER  (1U << 0)  /* write pointer */

/* Health monitor event domains */

/* affects the whole fs */
Loading