]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: use kfree_rcu_mightsleep to free the perag structures
authorChristoph Hellwig <hch@lst.de>
Mon, 21 Oct 2024 00:10:45 +0000 (17:10 -0700)
committerDarrick J. Wong <djwong@kernel.org>
Thu, 31 Oct 2024 22:45:03 +0000 (15:45 -0700)
Source kernel commit: 4ef7c6d39dc72dae983b836c8b2b5de7128c0da3

Using the kfree_rcu_mightsleep is simpler and removes the need for a
rcu_head in the perag structure.

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>
include/kmem.h
libxfs/xfs_ag.c
libxfs/xfs_ag.h

index 8739d824008e2a8391f718b18346fcb9e1255c7d..16a7957f1acee3708eebe747673601b643183365 100644 (file)
@@ -71,6 +71,11 @@ static inline void kvfree(const void *ptr)
        kfree(ptr);
 }
 
+static inline void kfree_rcu_mightsleep(const void *ptr)
+{
+       kfree(ptr);
+}
+
 __attribute__((format(printf,2,3)))
 char *kasprintf(gfp_t gfp, const char *fmt, ...);
 
index ed9ac7f58d1aba7248e3d90e95eb2e9616c1bf48..1b65ba983ad542afa22d3d50d46e21310a12f929 100644 (file)
@@ -233,16 +233,6 @@ out:
        return error;
 }
 
-STATIC void
-__xfs_free_perag(
-       struct rcu_head *head)
-{
-       struct xfs_perag *pag = container_of(head, struct xfs_perag, rcu_head);
-
-       ASSERT(!delayed_work_pending(&pag->pag_blockgc_work));
-       kfree(pag);
-}
-
 /*
  * Free up the per-ag resources associated with the mount structure.
  */
@@ -268,7 +258,7 @@ xfs_free_perag(
                xfs_perag_rele(pag);
                XFS_IS_CORRUPT(pag->pag_mount,
                                atomic_read(&pag->pag_active_ref) != 0);
-               call_rcu(&pag->rcu_head, __xfs_free_perag);
+               kfree_rcu_mightsleep(pag);
        }
 }
 
index 35de09a2516c704b87af86bd3e33ad8ff1768196..d62c266c0b44d54942003921d7b8180a1d06c53c 100644 (file)
@@ -63,9 +63,6 @@ struct xfs_perag {
        /* Blocks reserved for the reverse mapping btree. */
        struct xfs_ag_resv      pag_rmapbt_resv;
 
-       /* for rcu-safe freeing */
-       struct rcu_head rcu_head;
-
        /* Precalculated geometry info */
        xfs_agblock_t           block_count;
        xfs_agblock_t           min_block;