btrfs: allocate page arrays using bulk page allocator
authorSweet Tea Dorminy <sweettea-kernel@dorminy.me>
Wed, 30 Mar 2022 20:11:23 +0000 (16:11 -0400)
committerDavid Sterba <dsterba@suse.com>
Mon, 16 May 2022 15:03:11 +0000 (17:03 +0200)
commit91d6ac1d62c3dc0f102986318f4027ccfa22c638
treedec40c8a71ce428f4ff34057043f31924df4082a
parentdd137dd1f2d719682b522d4eabe6dec461b7d6fa
btrfs: allocate page arrays using bulk page allocator

While calling alloc_page() in a loop is an effective way to populate an
array of pages, the MM subsystem provides a method to allocate pages in
bulk.  alloc_pages_bulk_array() populates the NULL slots in a page
array, trying to grab more than one page at a time.

Unfortunately, it doesn't guarantee allocating all slots in the array,
but it's easy to call it in a loop and return an error if no progress
occurs.

Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: Sweet Tea Dorminy <sweettea-kernel@dorminy.me>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/extent_io.c