[PATCH 27/67] xfs: pass the defer ops instead of type to xfs_defer_start_recovery

Darrick J. Wong
2024-03-13T02:00:05Z

From: Christoph Hellwig <hch@lst.de>

Source kernel commit: dc22af64368291a86fb6b7eb2adab21c815836b7

xfs_defer_start_recovery is only called from xlog_recover_intent_item,
and the callers of that all have the actual xfs_defer_ops_type operation
vector at hand. Pass that directly instead of looking it up from the
defer_op_types table.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Chandan Babu R <chandanbabu@kernel.org>
---
libxfs/xfs_defer.c | 6 +++---
libxfs/xfs_defer.h | 2 +-
2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/libxfs/xfs_defer.c b/libxfs/xfs_defer.c
index bb5411b84545..033283017fae 100644
--- a/libxfs/xfs_defer.c
+++ b/libxfs/xfs_defer.c
@@ -888,14 +888,14 @@ xfs_defer_add_barrier(
void
xfs_defer_start_recovery(
struct xfs_log_item *lip,
- enum xfs_defer_ops_type dfp_type,
- struct list_head *r_dfops)
+ struct list_head *r_dfops,
+ const struct xfs_defer_op_type *ops)
{
struct xfs_defer_pending *dfp;

dfp = kmem_cache_zalloc(xfs_defer_pending_cache,
GFP_NOFS | __GFP_NOFAIL);
- dfp->dfp_ops = defer_op_types[dfp_type];
+ dfp->dfp_ops = ops;
dfp->dfp_intent = lip;
INIT_LIST_HEAD(&dfp->dfp_work);
list_add_tail(&dfp->dfp_list, r_dfops);
diff --git a/libxfs/xfs_defer.h b/libxfs/xfs_defer.h
index 957a06278e88..60de91b66392 100644
--- a/libxfs/xfs_defer.h
+++ b/libxfs/xfs_defer.h
@@ -147,7 +147,7 @@ void xfs_defer_ops_capture_abort(struct xfs_mount *mp,
void xfs_defer_resources_rele(struct xfs_defer_resources *dres);

void xfs_defer_start_recovery(struct xfs_log_item *lip,
- enum xfs_defer_ops_type dfp_type, struct list_head *r_dfops);
+ struct list_head *r_dfops, const struct xfs_defer_op_type *ops);
void xfs_defer_cancel_recovery(struct xfs_mount *mp,
struct xfs_defer_pending *dfp);
int xfs_defer_finish_recovery(struct xfs_mount *mp,