From: Carlos Maiolino Date: Tue, 15 Sep 2020 19:59:36 +0000 (-0400) Subject: xfs: Remove kmem_zone_zalloc() usage X-Git-Tag: v5.9.0-rc0~30 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=17e074de6f6efb46d84df87617b79c0b1f8211f7;p=thirdparty%2Fxfsprogs-dev.git xfs: Remove kmem_zone_zalloc() usage Source kernel commit: 32a2b11f467642ea700bc0b01f4693e52ec0fabd Use kmem_cache_zalloc() directly. With the exception of xlog_ticket_alloc() which will be dealt on the next patch for readability. Reviewed-by: Christoph Hellwig Signed-off-by: Carlos Maiolino Reviewed-by: Darrick J. Wong Signed-off-by: Darrick J. Wong Reviewed-by: Dave Chinner Signed-off-by: Eric Sandeen --- diff --git a/include/kmem.h b/include/kmem.h index 9eb49d172..75fb00579 100644 --- a/include/kmem.h +++ b/include/kmem.h @@ -20,11 +20,14 @@ typedef struct kmem_zone { typedef unsigned int __bitwise gfp_t; #define GFP_KERNEL ((__force gfp_t)0) +#define GFP_NOFS ((__force gfp_t)0) #define __GFP_NOFAIL ((__force gfp_t)0) +#define __GFP_ZERO (__force gfp_t)1 + extern kmem_zone_t *kmem_zone_init(int, char *); extern void *kmem_cache_alloc(kmem_zone_t *, gfp_t); -extern void *kmem_zone_zalloc(kmem_zone_t *, int); +extern void *kmem_cache_zalloc(kmem_zone_t *, gfp_t); extern int kmem_zone_destroy(kmem_zone_t *); static inline void diff --git a/libxfs/kmem.c b/libxfs/kmem.c index 76234ba13..a7a3f2d07 100644 --- a/libxfs/kmem.c +++ b/libxfs/kmem.c @@ -54,7 +54,7 @@ kmem_cache_alloc(kmem_zone_t *zone, gfp_t flags) } void * -kmem_zone_zalloc(kmem_zone_t *zone, int flags) +kmem_cache_zalloc(kmem_zone_t *zone, gfp_t flags) { void *ptr = kmem_cache_alloc(zone, flags); diff --git a/libxfs/logitem.c b/libxfs/logitem.c index 165eeb75b..40f9400f1 100644 --- a/libxfs/logitem.c +++ b/libxfs/logitem.c @@ -96,7 +96,7 @@ xfs_buf_item_init( } } - bip = (xfs_buf_log_item_t *)kmem_zone_zalloc(xfs_buf_item_zone, 0); + bip = kmem_cache_zalloc(xfs_buf_item_zone, 0); #ifdef LI_DEBUG fprintf(stderr, "adding buf item %p for not-logged buffer %p\n", bip, bp); @@ -138,7 +138,7 @@ xfs_inode_item_init( struct xfs_inode_log_item *iip; ASSERT(ip->i_itemp == NULL); - iip = ip->i_itemp = kmem_zone_zalloc(xfs_ili_zone, 0); + iip = ip->i_itemp = kmem_cache_zalloc(xfs_ili_zone, 0); #ifdef LI_DEBUG fprintf(stderr, "inode_item_init for inode %llu, iip=%p\n", ip->i_ino, iip); diff --git a/libxfs/rdwr.c b/libxfs/rdwr.c index 5167c58e3..79c1029b1 100644 --- a/libxfs/rdwr.c +++ b/libxfs/rdwr.c @@ -452,7 +452,7 @@ __libxfs_getbufr(int blen) bp->b_maps = NULL; } } else - bp = kmem_zone_zalloc(xfs_buf_zone, 0); + bp = kmem_cache_zalloc(xfs_buf_zone, 0); pthread_mutex_unlock(&xfs_buf_freelist.cm_mutex); bp->b_ops = NULL; if (bp->b_flags & LIBXFS_B_DIRTY) @@ -1250,7 +1250,7 @@ libxfs_iget( struct xfs_buf *bp; int error = 0; - ip = kmem_zone_zalloc(xfs_inode_zone, 0); + ip = kmem_cache_zalloc(xfs_inode_zone, 0); if (!ip) return -ENOMEM; diff --git a/libxfs/trans.c b/libxfs/trans.c index af3342755..51ce83021 100644 --- a/libxfs/trans.c +++ b/libxfs/trans.c @@ -141,7 +141,7 @@ xfs_trans_dup( { struct xfs_trans *ntp; - ntp = kmem_zone_zalloc(xfs_trans_zone, 0); + ntp = kmem_cache_zalloc(xfs_trans_zone, 0); /* * Initialize the new transaction structure. @@ -258,7 +258,7 @@ libxfs_trans_alloc( struct xfs_trans *tp; int error; - tp = kmem_zone_zalloc(xfs_trans_zone, 0); + tp = kmem_cache_zalloc(xfs_trans_zone, 0); tp->t_mountp = mp; INIT_LIST_HEAD(&tp->t_items); INIT_LIST_HEAD(&tp->t_dfops); diff --git a/libxfs/xfs_alloc_btree.c b/libxfs/xfs_alloc_btree.c index 87dd4ff86..2198bbffe 100644 --- a/libxfs/xfs_alloc_btree.c +++ b/libxfs/xfs_alloc_btree.c @@ -478,7 +478,7 @@ xfs_allocbt_init_common( ASSERT(btnum == XFS_BTNUM_BNO || btnum == XFS_BTNUM_CNT); - cur = kmem_zone_zalloc(xfs_btree_cur_zone, KM_NOFS); + cur = kmem_cache_zalloc(xfs_btree_cur_zone, GFP_NOFS | __GFP_NOFAIL); cur->bc_tp = tp; cur->bc_mp = mp; diff --git a/libxfs/xfs_bmap.c b/libxfs/xfs_bmap.c index 08c30bd2e..a6df058f9 100644 --- a/libxfs/xfs_bmap.c +++ b/libxfs/xfs_bmap.c @@ -1092,7 +1092,10 @@ xfs_bmap_add_attrfork( if (error) goto trans_cancel; ASSERT(ip->i_afp == NULL); - ip->i_afp = kmem_zone_zalloc(xfs_ifork_zone, 0); + + ip->i_afp = kmem_cache_zalloc(xfs_ifork_zone, + GFP_KERNEL | __GFP_NOFAIL); + ip->i_afp->if_format = XFS_DINODE_FMT_EXTENTS; ip->i_afp->if_flags = XFS_IFEXTENTS; logflags = 0; diff --git a/libxfs/xfs_bmap_btree.c b/libxfs/xfs_bmap_btree.c index 579160b77..1ec9f5ffb 100644 --- a/libxfs/xfs_bmap_btree.c +++ b/libxfs/xfs_bmap_btree.c @@ -550,7 +550,7 @@ xfs_bmbt_init_cursor( struct xfs_btree_cur *cur; ASSERT(whichfork != XFS_COW_FORK); - cur = kmem_zone_zalloc(xfs_btree_cur_zone, KM_NOFS); + cur = kmem_cache_zalloc(xfs_btree_cur_zone, GFP_NOFS | __GFP_NOFAIL); cur->bc_tp = tp; cur->bc_mp = mp; diff --git a/libxfs/xfs_da_btree.c b/libxfs/xfs_da_btree.c index 4e909caa9..315354a69 100644 --- a/libxfs/xfs_da_btree.c +++ b/libxfs/xfs_da_btree.c @@ -78,7 +78,7 @@ kmem_zone_t *xfs_da_state_zone; /* anchor for state struct zone */ xfs_da_state_t * xfs_da_state_alloc(void) { - return kmem_zone_zalloc(xfs_da_state_zone, KM_NOFS); + return kmem_cache_zalloc(xfs_da_state_zone, GFP_NOFS | __GFP_NOFAIL); } /* diff --git a/libxfs/xfs_ialloc_btree.c b/libxfs/xfs_ialloc_btree.c index 0c5c55f06..41c308c2e 100644 --- a/libxfs/xfs_ialloc_btree.c +++ b/libxfs/xfs_ialloc_btree.c @@ -410,7 +410,7 @@ xfs_inobt_init_common( { struct xfs_btree_cur *cur; - cur = kmem_zone_zalloc(xfs_btree_cur_zone, KM_NOFS); + cur = kmem_cache_zalloc(xfs_btree_cur_zone, GFP_NOFS | __GFP_NOFAIL); cur->bc_tp = tp; cur->bc_mp = mp; cur->bc_btnum = btnum; diff --git a/libxfs/xfs_inode_fork.c b/libxfs/xfs_inode_fork.c index f2de1ad52..30522d695 100644 --- a/libxfs/xfs_inode_fork.c +++ b/libxfs/xfs_inode_fork.c @@ -289,7 +289,7 @@ xfs_iformat_attr_fork( * Initialize the extent count early, as the per-format routines may * depend on it. */ - ip->i_afp = kmem_zone_zalloc(xfs_ifork_zone, KM_NOFS); + ip->i_afp = kmem_cache_zalloc(xfs_ifork_zone, GFP_NOFS | __GFP_NOFAIL); ip->i_afp->if_format = dip->di_aformat; if (unlikely(ip->i_afp->if_format == 0)) /* pre IRIX 6.2 file system */ ip->i_afp->if_format = XFS_DINODE_FMT_EXTENTS; @@ -671,8 +671,8 @@ xfs_ifork_init_cow( if (ip->i_cowfp) return; - ip->i_cowfp = kmem_zone_zalloc(xfs_ifork_zone, - KM_NOFS); + ip->i_cowfp = kmem_cache_zalloc(xfs_ifork_zone, + GFP_NOFS | __GFP_NOFAIL); ip->i_cowfp->if_flags = XFS_IFEXTENTS; ip->i_cowfp->if_format = XFS_DINODE_FMT_EXTENTS; } diff --git a/libxfs/xfs_refcount_btree.c b/libxfs/xfs_refcount_btree.c index 1f116b05e..eb48197bb 100644 --- a/libxfs/xfs_refcount_btree.c +++ b/libxfs/xfs_refcount_btree.c @@ -322,7 +322,7 @@ xfs_refcountbt_init_common( ASSERT(agno != NULLAGNUMBER); ASSERT(agno < mp->m_sb.sb_agcount); - cur = kmem_zone_zalloc(xfs_btree_cur_zone, KM_NOFS); + cur = kmem_cache_zalloc(xfs_btree_cur_zone, GFP_NOFS | __GFP_NOFAIL); cur->bc_tp = tp; cur->bc_mp = mp; cur->bc_btnum = XFS_BTNUM_REFC; diff --git a/libxfs/xfs_rmap_btree.c b/libxfs/xfs_rmap_btree.c index cf81e4365..8ddc17908 100644 --- a/libxfs/xfs_rmap_btree.c +++ b/libxfs/xfs_rmap_btree.c @@ -454,7 +454,7 @@ xfs_rmapbt_init_common( { struct xfs_btree_cur *cur; - cur = kmem_zone_zalloc(xfs_btree_cur_zone, KM_NOFS); + cur = kmem_cache_zalloc(xfs_btree_cur_zone, GFP_NOFS | __GFP_NOFAIL); cur->bc_tp = tp; cur->bc_mp = mp; /* Overlapping btree; 2 keys per pointer. */