#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;
 
 /*
        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
  *========================================================================*/
 
 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.
 
        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();
 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();
 
 #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,
 
        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__ */
 
 #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>
        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:
         * 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);