Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp3128176pxb; Tue, 19 Jan 2021 14:43:29 -0800 (PST) X-Google-Smtp-Source: ABdhPJxM/8GhCXYX7Y1uqdrHSP66LuIc8dMi49Nrh6T3Rk95ATYaWADdZfo0dwu9bAMKLpFDAk/d X-Received: by 2002:a17:906:4302:: with SMTP id j2mr4349027ejm.217.1611096209340; Tue, 19 Jan 2021 14:43:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1611096209; cv=none; d=google.com; s=arc-20160816; b=LCNAWd303dNlqkTpn3WfLsMm0iuNQHlQXNKFchut+fmGQNAueBoZ9dTTkZcWs1BeBd giIAsdAR12XMPaTdagN/HcI2OdLAdkWwG7FeelF8Gx1d3KQIjeysztv3IAOd+8yk2kzU Y0/QqJCmloiDIhmz7bC7MMAIvOVc0feHUjCWDG3QhVqexpE8mn7nvbNI8Wavv4xHA4wE ghZACDg60QzjGG/y6MWwOjuMEmwDnl6ZzH1W6J+qFRTVCgjUvai5EItFlWZPSbMIA2Nc ZBaIYcd7vk/ZjWqFUyp/2YuM8dkR4WHB9LZy/4IC/FJrfQ/sXjdv+JsVcBk4Z72a2N/N t0gg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from:dkim-filter; bh=Cya3gOuOC/aehSLKPqdhGNIfFpGIwKkycSGnJceNKOs=; b=cDSF+zoEf4DBW8T+YpbWHHTEk+jab8MGtx2MJhpzct6fp7n5XeDs/fdu7OJSKylYNb G4sDFiwhN6yCjTIc8IU6vbuujukNGVX36WhE9EJTl9Xnsn0WjYDTh/Gj3ZrVBPW7B5Ls 3UBP+XqvpWr92sOAZ+UV4WLq7be3KruQrN1yJMiqw2By7MsH5wPSBDPx3IvFrZ/pF1Vn bYkNl4XpPOYCz3HZ7q01cPpJRE2iVqTdLhn5znVWUQ2AzEgT/aAVZ7QBTjehBN1A5uKz G7FzSnO0X4KWyFgSYBs6OTWzKEeKrUuwxVMPulAcfbVsrkQ/cVharSuRq66g0bH9jBl0 8wcQ== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id o17si94517edz.582.2021.01.19.14.43.10; Tue, 19 Jan 2021 14:43:29 -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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728277AbhASWgg (ORCPT + 99 others); Tue, 19 Jan 2021 17:36:36 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45072 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727535AbhASWgR (ORCPT ); Tue, 19 Jan 2021 17:36:17 -0500 Received: from fieldses.org (fieldses.org [IPv6:2600:3c00:e000:2f7::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F1AE1C0613CF for ; Tue, 19 Jan 2021 14:35:35 -0800 (PST) Received: by fieldses.org (Postfix, from userid 2815) id 5644FAA2; Tue, 19 Jan 2021 17:35:35 -0500 (EST) DKIM-Filter: OpenDKIM Filter v2.11.0 fieldses.org 5644FAA2 From: "J. Bruce Fields" To: Chuck Lever Cc: linux-nfs@vger.kernel.org, "J. Bruce Fields" Subject: [PATCH 5/8] nfsd: find_cpntf_state cleanup Date: Tue, 19 Jan 2021 17:35:26 -0500 Message-Id: <1611095729-31104-6-git-send-email-bfields@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1611095729-31104-1-git-send-email-bfields@redhat.com> References: <1611095729-31104-1-git-send-email-bfields@redhat.com> Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org From: "J. Bruce Fields" I think this unusual use of struct compound_state could cause confusion. It's not that much more complicated just to open-code this stateid lookup. The only change in behavior should be a different error return in the case the copy is using a source stateid that is a revoked delegation, but I doubt that matters. Signed-off-by: J. Bruce Fields --- fs/nfsd/nfs4state.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index d7128e16c86e..01191d2dddc8 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -5812,21 +5812,27 @@ static __be32 find_cpntf_state(struct nfsd_net *nn, stateid_t *st, { __be32 status; struct nfs4_cpntf_state *cps = NULL; - struct nfsd4_compound_state cstate; + struct nfs4_client *found; status = manage_cpntf_state(nn, st, NULL, &cps); if (status) return status; cps->cpntf_time = ktime_get_boottime_seconds(); - memset(&cstate, 0, sizeof(cstate)); - status = set_clientid(&cps->cp_p_clid, &cstate, nn, true); - if (status) + + status = nfserr_expired; + found = lookup_clientid(&cps->cp_p_clid, true, nn); + if (!found) goto out; - status = nfsd4_lookup_stateid(&cstate, &cps->cp_p_stateid, - NFS4_DELEG_STID|NFS4_OPEN_STID|NFS4_LOCK_STID, - stid, nn); - put_client_renew(cstate.clp); + + *stid = find_stateid_by_type(found, &cps->cp_p_stateid, + NFS4_DELEG_STID|NFS4_OPEN_STID|NFS4_LOCK_STID); + if (stid) + status = nfs_ok; + else + status = nfserr_bad_stateid; + + put_client_renew(found); out: nfs4_put_cpntf_state(nn, cps); return status; -- 2.29.2