]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
SUNRPC: Avoid digging into the ATOMIC pool
authorChuck Lever <chuck.lever@oracle.com>
Wed, 24 Apr 2019 13:38:55 +0000 (09:38 -0400)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Thu, 25 Apr 2019 18:58:35 +0000 (14:58 -0400)
Page allocation requests made when the SPARSE_PAGES flag is set are
allowed to fail, and are not critical. No need to spend a rare
resource.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
net/sunrpc/socklib.c
net/sunrpc/xprtrdma/rpc_rdma.c

index 7e55cfc69697dda67de2f2d0f9dc23026d85b436..9faea12624a6b77b7c9097aea2c7bcded6d19841 100644 (file)
@@ -106,7 +106,7 @@ xdr_partial_copy_from_skb(struct xdr_buf *xdr, unsigned int base, struct xdr_skb
                /* ACL likes to be lazy in allocating pages - ACLs
                 * are small by default but can get huge. */
                if ((xdr->flags & XDRBUF_SPARSE_PAGES) && *ppage == NULL) {
-                       *ppage = alloc_page(GFP_ATOMIC);
+                       *ppage = alloc_page(GFP_NOWAIT | __GFP_NOWARN);
                        if (unlikely(*ppage == NULL)) {
                                if (copied == 0)
                                        copied = -ENOMEM;
index 6c1fb270f12763f2b67bab6548c8410bd8e4cee2..b759b169dadfb20164c36e922d915158ec5a8bb0 100644 (file)
@@ -238,7 +238,7 @@ rpcrdma_convert_iovs(struct rpcrdma_xprt *r_xprt, struct xdr_buf *xdrbuf,
                 */
                if (unlikely(xdrbuf->flags & XDRBUF_SPARSE_PAGES)) {
                        if (!*ppages)
-                               *ppages = alloc_page(GFP_ATOMIC);
+                               *ppages = alloc_page(GFP_NOWAIT | __GFP_NOWARN);
                        if (!*ppages)
                                return -ENOBUFS;
                }