]> granicus.if.org Git - spl/commit
Use spl_fstrans_mark instead of memalloc_noio_save
authorChunwei Chen <david.chen@osnexus.com>
Fri, 18 Dec 2015 02:31:58 +0000 (18:31 -0800)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 18 Dec 2015 21:24:52 +0000 (13:24 -0800)
commitb4ad50ac5f16de9220452f0da493e67c060d701b
tree2242714bb50ea85f87792f859d20bbfefcbc9f7c
parent200366f23f1a16874d78a07936c5a33f2d488022
Use spl_fstrans_mark instead of memalloc_noio_save

For earlier versions of the kernel with memalloc_noio_save, it only turns
off __GFP_IO but leaves __GFP_FS untouched during direct reclaim. This
would cause threads to direct reclaim into ZFS and cause deadlock.

Instead, we should stick to using spl_fstrans_mark. Since we would
explicitly turn off both __GFP_IO and __GFP_FS before allocation, it
will work on every version of the kernel.

This impacts kernel versions 3.9-3.17, see upstream kernel commit
torvalds/linux@934f307 for reference.

Signed-off-by: Chunwei Chen <david.chen@osnexus.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Tim Chase <tim@chase2k.com>
Closes #515
Issue zfsonlinux/zfs#4111
include/sys/vmem.h
module/spl/spl-kmem-cache.c
module/spl/spl-kmem.c
module/spl/spl-taskq.c
module/spl/spl-vmem.c