Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp3989220pxu; Mon, 30 Nov 2020 15:04:06 -0800 (PST) X-Google-Smtp-Source: ABdhPJwYgty8Ue+6ZIX0EaHVyqnKToNcr+hGPYvcZNl7/WO3ir6vqykK0MwzgqQFK/w1nJXEJX3V X-Received: by 2002:a17:907:d1f:: with SMTP id gn31mr124252ejc.192.1606777446429; Mon, 30 Nov 2020 15:04:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1606777446; cv=none; d=google.com; s=arc-20160816; b=emKOqNP9IiavW0m6V/V+kEbg03wCVfCVgpATiL25cliNpuX3U+jZrngrRuMwGRlgFu FZePzGYC6YZBmXj7NNOoNdOfeAR7V0RD8amSYzHqTB+YV/z2dj57VpVn6va5XXV4QM67 cCjN3KWtZ29mtx4AZ5B5qcjhSadlLR3wVZi6nEKdstVKH+U3qfbVno33oBv96YTigNC1 PCshvoc8fSYdZ9kO4VCGU4qOsF8UnXNX+nGZ5wLYDXfMYvxrThh76XQtNj56Punh07Ef sokf4f0iQzoinm36vivrNyKen+Ws3QO1G/WFs7aYr0XzYFZoVc52eFI8HLLmVznUKlYa mVaQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=eccS/6KGXHmLcbxiA38hg0DVr3YzPrKQx1eAmZ7ug0A=; b=NTAv+dC94duplpFWN8DIHgxDTTlqrf0LuVbkAync4HZY/9iG9txwnKSbNqMmuaMl3H aQLQMh4REifECMii8jkICsohPMNi48xLF2YzxITeok+R8nOJYBN4oeP6auN50Q2Y/u32 AAyE6ym0XYvLc4T31BW+pxvMYI40l0ODt5zcYSrCtc7zLwNf1t0UKkSmBVP8gh2IWOBT aWp7CoObtCvUWOB32wM8frW1V4QvHsLe8hXRanNoMEw24WaPflNmu+Lo0qAZuxI6Uon5 Y/uYqAh4jLa7O2jdZ2EBbS/m6sRvuB5tYxD8PDnfEWJ6D1aOGXEf+boQH0CJSU3LF/Ff eyTA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@umich.edu header.s=google-2016-06-03 header.b=YdUiobbP; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=umich.edu Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id cz7si11347841edb.170.2020.11.30.15.03.42; Mon, 30 Nov 2020 15:04:06 -0800 (PST) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@umich.edu header.s=google-2016-06-03 header.b=YdUiobbP; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=umich.edu Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726713AbgK3WAo (ORCPT + 99 others); Mon, 30 Nov 2020 17:00:44 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33266 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725893AbgK3WAo (ORCPT ); Mon, 30 Nov 2020 17:00:44 -0500 Received: from mail-ej1-x642.google.com (mail-ej1-x642.google.com [IPv6:2a00:1450:4864:20::642]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 92BE5C0613CF for ; Mon, 30 Nov 2020 13:59:57 -0800 (PST) Received: by mail-ej1-x642.google.com with SMTP id d17so23039321ejy.9 for ; Mon, 30 Nov 2020 13:59:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=umich.edu; s=google-2016-06-03; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=eccS/6KGXHmLcbxiA38hg0DVr3YzPrKQx1eAmZ7ug0A=; b=YdUiobbP5TvM2XIZglKzho1fTdUo6HMD8dM5dY4OGexJpg8JOCF77l1lBxjITY0Wij dFrTEN9xiGp43CD4ZUY1V0ONaf8crJ0V24IITdt57a2KysqeilFg1NPwGL8t8YlvzVG6 9wd7A7Lz/fqz5hnx8RTNr1YHnvTtA34Z4IDsJXTaq/vtr+s9e1MvjYdWBl0o/V+G+b8y 6OcZZrH6bkild1UsE22izCJlf2FPzyvum3H3w7kic8ndt2QkM9R3i5GwZWqEGqd7aDTt Rc/+rNPYAO98LkKMyWVsbr8rIpLmU8Gmr9b4f+SRsRzrUYXBKShXfC4Y5HRAA6cquG3L olqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=eccS/6KGXHmLcbxiA38hg0DVr3YzPrKQx1eAmZ7ug0A=; b=Ns8tq1M5FUwunpKa4Zhb/6xwfYiMw4iudHVSa5nmhMk+PmfIyS8ygQnuZzGtEKthk+ sCXm67qhUruqx+3/sOpBqk8dIt9KLMqstgAJcer1+N2M5cU6Hrk8Q9EHMR25NAFfLRZk SMvIncgm8r6hk8hm21BmPjgSqf3LWjtkex1N+zZxGJR09a95dvEI4+Y5Pc4t3K2104d8 gcxU2w0pt6NyNd36x3nF5yk2i4J0kjYBPFMIIDy3TVBOav0ClW9vRxAIkcvP4OMNM76/ 1/8PBAax188QMuaESwM/2CpLmED2Ejhnr+zQfxeEURRV1y8/TfhRh7ZfPrDopaoZWr49 BPAQ== X-Gm-Message-State: AOAM530YtYJz8Ktp97UqpDfSGrw6YTA1oGR40J3xf3OGilXAJfYC0hSk 55Nf+xRgdigSVy8y4ysKjqMNtjSlYoWVItvyudA= X-Received: by 2002:a17:906:1945:: with SMTP id b5mr24340207eje.388.1606773596325; Mon, 30 Nov 2020 13:59:56 -0800 (PST) MIME-Version: 1.0 References: <160676629926.384675.11452129892621714986.stgit@klimt.1015granger.net> In-Reply-To: <160676629926.384675.11452129892621714986.stgit@klimt.1015granger.net> From: Olga Kornievskaia Date: Mon, 30 Nov 2020 16:59:44 -0500 Message-ID: Subject: Re: [PATCH v2] SUNRPC: Remove XDRBUF_SPARSE_PAGES flag in gss_proxy upcall To: Chuck Lever Cc: Simo Sorce , "J. Bruce Fields" , linux-nfs Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org On Mon, Nov 30, 2020 at 2:59 PM Chuck Lever wrote: > > There's no need to defer allocation of pages for the receive buffer. > > - This upcall is quite infrequent > - gssp_alloc_receive_pages() can allocate the pages with GFP_KERNEL, > unlike the transport > - gssp_alloc_receive_pages() knows exactly how many pages are needed Looks good to me now. Reviewed-by. > Signed-off-by: Chuck Lever > --- > net/sunrpc/auth_gss/gss_rpc_upcall.c | 15 ++++++++++----- > net/sunrpc/auth_gss/gss_rpc_xdr.c | 1 - > 2 files changed, 10 insertions(+), 6 deletions(-) > > diff --git a/net/sunrpc/auth_gss/gss_rpc_upcall.c b/net/sunrpc/auth_gss/gss_rpc_upcall.c > index af9c7f43859c..d1c003a25b0f 100644 > --- a/net/sunrpc/auth_gss/gss_rpc_upcall.c > +++ b/net/sunrpc/auth_gss/gss_rpc_upcall.c > @@ -200,7 +200,7 @@ static int gssp_call(struct net *net, struct rpc_message *msg) > > static void gssp_free_receive_pages(struct gssx_arg_accept_sec_context *arg) > { > - int i; > + unsigned int i; > > for (i = 0; i < arg->npages && arg->pages[i]; i++) > __free_page(arg->pages[i]); > @@ -210,14 +210,19 @@ static void gssp_free_receive_pages(struct gssx_arg_accept_sec_context *arg) > > static int gssp_alloc_receive_pages(struct gssx_arg_accept_sec_context *arg) > { > + unsigned int i; > + > arg->npages = DIV_ROUND_UP(NGROUPS_MAX * 4, PAGE_SIZE); > arg->pages = kcalloc(arg->npages, sizeof(struct page *), GFP_KERNEL); > - /* > - * XXX: actual pages are allocated by xdr layer in > - * xdr_partial_copy_from_skb. > - */ > if (!arg->pages) > return -ENOMEM; > + for (i = 0; i < arg->npages; i++) { > + arg->pages[i] = alloc_page(GFP_KERNEL); > + if (!arg->pages[i]) { > + gssp_free_receive_pages(arg); > + return -ENOMEM; > + } > + } > return 0; > } > > diff --git a/net/sunrpc/auth_gss/gss_rpc_xdr.c b/net/sunrpc/auth_gss/gss_rpc_xdr.c > index c636c648849b..d79f12c2550a 100644 > --- a/net/sunrpc/auth_gss/gss_rpc_xdr.c > +++ b/net/sunrpc/auth_gss/gss_rpc_xdr.c > @@ -771,7 +771,6 @@ void gssx_enc_accept_sec_context(struct rpc_rqst *req, > xdr_inline_pages(&req->rq_rcv_buf, > PAGE_SIZE/2 /* pretty arbitrary */, > arg->pages, 0 /* page base */, arg->npages * PAGE_SIZE); > - req->rq_rcv_buf.flags |= XDRBUF_SPARSE_PAGES; > done: > if (err) > dprintk("RPC: gssx_enc_accept_sec_context: %d\n", err); > >