btrfs: scrub: add memalloc_nofs protection around init_ipath
authorDavid Sterba <dsterba@suse.com>
Wed, 31 May 2017 17:21:38 +0000 (19:21 +0200)
committerDavid Sterba <dsterba@suse.com>
Mon, 19 Jun 2017 16:26:02 +0000 (18:26 +0200)
commitde2491fdefe7e599fa08a81a1b89d03c96c9cbc3
treeb3fd451798e685ab306e10bbc842303d7aecace0
parentf11f74416ae6e63a6d6db9c5b22666a0aa57b881
btrfs: scrub: add memalloc_nofs protection around init_ipath

init_ipath is called from a safe ioctl context and from scrub when
printing an error.  The protection is added for three reasons:

* init_data_container calls vmalloc and this does not work as expected
  in the GFP_NOFS context, so this silently does GFP_KERNEL and might
  deadlock in some cases
* keep the context constraint of GFP_NOFS, used by scrub
* we want to use GFP_KERNEL unconditionally inside init_ipath or its
  callees

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