Linux XFS filesystem development
 help / color / mirror / Atom feed
From: "Darrick J. Wong" <djwong@kernel.org>
To: djwong@kernel.org
Cc: linux-xfs@vger.kernel.org, hch@lst.de
Subject: [PATCH 16/16] xfs: store a generic group structure in the intents
Date: Thu, 17 Oct 2024 11:54:37 -0700	[thread overview]
Message-ID: <172919068956.3450737.2941149468344931746.stgit@frogsfrogsfrogs> (raw)
In-Reply-To: <172919068618.3450737.15265130869882039127.stgit@frogsfrogsfrogs>

From: Christoph Hellwig <hch@lst.de>

Replace the pag pointers in the extent free, bmap, rmap and refcount
intent structures with a pointer to the generic group to prepare
for adding intents for realtime groups.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
 fs/xfs/libxfs/xfs_alloc.h    |    2 +-
 fs/xfs/libxfs/xfs_bmap.h     |    2 +-
 fs/xfs/libxfs/xfs_refcount.c |    9 +++++----
 fs/xfs/libxfs/xfs_refcount.h |    2 +-
 fs/xfs/libxfs/xfs_rmap.c     |   16 +++++++++-------
 fs/xfs/libxfs/xfs_rmap.h     |    2 +-
 fs/xfs/xfs_bmap_item.c       |    5 +++--
 fs/xfs/xfs_drain.c           |   36 ++++++++++++++++++------------------
 fs/xfs/xfs_drain.h           |   12 ++++++------
 fs/xfs/xfs_extfree_item.c    |   14 ++++++++------
 fs/xfs/xfs_refcount_item.c   |    9 +++++----
 fs/xfs/xfs_rmap_item.c       |    9 +++++----
 12 files changed, 63 insertions(+), 55 deletions(-)


diff --git a/fs/xfs/libxfs/xfs_alloc.h b/fs/xfs/libxfs/xfs_alloc.h
index 88fbce5001185f..efbde04fbbb15f 100644
--- a/fs/xfs/libxfs/xfs_alloc.h
+++ b/fs/xfs/libxfs/xfs_alloc.h
@@ -248,7 +248,7 @@ struct xfs_extent_free_item {
 	uint64_t		xefi_owner;
 	xfs_fsblock_t		xefi_startblock;/* starting fs block number */
 	xfs_extlen_t		xefi_blockcount;/* number of blocks in extent */
-	struct xfs_perag	*xefi_pag;
+	struct xfs_group	*xefi_group;
 	unsigned int		xefi_flags;
 	enum xfs_ag_resv_type	xefi_agresv;
 };
diff --git a/fs/xfs/libxfs/xfs_bmap.h b/fs/xfs/libxfs/xfs_bmap.h
index 7592d46e97c661..4b721d9359943b 100644
--- a/fs/xfs/libxfs/xfs_bmap.h
+++ b/fs/xfs/libxfs/xfs_bmap.h
@@ -248,7 +248,7 @@ struct xfs_bmap_intent {
 	enum xfs_bmap_intent_type		bi_type;
 	int					bi_whichfork;
 	struct xfs_inode			*bi_owner;
-	struct xfs_perag			*bi_pag;
+	struct xfs_group			*bi_group;
 	struct xfs_bmbt_irec			bi_bmap;
 };
 
diff --git a/fs/xfs/libxfs/xfs_refcount.c b/fs/xfs/libxfs/xfs_refcount.c
index ed943f6e616d96..2dbab68b4fe69f 100644
--- a/fs/xfs/libxfs/xfs_refcount.c
+++ b/fs/xfs/libxfs/xfs_refcount.c
@@ -1358,7 +1358,7 @@ xfs_refcount_finish_one(
 	 * If we haven't gotten a cursor or the cursor AG doesn't match
 	 * the startblock, get one now.
 	 */
-	if (rcur != NULL && to_perag(rcur->bc_group) != ri->ri_pag) {
+	if (rcur != NULL && rcur->bc_group != ri->ri_group) {
 		nr_ops = rcur->bc_refc.nr_ops;
 		shape_changes = rcur->bc_refc.shape_changes;
 		xfs_btree_del_cursor(rcur, 0);
@@ -1366,13 +1366,14 @@ xfs_refcount_finish_one(
 		*pcur = NULL;
 	}
 	if (rcur == NULL) {
-		error = xfs_alloc_read_agf(ri->ri_pag, tp,
+		struct xfs_perag	*pag = to_perag(ri->ri_group);
+
+		error = xfs_alloc_read_agf(pag, tp,
 				XFS_ALLOC_FLAG_FREEING, &agbp);
 		if (error)
 			return error;
 
-		*pcur = rcur = xfs_refcountbt_init_cursor(mp, tp, agbp,
-							  ri->ri_pag);
+		*pcur = rcur = xfs_refcountbt_init_cursor(mp, tp, agbp, pag);
 		rcur->bc_refc.nr_ops = nr_ops;
 		rcur->bc_refc.shape_changes = shape_changes;
 	}
diff --git a/fs/xfs/libxfs/xfs_refcount.h b/fs/xfs/libxfs/xfs_refcount.h
index 68acb0b1b4a878..62d78afcf1f3ff 100644
--- a/fs/xfs/libxfs/xfs_refcount.h
+++ b/fs/xfs/libxfs/xfs_refcount.h
@@ -56,7 +56,7 @@ enum xfs_refcount_intent_type {
 
 struct xfs_refcount_intent {
 	struct list_head			ri_list;
-	struct xfs_perag			*ri_pag;
+	struct xfs_group			*ri_group;
 	enum xfs_refcount_intent_type		ri_type;
 	xfs_extlen_t				ri_blockcount;
 	xfs_fsblock_t				ri_startblock;
diff --git a/fs/xfs/libxfs/xfs_rmap.c b/fs/xfs/libxfs/xfs_rmap.c
index 0c404625986163..d0df68dc313185 100644
--- a/fs/xfs/libxfs/xfs_rmap.c
+++ b/fs/xfs/libxfs/xfs_rmap.c
@@ -2586,28 +2586,30 @@ xfs_rmap_finish_one(
 	 * If we haven't gotten a cursor or the cursor AG doesn't match
 	 * the startblock, get one now.
 	 */
-	if (rcur != NULL && to_perag(rcur->bc_group) != ri->ri_pag) {
+	if (rcur != NULL && rcur->bc_group != ri->ri_group) {
 		xfs_btree_del_cursor(rcur, 0);
 		rcur = NULL;
 		*pcur = NULL;
 	}
 	if (rcur == NULL) {
+		struct xfs_perag	*pag = to_perag(ri->ri_group);
+
 		/*
 		 * Refresh the freelist before we start changing the
 		 * rmapbt, because a shape change could cause us to
 		 * allocate blocks.
 		 */
-		error = xfs_free_extent_fix_freelist(tp, ri->ri_pag, &agbp);
+		error = xfs_free_extent_fix_freelist(tp, pag, &agbp);
 		if (error) {
-			xfs_ag_mark_sick(ri->ri_pag, XFS_SICK_AG_AGFL);
+			xfs_ag_mark_sick(pag, XFS_SICK_AG_AGFL);
 			return error;
 		}
 		if (XFS_IS_CORRUPT(tp->t_mountp, !agbp)) {
-			xfs_ag_mark_sick(ri->ri_pag, XFS_SICK_AG_AGFL);
+			xfs_ag_mark_sick(pag, XFS_SICK_AG_AGFL);
 			return -EFSCORRUPTED;
 		}
 
-		*pcur = rcur = xfs_rmapbt_init_cursor(mp, tp, agbp, ri->ri_pag);
+		*pcur = rcur = xfs_rmapbt_init_cursor(mp, tp, agbp, pag);
 	}
 
 	xfs_rmap_ino_owner(&oinfo, ri->ri_owner, ri->ri_whichfork,
@@ -2620,8 +2622,8 @@ xfs_rmap_finish_one(
 	if (error)
 		return error;
 
-	xfs_rmap_update_hook(tp, pag_group(ri->ri_pag), ri->ri_type, bno,
-			     ri->ri_bmap.br_blockcount, unwritten, &oinfo);
+	xfs_rmap_update_hook(tp, ri->ri_group, ri->ri_type, bno,
+			ri->ri_bmap.br_blockcount, unwritten, &oinfo);
 	return 0;
 }
 
diff --git a/fs/xfs/libxfs/xfs_rmap.h b/fs/xfs/libxfs/xfs_rmap.h
index d409b463bc6662..96b4321d831007 100644
--- a/fs/xfs/libxfs/xfs_rmap.h
+++ b/fs/xfs/libxfs/xfs_rmap.h
@@ -173,7 +173,7 @@ struct xfs_rmap_intent {
 	int					ri_whichfork;
 	uint64_t				ri_owner;
 	struct xfs_bmbt_irec			ri_bmap;
-	struct xfs_perag			*ri_pag;
+	struct xfs_group			*ri_group;
 };
 
 /* functions for updating the rmapbt based on bmbt map/unmap operations */
diff --git a/fs/xfs/xfs_bmap_item.c b/fs/xfs/xfs_bmap_item.c
index 35a8c1b8b3cb34..37dab184c2dfc2 100644
--- a/fs/xfs/xfs_bmap_item.c
+++ b/fs/xfs/xfs_bmap_item.c
@@ -334,7 +334,8 @@ xfs_bmap_update_get_group(
 	 * intent drops the intent count, ensuring that the intent count
 	 * remains nonzero across the transaction roll.
 	 */
-	bi->bi_pag = xfs_perag_intent_get(mp, bi->bi_bmap.br_startblock);
+	bi->bi_group = xfs_group_intent_get(mp, bi->bi_bmap.br_startblock,
+			XG_TYPE_AG);
 }
 
 /* Add this deferred BUI to the transaction. */
@@ -368,7 +369,7 @@ xfs_bmap_update_put_group(
 	if (xfs_ifork_is_realtime(bi->bi_owner, bi->bi_whichfork))
 		return;
 
-	xfs_perag_intent_put(bi->bi_pag);
+	xfs_group_intent_put(bi->bi_group);
 }
 
 /* Cancel a deferred bmap update. */
diff --git a/fs/xfs/xfs_drain.c b/fs/xfs/xfs_drain.c
index 7a728a04f7a6b1..5ede81fadbd8ca 100644
--- a/fs/xfs/xfs_drain.c
+++ b/fs/xfs/xfs_drain.c
@@ -94,39 +94,39 @@ static inline int xfs_defer_drain_wait(struct xfs_defer_drain *dr)
 }
 
 /*
- * Get a passive reference to the AG that contains a fsbno and declare an
+ * Get a passive reference to the group that contains a fsbno and declare an
  * intent to update its metadata.
  *
  * Other threads that need exclusive access can decide to back off if they see
  * declared intentions.
  */
-struct xfs_perag *
-xfs_perag_intent_get(
+struct xfs_group *
+xfs_group_intent_get(
 	struct xfs_mount	*mp,
-	xfs_fsblock_t		fsbno)
+	xfs_fsblock_t		fsbno,
+	enum xfs_group_type	type)
 {
-	struct xfs_perag	*pag;
+	struct xfs_group	*xg;
 
-	pag = xfs_perag_get(mp, XFS_FSB_TO_AGNO(mp, fsbno));
-	if (!pag)
+	xg = xfs_group_get_by_fsb(mp, fsbno, type);
+	if (!xg)
 		return NULL;
-
-	trace_xfs_group_intent_hold(pag_group(pag), __return_address);
-	xfs_defer_drain_grab(pag_group(pag).xg_intents_drain);
-	return pag;
+	trace_xfs_group_intent_hold(xg, __return_address);
+	xfs_defer_drain_grab(&xg->xg_intents_drain);
+	return xg;
 }
 
 /*
- * Release our intent to update this AG's metadata, and then release our
- * passive ref to the AG.
+ * Release our intent to update this groups metadata, and then release our
+ * passive ref to it.
  */
 void
-xfs_perag_intent_put(
-	struct xfs_perag	*pag)
+xfs_group_intent_put(
+	struct xfs_group	*xg)
 {
-	trace_xfs_group_intent_rele(pag_group(pag), __return_address);
-	xfs_defer_drain_rele(pag_group(pag).xg_intents_drain);
-	xfs_perag_put(pag);
+	trace_xfs_group_intent_rele(xg, __return_address);
+	xfs_defer_drain_rele(&xg->xg_intents_drain);
+	xfs_group_put(xg);
 }
 
 /*
diff --git a/fs/xfs/xfs_drain.h b/fs/xfs/xfs_drain.h
index 3e6143572e52d2..efcf88df9a5e70 100644
--- a/fs/xfs/xfs_drain.h
+++ b/fs/xfs/xfs_drain.h
@@ -62,9 +62,9 @@ void xfs_drain_wait_enable(void);
  * soon as the item is added to the transaction and cannot drop the counter
  * until the item is finished or cancelled.
  */
-struct xfs_perag *xfs_perag_intent_get(struct xfs_mount *mp,
-		xfs_fsblock_t fsbno);
-void xfs_perag_intent_put(struct xfs_perag *pag);
+struct xfs_group *xfs_group_intent_get(struct xfs_mount *mp,
+		xfs_fsblock_t fsbno, enum xfs_group_type type);
+void xfs_group_intent_put(struct xfs_group *rtg);
 
 int xfs_group_intent_drain(struct xfs_group *xg);
 bool xfs_group_intent_busy(struct xfs_group *xg);
@@ -75,9 +75,9 @@ struct xfs_defer_drain { /* empty */ };
 #define xfs_defer_drain_free(dr)		((void)0)
 #define xfs_defer_drain_init(dr)		((void)0)
 
-#define xfs_perag_intent_get(mp, fsbno) \
-	xfs_perag_get((mp), XFS_FSB_TO_AGNO(mp, fsbno))
-#define xfs_perag_intent_put(pag)		xfs_perag_put(pag)
+#define xfs_group_intent_get(_mp, _fsbno, _type) \
+	xfs_group_get_by_fsb((_mp), (_fsbno), (_type))
+#define xfs_group_intent_put(xg)		xfs_group_put(xg)
 
 #endif /* CONFIG_XFS_DRAIN_INTENTS */
 
diff --git a/fs/xfs/xfs_extfree_item.c b/fs/xfs/xfs_extfree_item.c
index c198962edea163..e469510986e8d0 100644
--- a/fs/xfs/xfs_extfree_item.c
+++ b/fs/xfs/xfs_extfree_item.c
@@ -362,7 +362,7 @@ xfs_extent_free_diff_items(
 	struct xfs_extent_free_item	*ra = xefi_entry(a);
 	struct xfs_extent_free_item	*rb = xefi_entry(b);
 
-	return pag_agno(ra->xefi_pag) - pag_agno(rb->xefi_pag);
+	return ra->xefi_group->xg_gno - rb->xefi_group->xg_gno;
 }
 
 /* Log a free extent to the intent item. */
@@ -447,7 +447,8 @@ xfs_extent_free_defer_add(
 
 	trace_xfs_extent_free_defer(mp, xefi);
 
-	xefi->xefi_pag = xfs_perag_intent_get(mp, xefi->xefi_startblock);
+	xefi->xefi_group = xfs_group_intent_get(mp, xefi->xefi_startblock,
+			XG_TYPE_AG);
 	if (xefi->xefi_agresv == XFS_AG_RESV_AGFL)
 		*dfpp = xfs_defer_add(tp, &xefi->xefi_list,
 				&xfs_agfl_free_defer_type);
@@ -463,7 +464,7 @@ xfs_extent_free_cancel_item(
 {
 	struct xfs_extent_free_item	*xefi = xefi_entry(item);
 
-	xfs_perag_intent_put(xefi->xefi_pag);
+	xfs_group_intent_put(xefi->xefi_group);
 	kmem_cache_free(xfs_extfree_item_cache, xefi);
 }
 
@@ -499,7 +500,7 @@ xfs_extent_free_finish_item(
 	 * in this EFI to the EFD so this works correctly.
 	 */
 	if (!(xefi->xefi_flags & XFS_EFI_CANCELLED))
-		error = __xfs_free_extent(tp, xefi->xefi_pag, agbno,
+		error = __xfs_free_extent(tp, to_perag(xefi->xefi_group), agbno,
 				xefi->xefi_blockcount, &oinfo, xefi->xefi_agresv,
 				xefi->xefi_flags & XFS_EFI_SKIP_DISCARD);
 	if (error == -EAGAIN) {
@@ -545,7 +546,7 @@ xfs_agfl_free_finish_item(
 
 	trace_xfs_agfl_free_deferred(mp, xefi);
 
-	error = xfs_alloc_read_agf(xefi->xefi_pag, tp, 0, &agbp);
+	error = xfs_alloc_read_agf(to_perag(xefi->xefi_group), tp, 0, &agbp);
 	if (!error)
 		error = xfs_free_ag_extent(tp, agbp, agbno, 1, &oinfo,
 				XFS_AG_RESV_AGFL);
@@ -578,7 +579,8 @@ xfs_efi_recover_work(
 	xefi->xefi_blockcount = extp->ext_len;
 	xefi->xefi_agresv = XFS_AG_RESV_NONE;
 	xefi->xefi_owner = XFS_RMAP_OWN_UNKNOWN;
-	xefi->xefi_pag = xfs_perag_intent_get(mp, extp->ext_start);
+	xefi->xefi_group = xfs_group_intent_get(mp, extp->ext_start,
+			XG_TYPE_AG);
 
 	xfs_defer_add_item(dfp, &xefi->xefi_list);
 }
diff --git a/fs/xfs/xfs_refcount_item.c b/fs/xfs/xfs_refcount_item.c
index 29f101005f3eda..bede1c96c33011 100644
--- a/fs/xfs/xfs_refcount_item.c
+++ b/fs/xfs/xfs_refcount_item.c
@@ -244,7 +244,7 @@ xfs_refcount_update_diff_items(
 	struct xfs_refcount_intent	*ra = ci_entry(a);
 	struct xfs_refcount_intent	*rb = ci_entry(b);
 
-	return pag_agno(ra->ri_pag) - pag_agno(rb->ri_pag);
+	return ra->ri_group->xg_gno - rb->ri_group->xg_gno;
 }
 
 /* Log refcount updates in the intent item. */
@@ -330,7 +330,7 @@ xfs_refcount_defer_add(
 
 	trace_xfs_refcount_defer(mp, ri);
 
-	ri->ri_pag = xfs_perag_intent_get(mp, ri->ri_startblock);
+	ri->ri_group = xfs_group_intent_get(mp, ri->ri_startblock, XG_TYPE_AG);
 	xfs_defer_add(tp, &ri->ri_list, &xfs_refcount_update_defer_type);
 }
 
@@ -341,7 +341,7 @@ xfs_refcount_update_cancel_item(
 {
 	struct xfs_refcount_intent	*ri = ci_entry(item);
 
-	xfs_perag_intent_put(ri->ri_pag);
+	xfs_group_intent_put(ri->ri_group);
 	kmem_cache_free(xfs_refcount_intent_cache, ri);
 }
 
@@ -431,7 +431,8 @@ xfs_cui_recover_work(
 	ri->ri_type = pmap->pe_flags & XFS_REFCOUNT_EXTENT_TYPE_MASK;
 	ri->ri_startblock = pmap->pe_startblock;
 	ri->ri_blockcount = pmap->pe_len;
-	ri->ri_pag = xfs_perag_intent_get(mp, pmap->pe_startblock);
+	ri->ri_group = xfs_group_intent_get(mp, pmap->pe_startblock,
+			XG_TYPE_AG);
 
 	xfs_defer_add_item(dfp, &ri->ri_list);
 }
diff --git a/fs/xfs/xfs_rmap_item.c b/fs/xfs/xfs_rmap_item.c
index 1b83d09351f028..76b3c0ed3b4f63 100644
--- a/fs/xfs/xfs_rmap_item.c
+++ b/fs/xfs/xfs_rmap_item.c
@@ -243,7 +243,7 @@ xfs_rmap_update_diff_items(
 	struct xfs_rmap_intent		*ra = ri_entry(a);
 	struct xfs_rmap_intent		*rb = ri_entry(b);
 
-	return pag_agno(ra->ri_pag) - pag_agno(rb->ri_pag);
+	return ra->ri_group->xg_gno - rb->ri_group->xg_gno;
 }
 
 /* Log rmap updates in the intent item. */
@@ -353,7 +353,8 @@ xfs_rmap_defer_add(
 
 	trace_xfs_rmap_defer(mp, ri);
 
-	ri->ri_pag = xfs_perag_intent_get(mp, ri->ri_bmap.br_startblock);
+	ri->ri_group = xfs_group_intent_get(mp, ri->ri_bmap.br_startblock,
+			XG_TYPE_AG);
 	xfs_defer_add(tp, &ri->ri_list, &xfs_rmap_update_defer_type);
 }
 
@@ -364,7 +365,7 @@ xfs_rmap_update_cancel_item(
 {
 	struct xfs_rmap_intent		*ri = ri_entry(item);
 
-	xfs_perag_intent_put(ri->ri_pag);
+	xfs_group_intent_put(ri->ri_group);
 	kmem_cache_free(xfs_rmap_intent_cache, ri);
 }
 
@@ -494,7 +495,7 @@ xfs_rui_recover_work(
 	ri->ri_bmap.br_blockcount = map->me_len;
 	ri->ri_bmap.br_state = (map->me_flags & XFS_RMAP_EXTENT_UNWRITTEN) ?
 			XFS_EXT_UNWRITTEN : XFS_EXT_NORM;
-	ri->ri_pag = xfs_perag_intent_get(mp, map->me_startblock);
+	ri->ri_group = xfs_group_intent_get(mp, map->me_startblock, XG_TYPE_AG);
 
 	xfs_defer_add_item(dfp, &ri->ri_list);
 }


  parent reply	other threads:[~2024-10-17 18:54 UTC|newest]

Thread overview: 158+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-17 18:40 [PATCHBOMB 6.13 v5.1] xfs: metadata directories and realtime groups Darrick J. Wong
2024-10-17 18:46 ` [PATCHSET v5.1 1/9] xfs: convert perag to use xarrays Darrick J. Wong
2024-10-17 18:47   ` [PATCH 01/22] xfs: fix superfluous clearing of info->low in __xfs_getfsmap_datadev Darrick J. Wong
2024-10-17 18:48   ` [PATCH 02/22] xfs: remove the unused pagb_count field in struct xfs_perag Darrick J. Wong
2024-10-17 18:48   ` [PATCH 03/22] xfs: remove the unused pag_active_wq " Darrick J. Wong
2024-10-17 18:48   ` [PATCH 04/22] xfs: pass a pag to xfs_difree_inode_chunk Darrick J. Wong
2024-10-17 18:48   ` [PATCH 05/22] xfs: remove the agno argument to xfs_free_ag_extent Darrick J. Wong
2024-10-17 18:48   ` [PATCH 06/22] xfs: add xfs_agbno_to_fsb and xfs_agbno_to_daddr helpers Darrick J. Wong
2024-10-17 18:49   ` [PATCH 07/22] xfs: add a xfs_agino_to_ino helper Darrick J. Wong
2024-10-17 18:49   ` [PATCH 08/22] xfs: pass a pag to xfs_extent_busy_{search,reuse} Darrick J. Wong
2024-10-17 18:49   ` [PATCH 09/22] xfs: keep a reference to the pag for busy extents Darrick J. Wong
2024-10-17 18:49   ` [PATCH 10/22] xfs: remove the mount field from struct xfs_busy_extents Darrick J. Wong
2024-10-17 18:49   ` [PATCH 11/22] xfs: remove the unused trace_xfs_iwalk_ag trace point Darrick J. Wong
2024-10-17 18:49   ` [PATCH 12/22] xfs: remove the unused xrep_bmap_walk_rmap " Darrick J. Wong
2024-10-17 18:50   ` [PATCH 13/22] xfs: constify pag arguments to trace points Darrick J. Wong
2024-10-17 18:50   ` [PATCH 14/22] xfs: pass a perag structure to the xfs_ag_resv_init_error trace point Darrick J. Wong
2024-10-17 18:50   ` [PATCH 15/22] xfs: pass objects to the xfs_irec_merge_{pre,post} trace points Darrick J. Wong
2024-10-17 18:50   ` [PATCH 16/22] xfs: pass the iunlink item to the xfs_iunlink_update_dinode trace point Darrick J. Wong
2024-10-17 18:50   ` [PATCH 17/22] xfs: pass objects to the xrep_ibt_walk_rmap tracepoint Darrick J. Wong
2024-10-17 18:51   ` [PATCH 18/22] xfs: pass the pag to the trace_xrep_calc_ag_resblks{,_btsize} trace points Darrick J. Wong
2024-10-17 18:51   ` [PATCH 19/22] xfs: pass the pag to the xrep_newbt_extent_class tracepoints Darrick J. Wong
2024-10-17 18:51   ` [PATCH 20/22] xfs: convert remaining trace points to pass pag structures Darrick J. Wong
2024-10-17 18:51   ` [PATCH 21/22] xfs: split xfs_initialize_perag Darrick J. Wong
2024-10-17 18:51   ` [PATCH 22/22] xfs: insert the pag structures into the xarray later Darrick J. Wong
2024-10-17 18:46 ` [PATCHSET v5.1 2/9] xfs: create a generic allocation group structure Darrick J. Wong
2024-10-17 18:51   ` [PATCH 01/16] xfs: factor out a xfs_iwalk_args helper Darrick J. Wong
2024-10-17 18:52   ` [PATCH 02/16] xfs: factor out a generic xfs_group structure Darrick J. Wong
2024-10-17 18:52   ` [PATCH 03/16] xfs: add a xfs_group_next_range helper Darrick J. Wong
2024-10-17 18:52   ` [PATCH 04/16] xfs: switch perag iteration from the for_each macros to a while based iterator Darrick J. Wong
2024-10-17 18:52   ` [PATCH 05/16] xfs: move metadata health tracking to the generic group structure Darrick J. Wong
2024-10-17 18:52   ` [PATCH 06/16] xfs: mark xfs_perag_intent_{hold,rele} static Darrick J. Wong
2024-10-17 18:53   ` [PATCH 07/16] xfs: move draining of deferred operations to the generic group structure Darrick J. Wong
2024-10-17 18:53   ` [PATCH 08/16] xfs: move the online repair rmap hooks " Darrick J. Wong
2024-10-17 18:53   ` [PATCH 09/16] xfs: return the busy generation from xfs_extent_busy_list_empty Darrick J. Wong
2024-10-17 18:53   ` [PATCH 10/16] xfs: convert extent busy tracepoints to the generic group structure Darrick J. Wong
2024-10-17 18:53   ` [PATCH 11/16] xfs: convert busy extent tracking " Darrick J. Wong
2024-10-17 18:53   ` [PATCH 12/16] xfs: add a generic group pointer to the btree cursor Darrick J. Wong
2024-10-17 18:54   ` [PATCH 13/16] xfs: store a generic xfs_group pointer in xfs_getfsmap_info Darrick J. Wong
2024-10-17 18:54   ` [PATCH 14/16] xfs: add group based bno conversion helpers Darrick J. Wong
2024-10-17 18:54   ` [PATCH 15/16] xfs: remove xfs_group_intent_hold and xfs_group_intent_rele Darrick J. Wong
2024-10-17 18:54   ` Darrick J. Wong [this message]
2024-10-17 18:46 ` [PATCHSET v5.1 3/9] xfs: metadata inode directory trees Darrick J. Wong
2024-10-17 18:54   ` [PATCH 01/29] xfs: constify the xfs_sb predicates Darrick J. Wong
2024-10-17 18:54   ` [PATCH 02/29] xfs: constify the xfs_inode predicates Darrick J. Wong
2024-10-17 18:55   ` [PATCH 03/29] xfs: rename metadata inode predicates Darrick J. Wong
2024-10-22  5:49     ` Christoph Hellwig
2024-10-17 18:55   ` [PATCH 04/29] xfs: standardize EXPERIMENTAL warning generation Darrick J. Wong
2024-10-22  5:50     ` Christoph Hellwig
2024-10-17 18:55   ` [PATCH 05/29] xfs: define the on-disk format for the metadir feature Darrick J. Wong
2024-10-17 18:55   ` [PATCH 06/29] xfs: iget for metadata inodes Darrick J. Wong
2024-10-17 18:55   ` [PATCH 07/29] xfs: load metadata directory root at mount time Darrick J. Wong
2024-10-17 18:56   ` [PATCH 08/29] xfs: enforce metadata inode flag Darrick J. Wong
2024-10-17 18:56   ` [PATCH 09/29] xfs: read and write metadata inode directory tree Darrick J. Wong
2024-10-17 18:56   ` [PATCH 10/29] xfs: disable the agi rotor for metadata inodes Darrick J. Wong
2024-10-17 18:56   ` [PATCH 11/29] xfs: hide metadata inodes from everyone because they are special Darrick J. Wong
2024-10-17 18:56   ` [PATCH 12/29] xfs: advertise metadata directory feature Darrick J. Wong
2024-10-17 18:56   ` [PATCH 13/29] xfs: allow bulkstat to return metadata directories Darrick J. Wong
2024-10-17 18:57   ` [PATCH 14/29] xfs: don't count metadata directory files to quota Darrick J. Wong
2024-10-17 18:57   ` [PATCH 15/29] xfs: mark quota inodes as metadata files Darrick J. Wong
2024-10-17 18:57   ` [PATCH 16/29] xfs: adjust xfs_bmap_add_attrfork for metadir Darrick J. Wong
2024-10-17 18:57   ` [PATCH 17/29] xfs: record health problems with the metadata directory Darrick J. Wong
2024-10-17 18:57   ` [PATCH 18/29] xfs: refactor directory tree root predicates Darrick J. Wong
2024-10-17 18:57   ` [PATCH 19/29] xfs: do not count metadata directory files when doing online quotacheck Darrick J. Wong
2024-10-17 18:58   ` [PATCH 20/29] xfs: don't fail repairs on metadata files with no attr fork Darrick J. Wong
2024-10-18  6:00     ` Greg KH
2024-10-21 17:27       ` Darrick J. Wong
2024-10-22 11:16         ` Carlos Maiolino
2024-10-26  7:29     ` Carlos Maiolino
2024-10-17 18:58   ` [PATCH 21/29] xfs: metadata files can have xattrs if metadir is enabled Darrick J. Wong
2024-10-17 18:58   ` [PATCH 22/29] xfs: adjust parent pointer scrubber for sb-rooted metadata files Darrick J. Wong
2024-10-17 18:58   ` [PATCH 23/29] xfs: fix di_metatype field of inodes that won't load Darrick J. Wong
2024-10-17 18:58   ` [PATCH 24/29] xfs: scrub metadata directories Darrick J. Wong
2024-10-17 18:59   ` [PATCH 25/29] xfs: check the metadata directory inumber in superblocks Darrick J. Wong
2024-10-17 18:59   ` [PATCH 26/29] xfs: move repair temporary files to the metadata directory tree Darrick J. Wong
2024-10-17 18:59   ` [PATCH 27/29] xfs: check metadata directory file path connectivity Darrick J. Wong
2024-10-17 18:59   ` [PATCH 28/29] xfs: confirm dotdot target before replacing it during a repair Darrick J. Wong
2024-10-17 18:59   ` [PATCH 29/29] xfs: repair metadata directory file path connectivity Darrick J. Wong
2024-10-17 18:46 ` [PATCHSET v5.1 4/9] xfs: create incore rt allocation groups Darrick J. Wong
2024-10-17 18:59   ` [PATCH 01/21] xfs: clean up xfs_getfsmap_helper arguments Darrick J. Wong
2024-10-17 19:00   ` [PATCH 02/21] xfs: create incore realtime group structures Darrick J. Wong
2024-10-17 19:00   ` [PATCH 03/21] xfs: define locking primitives for realtime groups Darrick J. Wong
2024-10-17 19:00   ` [PATCH 04/21] xfs: add a lockdep class key for rtgroup inodes Darrick J. Wong
2024-10-17 19:00   ` [PATCH 05/21] xfs: support caching rtgroup metadata inodes Darrick J. Wong
2024-10-17 19:00   ` [PATCH 06/21] xfs: add rtgroup-based realtime scrubbing context management Darrick J. Wong
2024-10-17 19:00   ` [PATCH 07/21] xfs: add a xfs_bmap_free_rtblocks helper Darrick J. Wong
2024-10-17 19:01   ` [PATCH 08/21] xfs: add a xfs_qm_unmount_rt helper Darrick J. Wong
2024-10-17 19:01   ` [PATCH 09/21] xfs: factor out a xfs_growfs_rt_alloc_blocks helper Darrick J. Wong
2024-10-17 19:01   ` [PATCH 10/21] xfs: cleanup xfs_getfsmap_rtdev_rtbitmap Darrick J. Wong
2024-10-17 19:01   ` [PATCH 11/21] xfs: split xfs_trim_rtdev_extents Darrick J. Wong
2024-10-17 19:01   ` [PATCH 12/21] xfs: move RT bitmap and summary information to the rtgroup Darrick J. Wong
2024-10-17 19:02   ` [PATCH 13/21] xfs: support creating per-RTG files in growfs Darrick J. Wong
2024-10-17 19:02   ` [PATCH 14/21] xfs: remove XFS_ILOCK_RT* Darrick J. Wong
2024-10-17 19:02   ` [PATCH 15/21] xfs: calculate RT bitmap and summary blocks based on sb_rextents Darrick J. Wong
2024-10-17 19:02   ` [PATCH 16/21] xfs: factor out a xfs_growfs_rt_alloc_fake_mount helper Darrick J. Wong
2024-10-17 19:02   ` [PATCH 17/21] xfs: use xfs_growfs_rt_alloc_fake_mount in xfs_growfs_rt_alloc_blocks Darrick J. Wong
2024-10-17 19:02   ` [PATCH 18/21] xfs: factor out a xfs_growfs_check_rtgeom helper Darrick J. Wong
2024-10-17 19:03   ` [PATCH 19/21] xfs: refactor xfs_rtbitmap_blockcount Darrick J. Wong
2024-10-17 19:03   ` [PATCH 20/21] xfs: refactor xfs_rtsummary_blockcount Darrick J. Wong
2024-10-17 19:03   ` [PATCH 21/21] xfs: make RT extent numbers relative to the rtgroup Darrick J. Wong
2024-10-17 18:47 ` [PATCHSET v5.1 5/9] xfs: preparation for realtime allocation groups Darrick J. Wong
2024-10-17 19:03   ` [PATCH 1/2] xfs: fix rt device offset calculations for FITRIM Darrick J. Wong
2024-10-17 19:03   ` [PATCH 2/2] iomap: add a merge boundary flag Darrick J. Wong
2024-10-17 18:47 ` [PATCHSET v5.1 6/9] xfs: shard the realtime section Darrick J. Wong
2024-10-17 19:04   ` [PATCH 01/34] xfs: define the format of rt groups Darrick J. Wong
2024-10-17 19:04   ` [PATCH 02/34] xfs: check the realtime superblock at mount time Darrick J. Wong
2024-10-17 19:04   ` [PATCH 03/34] xfs: update realtime super every time we update the primary fs super Darrick J. Wong
2024-10-17 19:04   ` [PATCH 04/34] xfs: export realtime group geometry via XFS_FSOP_GEOM Darrick J. Wong
2024-10-17 19:04   ` [PATCH 05/34] xfs: check that rtblock extents do not break rtsupers or rtgroups Darrick J. Wong
2024-10-17 19:04   ` [PATCH 06/34] xfs: add a helper to prevent bmap merges across rtgroup boundaries Darrick J. Wong
2024-10-17 19:05   ` [PATCH 07/34] xfs: add frextents to the lazysbcounters when rtgroups enabled Darrick J. Wong
2024-10-17 19:05   ` [PATCH 08/34] xfs: convert sick_map loops to use ARRAY_SIZE Darrick J. Wong
2024-10-17 19:05   ` [PATCH 09/34] xfs: record rt group metadata errors in the health system Darrick J. Wong
2024-10-17 19:05   ` [PATCH 10/34] xfs: export the geometry of realtime groups to userspace Darrick J. Wong
2024-10-17 19:05   ` [PATCH 11/34] xfs: add block headers to realtime bitmap and summary blocks Darrick J. Wong
2024-10-17 19:05   ` [PATCH 12/34] xfs: encode the rtbitmap in big endian format Darrick J. Wong
2024-10-17 19:06   ` [PATCH 13/34] xfs: encode the rtsummary " Darrick J. Wong
2024-10-17 19:06   ` [PATCH 14/34] xfs: grow the realtime section when realtime groups are enabled Darrick J. Wong
2024-10-17 19:06   ` [PATCH 15/34] xfs: store rtgroup information with a bmap intent Darrick J. Wong
2024-10-17 19:06   ` [PATCH 16/34] xfs: force swapext to a realtime file to use the file content exchange ioctl Darrick J. Wong
2024-10-17 19:06   ` [PATCH 17/34] xfs: support logging EFIs for realtime extents Darrick J. Wong
2024-10-17 19:07   ` [PATCH 18/34] xfs: support error injection when freeing rt extents Darrick J. Wong
2024-10-17 19:07   ` [PATCH 19/34] xfs: use realtime EFI to free extents when rtgroups are enabled Darrick J. Wong
2024-10-17 19:07   ` [PATCH 20/34] xfs: don't merge ioends across RTGs Darrick J. Wong
2024-10-17 19:07   ` [PATCH 21/34] xfs: make the RT allocator rtgroup aware Darrick J. Wong
2024-10-17 19:07   ` [PATCH 22/34] xfs: don't coalesce file mappings that cross rtgroup boundaries in scrub Darrick J. Wong
2024-10-17 19:07   ` [PATCH 23/34] xfs: scrub the realtime group superblock Darrick J. Wong
2024-10-17 19:08   ` [PATCH 24/34] xfs: repair " Darrick J. Wong
2024-10-17 19:08   ` [PATCH 25/34] xfs: scrub metadir paths for rtgroup metadata Darrick J. Wong
2024-10-17 19:08   ` [PATCH 26/34] xfs: mask off the rtbitmap and summary inodes when metadir in use Darrick J. Wong
2024-10-17 19:08   ` [PATCH 27/34] xfs: create helpers to deal with rounding xfs_fileoff_t to rtx boundaries Darrick J. Wong
2024-10-17 19:08   ` [PATCH 28/34] xfs: create helpers to deal with rounding xfs_filblks_t " Darrick J. Wong
2024-10-17 19:08   ` [PATCH 29/34] xfs: make xfs_rtblock_t a segmented address like xfs_fsblock_t Darrick J. Wong
2024-10-22  5:54     ` Christoph Hellwig
2024-10-17 19:09   ` [PATCH 30/34] xfs: adjust min_block usage in xfs_verify_agbno Darrick J. Wong
2024-10-17 19:09   ` [PATCH 31/34] xfs: move the min and max group block numbers to xfs_group Darrick J. Wong
2024-10-17 19:09   ` [PATCH 32/34] xfs: port the perag discard code to handle generic groups Darrick J. Wong
2024-10-17 19:09   ` [PATCH 33/34] xfs: implement busy extent tracking for rtgroups Darrick J. Wong
2024-10-17 19:09   ` [PATCH 34/34] xfs: use rtgroup busy extent list for FITRIM Darrick J. Wong
2024-10-17 18:47 ` [PATCHSET v5.1 7/9] xfs: persist quota options with metadir Darrick J. Wong
2024-10-17 19:10   ` [PATCH 1/4] xfs: refactor xfs_qm_destroy_quotainos Darrick J. Wong
2024-10-17 19:10   ` [PATCH 2/4] xfs: use metadir for quota inodes Darrick J. Wong
2024-10-17 19:10   ` [PATCH 3/4] xfs: scrub quota file metapaths Darrick J. Wong
2024-10-17 19:10   ` [PATCH 4/4] xfs: persist quota flags with metadir Darrick J. Wong
2024-10-17 18:47 ` [PATCHSET v5.1 8/9] xfs: enable quota for realtime volumes Darrick J. Wong
2024-10-17 19:10   ` [PATCH 1/6] xfs: fix chown with rt quota Darrick J. Wong
2024-10-17 19:10   ` [PATCH 2/6] xfs: advertise realtime quota support in the xqm stat files Darrick J. Wong
2024-10-22  5:54     ` Christoph Hellwig
2024-10-17 19:11   ` [PATCH 3/6] xfs: report realtime block quota limits on realtime directories Darrick J. Wong
2024-10-17 19:11   ` [PATCH 4/6] xfs: create quota preallocation watermarks for realtime quota Darrick J. Wong
2024-10-17 19:11   ` [PATCH 5/6] xfs: reserve quota for realtime files correctly Darrick J. Wong
2024-10-17 19:11   ` [PATCH 6/6] xfs: enable realtime quota again Darrick J. Wong
2024-10-17 18:47 ` [PATCHSET v5.1 9/9] xfs: enable metadir Darrick J. Wong
2024-10-17 19:11   ` [PATCH 1/2] xfs: update sb field checks when metadir is turned on Darrick J. Wong
2024-10-17 19:11   ` [PATCH 2/2] xfs: enable metadata directory feature Darrick J. Wong
2024-10-17 23:27 ` [PATCHBOMB 6.13 v5.1] xfs: metadata directories and realtime groups Dave Chinner
2024-10-18 23:11   ` Darrick J. Wong
  -- strict thread matches above, loose matches on Subject: below --
2024-11-05 22:04 [PATCHSET v5.5 02/10] xfs: create a generic allocation group structure Darrick J. Wong
2024-11-05 22:16 ` [PATCH 16/16] xfs: store a generic group structure in the intents Darrick J. Wong
2024-10-11  0:33 [PATCHSET v5.0 2/9] xfs: create a generic allocation group structure Darrick J. Wong
2024-10-11  0:48 ` [PATCH 16/16] xfs: store a generic group structure in the intents Darrick J. Wong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=172919068956.3450737.2941149468344931746.stgit@frogsfrogsfrogs \
    --to=djwong@kernel.org \
    --cc=hch@lst.de \
    --cc=linux-xfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox