As for rpc_malloc(), we first try allocating from the slab, then fall
back to a non-waiting allocation from the mempool.
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
        rpc_init_task_statistics(task);
 }
 
-static struct rpc_task *
-rpc_alloc_task(void)
+static struct rpc_task *rpc_alloc_task(void)
 {
-       return (struct rpc_task *)mempool_alloc(rpc_task_mempool, GFP_KERNEL);
+       struct rpc_task *task;
+
+       task = kmem_cache_alloc(rpc_task_slabp, rpc_task_gfp_mask());
+       if (task)
+               return task;
+       return mempool_alloc(rpc_task_mempool, GFP_NOWAIT);
 }
 
 /*