Whamcloud - gitweb
LU-7578 gnilnd: Modify allocator flags to prevent waiting 63/17663/2
authorJames Shimek <jshimek@cray.com>
Tue, 10 Nov 2015 19:18:01 +0000 (19:18 +0000)
committerOleg Drokin <oleg.drokin@intel.com>
Thu, 4 Feb 2016 04:45:48 +0000 (04:45 +0000)
kgnilnd currently utilized several flags to try and prevent specific
things from causing the node to hang. This has not been enough to
prevent oom conditions from stalling all network traffic on computes
nodes during periods where memory filling tests are run doing IO.
Based on discussions with the kernel group we are adding a new flag
__GFP_NORETRY to the allocator flags in the hopes that it prevents the
allocator from spinning forever. Change GFP_NOFS to GFP_NOIO to fully
protect against any "IO" occuring in an IO path.

Signed-off-by: Chris Horn <hornc@cray.com>
Change-Id: I2bcc71ebf6e8ff75d2ac41cae44387294328c74c
Reviewed-on: http://review.whamcloud.com/17663
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
Reviewed-by: James Simmons <uja.ornl@yahoo.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lnet/klnds/gnilnd/gnilnd.h

index 9f6b36b..2dfc91d 100644 (file)
@@ -970,7 +970,7 @@ static inline int kgnilnd_trylock(struct mutex *cq_lock,
 
 static inline void *kgnilnd_vzalloc(int size)
 {
-       void *ret = __vmalloc(size, __GFP_HIGHMEM | GFP_NOFS | __GFP_ZERO,
+       void *ret = __vmalloc(size, __GFP_HIGHMEM | GFP_NOIO | __GFP_NORETRY | __GFP_ZERO,
                              PAGE_KERNEL);
        LIBCFS_ALLOC_POST(ret, size);
        return ret;