forked from Minki/linux
xfs: remove kmem_realloc()
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>
This commit is contained in:
parent
f4d51dffc6
commit
771915c4f6
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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),
|
||||
|
Loading…
Reference in New Issue
Block a user