Received: by 2002:ac0:da4c:0:0:0:0:0 with SMTP id a12csp960780imi; Fri, 22 Jul 2022 13:38:16 -0700 (PDT) X-Google-Smtp-Source: AGRyM1swsEOXiZ1M+OlkvF9Fr2/Pe3hckIy55/zSYaQS//CqVGqsR0+5tZzQKSjGm+fsT9ugZ7bh X-Received: by 2002:a63:c15:0:b0:411:f92a:8ec7 with SMTP id b21-20020a630c15000000b00411f92a8ec7mr1312170pgl.86.1658522295910; Fri, 22 Jul 2022 13:38:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1658522295; cv=none; d=google.com; s=arc-20160816; b=0DV2dEA+hEVibaSYSJfAx0qpUfBGqUFclJuL5zFCGXCMrDfGF2QvdN88t62eY96lSZ xbzVeBtOivgsnoKAnhYZI8nR9S0ohueRZLm0JA5mAPIte2Xl9onUz8/J13DAwE4zMedn JA+fNnizSIp4Hja4txmRPIshOSC4+lJFFM4jSIFHBsZLY+49CGV+qXS72MAcur8cwnbz TBUumayI+be326DSND0EBuspagNufTW9Lp3jJzGC5TNtHAO35F0GF75tUX3IxrU3FHvE 9R5hcGP/ewN1OJieD6eEV0YjPYumhtUMPxiXwMNy89BiNLUz1TVaU4/7tDojbV8vEW6R erqA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:to:from:subject; bh=v7Uwfi0EHKmAXbkZafONFDhUAQtlOIUPNBEL90EFRlA=; b=kuNVg+CyfZuERDgvKUGQF0xWGoOtwlp388kEihCE4IrBUY4kEhq9XjZaCJ6Lg22kxh xV1c4oKEon7o+6eQi8q76eZewpjtiRK3eRX+GnkZoq7V282YVaPDEx77BirjcB9etJdi QC0Z60JCNP7vFBCWdidw35eVctExor7gnjg8klfaNmHI7fz1WXSRl4wm3PepRw/9UVtf dN2ZmhqOdV1pmiVyDuHzahy7VSZQhTN9GEuppF5oygIVz9LPSF1i8sl8AVCsf1CXbuVI s3eMfAV0gqf2LIc+Mf7m3CMfJgRBGcQn4ukZ5+dorJ32ZlpIEDRbnZKZ0uxohLu+02fN Ookw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=oracle.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id l29-20020a63701d000000b0041a18169af6si6775620pgc.713.2022.07.22.13.38.00; Fri, 22 Jul 2022 13:38:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236800AbiGVUUC (ORCPT + 99 others); Fri, 22 Jul 2022 16:20:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46598 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229632AbiGVUUB (ORCPT ); Fri, 22 Jul 2022 16:20:01 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E91347F50A for ; Fri, 22 Jul 2022 13:20:00 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 85AE761EFE for ; Fri, 22 Jul 2022 20:20:00 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D66A2C341C6 for ; Fri, 22 Jul 2022 20:19:59 +0000 (UTC) Subject: [PATCH v1 10/11] NFSD: Add nfsd4_send_cb_offload() From: Chuck Lever To: linux-nfs@vger.kernel.org Date: Fri, 22 Jul 2022 16:19:58 -0400 Message-ID: <165852119889.11403.10050200899557112410.stgit@manet.1015granger.net> In-Reply-To: <165852076926.11403.44005570813790008.stgit@manet.1015granger.net> References: <165852076926.11403.44005570813790008.stgit@manet.1015granger.net> User-Agent: StGit/1.5.dev2+g9ce680a5 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-6.7 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_HI,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Refactor for legibility. Signed-off-by: Chuck Lever --- fs/nfsd/nfs4proc.c | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c index 0365a5575236..c82944042dc5 100644 --- a/fs/nfsd/nfs4proc.c +++ b/fs/nfsd/nfs4proc.c @@ -1763,6 +1763,27 @@ static void cleanup_async_copy(struct nfsd4_copy *copy) nfs4_put_copy(copy); } +static void nfsd4_send_cb_offload(struct nfsd4_copy *copy) +{ + struct nfsd4_copy *cb_copy; + + cb_copy = kzalloc(sizeof(struct nfsd4_copy), GFP_KERNEL); + if (!cb_copy) + return; + + refcount_set(&cb_copy->refcount, 1); + memcpy(&cb_copy->cp_res, ©->cp_res, sizeof(copy->cp_res)); + cb_copy->cp_clp = copy->cp_clp; + cb_copy->nfserr = copy->nfserr; + memcpy(&cb_copy->fh, ©->fh, sizeof(copy->fh)); + + nfsd4_init_cb(&cb_copy->cp_cb, cb_copy->cp_clp, + &nfsd4_cb_offload_ops, NFSPROC4_CLNT_CB_OFFLOAD); + trace_nfsd_cb_offload(copy->cp_clp, ©->cp_res.cb_stateid, + ©->fh, copy->cp_count, copy->nfserr); + nfsd4_run_cb(&cb_copy->cp_cb); +} + /** * nfsd4_do_async_copy - kthread function for background server-side COPY * @data: arguments for COPY operation @@ -1773,7 +1794,6 @@ static void cleanup_async_copy(struct nfsd4_copy *copy) static int nfsd4_do_async_copy(void *data) { struct nfsd4_copy *copy = (struct nfsd4_copy *)data; - struct nfsd4_copy *cb_copy; if (nfsd4_ssc_is_inter(copy)) { struct file *filp; @@ -1795,20 +1815,7 @@ static int nfsd4_do_async_copy(void *data) } do_callback: - cb_copy = kzalloc(sizeof(struct nfsd4_copy), GFP_KERNEL); - if (!cb_copy) - goto out; - refcount_set(&cb_copy->refcount, 1); - memcpy(&cb_copy->cp_res, ©->cp_res, sizeof(copy->cp_res)); - cb_copy->cp_clp = copy->cp_clp; - cb_copy->nfserr = copy->nfserr; - memcpy(&cb_copy->fh, ©->fh, sizeof(copy->fh)); - nfsd4_init_cb(&cb_copy->cp_cb, cb_copy->cp_clp, - &nfsd4_cb_offload_ops, NFSPROC4_CLNT_CB_OFFLOAD); - trace_nfsd_cb_offload(copy->cp_clp, ©->cp_res.cb_stateid, - ©->fh, copy->cp_count, copy->nfserr); - nfsd4_run_cb(&cb_copy->cp_cb); -out: + nfsd4_send_cb_offload(copy); cleanup_async_copy(copy); return 0; }