btrfs: add memalloc_nofs protections around alloc_workspace callback
authorDavid Sterba <dsterba@suse.com>
Wed, 31 May 2017 15:14:56 +0000 (17:14 +0200)
committerDavid Sterba <dsterba@suse.com>
Mon, 19 Jun 2017 16:26:02 +0000 (18:26 +0200)
commitfe30853307559c3ec237391507c2b395095aa151
tree9e996f1c131b3acba6b2a745be86094134c3a4ec
parentadf0212396e3af238e25e7c54ecb2959f19def24
btrfs: add memalloc_nofs protections around alloc_workspace callback

The workspaces are preallocated at the beginning where we can safely use
GFP_KERNEL, but in some cases the find_workspace might reach the
allocation again, now in a more restricted context when the bios or
pages are being compressed.

To avoid potential lockup when alloc_workspace -> vmalloc would silently
use the GFP_KERNEL, add the memalloc_nofs helpers around the critical
call site.

Reviewed-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/compression.c