xfs: put attr[id] log item cache init with the others
authorDarrick J. Wong <djwong@kernel.org>
Sun, 22 May 2022 05:59:48 +0000 (15:59 +1000)
committerDave Chinner <david@fromorbit.com>
Sun, 22 May 2022 05:59:48 +0000 (15:59 +1000)
Initialize and destroy the xattr log item caches in the same places that
we do all the other log item caches.

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
fs/xfs/libxfs/xfs_attr.c
fs/xfs/libxfs/xfs_attr.h
fs/xfs/libxfs/xfs_defer.c
fs/xfs/xfs_attr_item.c
fs/xfs/xfs_attr_item.h
fs/xfs/xfs_super.c

index 93aa892ed0e340792384c014328955af5d804f31..a711976e4fafe53ff0a8883bf1157a1bb71dc109 100644 (file)
@@ -27,8 +27,6 @@
 #include "xfs_attr_item.h"
 #include "xfs_log.h"
 
-struct kmem_cache              *xfs_attri_cache;
-struct kmem_cache              *xfs_attrd_cache;
 struct kmem_cache              *xfs_attr_intent_cache;
 
 /*
@@ -1113,40 +1111,6 @@ out_trans_cancel:
        goto out_unlock;
 }
 
-int __init
-xfs_attri_init_cache(void)
-{
-       xfs_attri_cache = kmem_cache_create("xfs_attri",
-                                           sizeof(struct xfs_attri_log_item),
-                                           0, 0, NULL);
-
-       return xfs_attri_cache != NULL ? 0 : -ENOMEM;
-}
-
-void
-xfs_attri_destroy_cache(void)
-{
-       kmem_cache_destroy(xfs_attri_cache);
-       xfs_attri_cache = NULL;
-}
-
-int __init
-xfs_attrd_init_cache(void)
-{
-       xfs_attrd_cache = kmem_cache_create("xfs_attrd",
-                                           sizeof(struct xfs_attrd_log_item),
-                                           0, 0, NULL);
-
-       return xfs_attrd_cache != NULL ? 0 : -ENOMEM;
-}
-
-void
-xfs_attrd_destroy_cache(void)
-{
-       kmem_cache_destroy(xfs_attrd_cache);
-       xfs_attrd_cache = NULL;
-}
-
 /*========================================================================
  * External routines when attribute list is inside the inode
  *========================================================================*/
index f0b93515c1e8ffd6b43e412634e9c4feddc3459a..22a2f288c1c0ed1cac4d77deed4ef7bfd32c93f3 100644 (file)
@@ -558,14 +558,6 @@ int xfs_attr_calc_size(struct xfs_da_args *args, int *local);
 void xfs_init_attr_trans(struct xfs_da_args *args, struct xfs_trans_res *tres,
                         unsigned int *total);
 
-extern struct kmem_cache       *xfs_attri_cache;
-extern struct kmem_cache       *xfs_attrd_cache;
-
-int __init xfs_attri_init_cache(void);
-void xfs_attri_destroy_cache(void);
-int __init xfs_attrd_init_cache(void);
-void xfs_attrd_destroy_cache(void);
-
 /*
  * Check to see if the attr should be upgraded from non-existent or shortform to
  * single-leaf-block attribute list.
index ed65f7e5a9c7d5eda2ee5a551325575fe60712f2..ace229c1d251205eba53a21c96b7cbeee4a89b7c 100644 (file)
@@ -871,12 +871,6 @@ xfs_defer_init_item_caches(void)
        if (error)
                goto err;
        error = xfs_extfree_intent_init_cache();
-       if (error)
-               goto err;
-       error = xfs_attri_init_cache();
-       if (error)
-               goto err;
-       error = xfs_attrd_init_cache();
        if (error)
                goto err;
        error = xfs_attr_intent_init_cache();
@@ -893,8 +887,6 @@ void
 xfs_defer_destroy_item_caches(void)
 {
        xfs_attr_intent_destroy_cache();
-       xfs_attri_destroy_cache();
-       xfs_attrd_destroy_cache();
        xfs_extfree_intent_destroy_cache();
        xfs_bmap_intent_destroy_cache();
        xfs_refcount_intent_destroy_cache();
index f85bcbfc24789ca69516edee1558febe560f913a..ca0dd46c0ae5c6dea2d4f335a95132f58b9948bd 100644 (file)
@@ -29,6 +29,9 @@
 #include "xfs_log_priv.h"
 #include "xfs_log_recover.h"
 
+struct kmem_cache              *xfs_attri_cache;
+struct kmem_cache              *xfs_attrd_cache;
+
 static const struct xfs_item_ops xfs_attri_item_ops;
 static const struct xfs_item_ops xfs_attrd_item_ops;
 static struct xfs_attrd_log_item *xfs_trans_get_attrd(struct xfs_trans *tp,
index c3b779f82adb5c6afec628ad26dfb9c6036093a4..cc2fbc9d58a7c58e64036c11784abb04ba99cf17 100644 (file)
@@ -43,4 +43,7 @@ struct xfs_attrd_log_item {
        struct xfs_attrd_log_format     attrd_format;
 };
 
+extern struct kmem_cache       *xfs_attri_cache;
+extern struct kmem_cache       *xfs_attrd_cache;
+
 #endif /* __XFS_ATTR_ITEM_H__ */
index 93e43e1a28632cf3ff823acd5b2b74a85dc589aa..51ce127a0cc6308ff9c3b7e6e0f83923257ace31 100644 (file)
@@ -38,6 +38,7 @@
 #include "xfs_pwork.h"
 #include "xfs_ag.h"
 #include "xfs_defer.h"
+#include "xfs_attr_item.h"
 
 #include <linux/magic.h>
 #include <linux/fs_context.h>
@@ -2083,8 +2084,24 @@ xfs_init_caches(void)
        if (!xfs_bui_cache)
                goto out_destroy_bud_cache;
 
+       xfs_attrd_cache = kmem_cache_create("xfs_attrd_item",
+                                           sizeof(struct xfs_attrd_log_item),
+                                           0, 0, NULL);
+       if (!xfs_attrd_cache)
+               goto out_destroy_bui_cache;
+
+       xfs_attri_cache = kmem_cache_create("xfs_attri_item",
+                                           sizeof(struct xfs_attri_log_item),
+                                           0, 0, NULL);
+       if (!xfs_attri_cache)
+               goto out_destroy_attrd_cache;
+
        return 0;
 
+ out_destroy_attrd_cache:
+       kmem_cache_destroy(xfs_attrd_cache);
+ out_destroy_bui_cache:
+       kmem_cache_destroy(xfs_bui_cache);
  out_destroy_bud_cache:
        kmem_cache_destroy(xfs_bud_cache);
  out_destroy_cui_cache:
@@ -2131,6 +2148,8 @@ xfs_destroy_caches(void)
         * destroy caches.
         */
        rcu_barrier();
+       kmem_cache_destroy(xfs_attri_cache);
+       kmem_cache_destroy(xfs_attrd_cache);
        kmem_cache_destroy(xfs_bui_cache);
        kmem_cache_destroy(xfs_bud_cache);
        kmem_cache_destroy(xfs_cui_cache);