On Mon, 2020-03-09 at 11:21 -0700, Daniel Xu wrote: > Hi Joe, Hello Daniel. > On Fri Mar 6, 2020 at 12:49 AM, Joe Perches wrote: > > On Thu, 2020-03-05 at 13:16 -0800, Daniel Xu wrote: > > > It's not really necessary to have contiguous physical memory for xattr > > > values. We no longer need to worry about higher order allocations > > > failing with kvmalloc, especially because the xattr size limit is at > > > 64K. > > > > So why use vmalloc memory at all? > > > > > > > diff --git a/fs/xattr.c b/fs/xattr.c > > '] > > > @@ -817,7 +817,7 @@ struct simple_xattr *simple_xattr_alloc(const void *value, size_t size) > > > if (len < sizeof(*new_xattr)) > > > return NULL; > > > > > > - new_xattr = kmalloc(len, GFP_KERNEL); > > > + new_xattr = kvmalloc(len, GFP_KERNEL); > > > > Why is this sensible? > > vmalloc memory is a much more limited resource. > > What would be the alternative? As Greg said, contiguous memory should be > more scarce. If the need is to allocate from a single block of memory, perhaps you need a submemory allocator like gen_pool. (gennalloc.h) Dunno. Maybe i just don't quite understand your need.