]> git.proxmox.com Git - mirror_spl.git/commitdiff
Revert "Disable vmalloc() direct reclaim"
authorBrian Behlendorf <behlendorf1@llnl.gov>
Sat, 18 Aug 2012 18:06:21 +0000 (11:06 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Mon, 27 Aug 2012 19:00:55 +0000 (12:00 -0700)
This reverts commit 2092cf68d89a51eb0d6193aeadabb579dfc4b4a0.  The
use of the PF_MEMALLOC flag was always a hack to work around memory
reclaim deadlocks.  Those issues are believed to be resolved so this
workaround can be safely reverted.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
module/spl/spl-kmem.c

index 16eb4f884364e83597a61578c9aee9831bac9b95..e07e08c911086d1dfc3ff9032d7bc90556c9d8ed 100644 (file)
@@ -840,31 +840,11 @@ kv_alloc(spl_kmem_cache_t *skc, int size, int flags)
 
        ASSERT(ISP2(size));
 
-       if (skc->skc_flags & KMC_KMEM) {
+       if (skc->skc_flags & KMC_KMEM)
                ptr = (void *)__get_free_pages(flags, get_order(size));
-       } else {
-               /*
-                * As part of vmalloc() an __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 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.  The following bug has
-                * been filed at kernel.org to track the issue.
-                *
-                * https://bugzilla.kernel.org/show_bug.cgi?id=30702
-                */
-               if (!(flags & __GFP_FS))
-                       current->flags |= PF_MEMALLOC;
-
+       else
                ptr = __vmalloc(size, flags | __GFP_HIGHMEM, PAGE_KERNEL);
 
-               if (!(flags & __GFP_FS))
-                       current->flags &= ~PF_MEMALLOC;
-       }
-
        /* Resulting allocated memory will be page aligned */
        ASSERT(IS_P2ALIGNED(ptr, PAGE_SIZE));