xfs: remove kmem_realloc()
authorCarlos Maiolino <cmaiolino@redhat.com>
Wed, 26 Aug 2020 21:05:56 +0000 (14:05 -0700)
committerDarrick J. Wong <darrick.wong@oracle.com>
Mon, 7 Sep 2020 01:05:51 +0000 (18:05 -0700)
Remove kmem_realloc() function and convert its users to use MM API
directly (krealloc())

Signed-off-by: Carlos Maiolino <cmaiolino@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
fs/xfs/kmem.c
fs/xfs/kmem.h
fs/xfs/libxfs/xfs_iext_tree.c
fs/xfs/libxfs/xfs_inode_fork.c
fs/xfs/xfs_log_recover.c
fs/xfs/xfs_mount.c
fs/xfs/xfs_trace.h

index e841ed781a257d807621109deaee0d0d1ec5465b..e986b95d94c9b52821b1ddbd9eb279b9c1e6f3e9 100644 (file)
@@ -93,25 +93,3 @@ kmem_alloc_large(size_t size, xfs_km_flags_t flags)
                return ptr;
        return __kmem_vmalloc(size, flags);
 }
-
-void *
-kmem_realloc(const void *old, size_t newsize, xfs_km_flags_t flags)
-{
-       int     retries = 0;
-       gfp_t   lflags = kmem_flags_convert(flags);
-       void    *ptr;
-
-       trace_kmem_realloc(newsize, flags, _RET_IP_);
-
-       do {
-               ptr = krealloc(old, newsize, lflags);
-               if (ptr || (flags & KM_MAYFAIL))
-                       return ptr;
-               if (!(++retries % 100))
-                       xfs_err(NULL,
-       "%s(%u) possible memory allocation deadlock size %zu in %s (mode:0x%x)",
-                               current->comm, current->pid,
-                               newsize, __func__, lflags);
-               congestion_wait(BLK_RW_ASYNC, HZ/50);
-       } while (1);
-}
index 8e8555817e6d3e8d0c456dbd27a59c5c916de600..fb1d066770723d0c850c1bf59a4b714de6485f28 100644 (file)
@@ -59,7 +59,6 @@ kmem_flags_convert(xfs_km_flags_t flags)
 extern void *kmem_alloc(size_t, xfs_km_flags_t);
 extern void *kmem_alloc_io(size_t size, int align_mask, xfs_km_flags_t flags);
 extern void *kmem_alloc_large(size_t size, xfs_km_flags_t);
-extern void *kmem_realloc(const void *, size_t, xfs_km_flags_t);
 static inline void  kmem_free(const void *ptr)
 {
        kvfree(ptr);
index 52451809c478688bbd9b3576a6dfb1d684b023c6..b4164256993d86594d9a6da4dd8ba40b409f6583 100644 (file)
@@ -603,7 +603,7 @@ xfs_iext_realloc_root(
        if (new_size / sizeof(struct xfs_iext_rec) == RECS_PER_LEAF)
                new_size = NODE_SIZE;
 
-       new = kmem_realloc(ifp->if_u1.if_root, new_size, KM_NOFS);
+       new = krealloc(ifp->if_u1.if_root, new_size, GFP_NOFS | __GFP_NOFAIL);
        memset(new + ifp->if_bytes, 0, new_size - ifp->if_bytes);
        ifp->if_u1.if_root = new;
        cur->leaf = new;
index 0cf853d42d622c75f79dca68ad4469851c197686..7575de5cecb1f6f907c19486d0b53cfed55afd6a 100644 (file)
@@ -386,8 +386,8 @@ xfs_iroot_realloc(
                cur_max = xfs_bmbt_maxrecs(mp, ifp->if_broot_bytes, 0);
                new_max = cur_max + rec_diff;
                new_size = XFS_BMAP_BROOT_SPACE_CALC(mp, new_max);
-               ifp->if_broot = kmem_realloc(ifp->if_broot, new_size,
-                               KM_NOFS);
+               ifp->if_broot = krealloc(ifp->if_broot, new_size,
+                                        GFP_NOFS | __GFP_NOFAIL);
                op = (char *)XFS_BMAP_BROOT_PTR_ADDR(mp, ifp->if_broot, 1,
                                                     ifp->if_broot_bytes);
                np = (char *)XFS_BMAP_BROOT_PTR_ADDR(mp, ifp->if_broot, 1,
@@ -496,8 +496,8 @@ xfs_idata_realloc(
         * in size so that it can be logged and stay on word boundaries.
         * We enforce that here.
         */
-       ifp->if_u1.if_data = kmem_realloc(ifp->if_u1.if_data,
-                       roundup(new_size, 4), KM_NOFS);
+       ifp->if_u1.if_data = krealloc(ifp->if_u1.if_data, roundup(new_size, 4),
+                                     GFP_NOFS | __GFP_NOFAIL);
        ifp->if_bytes = new_size;
 }
 
index e2ec91b2d0f46d3ef58ac41dfe1f4ffc468cb622..45dca18a95204746bb43bb0a7c5e2c38d1e9c3f7 100644 (file)
@@ -2097,7 +2097,7 @@ xlog_recover_add_to_cont_trans(
        old_ptr = item->ri_buf[item->ri_cnt-1].i_addr;
        old_len = item->ri_buf[item->ri_cnt-1].i_len;
 
-       ptr = kmem_realloc(old_ptr, len + old_len, 0);
+       ptr = krealloc(old_ptr, len + old_len, GFP_KERNEL | __GFP_NOFAIL);
        memcpy(&ptr[old_len], dp, len);
        item->ri_buf[item->ri_cnt-1].i_len += len;
        item->ri_buf[item->ri_cnt-1].i_addr = ptr;
index c8ae49a1e99c3534a8f88cb37fcb94e0ce9f3891..0bc623c175e93ed64d3823b5fe884268f326189e 100644 (file)
@@ -80,9 +80,9 @@ xfs_uuid_mount(
        }
 
        if (hole < 0) {
-               xfs_uuid_table = kmem_realloc(xfs_uuid_table,
+               xfs_uuid_table = krealloc(xfs_uuid_table,
                        (xfs_uuid_table_size + 1) * sizeof(*xfs_uuid_table),
-                       0);
+                       GFP_KERNEL | __GFP_NOFAIL);
                hole = xfs_uuid_table_size++;
        }
        xfs_uuid_table[hole] = *uuid;
index abb1d859f226a22493e3e2cba96dfecba5617fdd..d898d7ac4dc31dd458abe03a0c701cd238ac1e14 100644 (file)
@@ -3676,7 +3676,6 @@ DEFINE_EVENT(xfs_kmem_class, name, \
 DEFINE_KMEM_EVENT(kmem_alloc);
 DEFINE_KMEM_EVENT(kmem_alloc_io);
 DEFINE_KMEM_EVENT(kmem_alloc_large);
-DEFINE_KMEM_EVENT(kmem_realloc);
 
 TRACE_EVENT(xfs_check_new_dalign,
        TP_PROTO(struct xfs_mount *mp, int new_dalign, xfs_ino_t calc_rootino),