]> git.proxmox.com Git - mirror_spl.git/commit
Disable vmalloc() direct reclaim
authorBrian Behlendorf <behlendorf1@llnl.gov>
Sun, 20 Mar 2011 22:03:18 +0000 (15:03 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Sun, 20 Mar 2011 22:12:08 +0000 (15:12 -0700)
commit2092cf68d89a51eb0d6193aeadabb579dfc4b4a0
tree832474eb5e585d4853b6a2b6015e2826917efc27
parentcb255ae57278be3206693b5116eff95e612e809a
Disable vmalloc() direct reclaim

As part of vmalloc() a __pte_alloc_kernel() allocation may occur.  This
internal allocation does not honor the gfp flags passed to vmalloc().
This means even when vmalloc(GFP_NOFS) is called it is possible that a
synchronous reclaim will occur.  This reclaim can trigger file IO which
can result in a deadlock.  This issue can be avoided by explicitly
setting PF_MEMALLOC on the process to subvert synchronous reclaim when
vmalloc() is called with !__GFP_FS.

An example stack of the deadlock can be found here (1), along with the
upstream kernel bug (2), and the original bug discussion on the
linux-mm mailing list (3).  This code can be properly autoconf'ed
when the upstream bug is fixed.

1) http://github.com/behlendorf/zfs/issues/labels/Vmalloc#issue/133
2) http://bugzilla.kernel.org/show_bug.cgi?id=30702
3) http://marc.info/?l=linux-mm&m=128942194520631&w=4
module/spl/spl-kmem.c