Re: [RFC PATCH] mm: introduce kv[mz]alloc helpers
From: Dave Chinner <david@fromorbit.com>
Date: 2016-12-09 01:45:01
Also in:
dm-devel, kvm, linux-f2fs-devel, linux-mm, lkml
From: Dave Chinner <david@fromorbit.com>
Date: 2016-12-09 01:45:01
Also in:
dm-devel, kvm, linux-f2fs-devel, linux-mm, lkml
On Thu, Dec 08, 2016 at 11:33:00AM +0100, Michal Hocko wrote:
From: Michal Hocko <mhocko@suse.com>
Using kmalloc with the vmalloc fallback for larger allocations is a
common pattern in the kernel code. Yet we do not have any common helper
for that and so users have invented their own helpers. Some of them are
really creative when doing so. Let's just add kv[mz]alloc and make sure
it is implemented properly. This implementation makes sure to not make
a large memory pressure for > PAGE_SZE requests (__GFP_NORETRY) and also
to not warn about allocation failures. This also rules out the OOM
killer as the vmalloc is a more approapriate fallback than a disruptive
user visible action.
This patch also changes some existing users and removes helpers which
are specific for them. In some cases this is not possible (e.g.
ext4_kvmalloc, libcfs_kvzalloc, __aa_kvmalloc) because those seems to be
broken and require GFP_NO{FS,IO} context which is not vmalloc compatible
in general (note that the page table allocation is GFP_KERNEL). Those
need to be fixed separately.See fs/xfs/kmem.c::kmem_zalloc_large(), which is XFS's version of kvmalloc() that is GFP_NOFS/GFP_NOIO safe. Any generic API for this functionality will have to play these memalloc_noio_save/ memalloc_noio_restore games to ensure they are GFP_NOFS safe.... Cheers, Dave. -- Dave Chinner david@fromorbit.com -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>