Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp520891pxu; Wed, 25 Nov 2020 08:52:29 -0800 (PST) X-Google-Smtp-Source: ABdhPJzwHIzbK6LgjvKUm1M8iAg6E47SU8MEsIL/KFw/h/vZFHifgx2MQt8kwVAO819CROFqvP2p X-Received: by 2002:a17:906:4756:: with SMTP id j22mr3968306ejs.315.1606323148880; Wed, 25 Nov 2020 08:52:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1606323148; cv=none; d=google.com; s=arc-20160816; b=d6Yq1PQBtDN72rYoXmA4IhkPG1xqQYq/5aKQl9uZ6UExErr4FtHXaEy0rMBTmCpC1m stqYoOoTYCOJo1DSRTOKDhppaIbfVs/+LjFWWu7HaSNG4X92aHEDDYvSAZ8z23bliX0O L9ROWQkYcxjgBaBs25kmwl5CtNADeSdTZWDjnX2vq5Z5z+qkotC+crppe9PfGYrhDB87 x85pFdprEsManOGCXr27yU1GKtluKzllRs8F5S0ByCPRIhxTVN0CnibAtSM3pqfv0BMQ 4k1ZdNBMmFFqbx2YodoUhs6gjNoH8hjtmyJiHQH2Zw3T0ZKw2PorJHM8kuEoCchKiDJu daTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject; bh=+kwY7ppTS7rTltaSsQLSDhi73+AFk51gQZ74mtEj/yo=; b=Y1A3lceJU9puYiXAOs17N1SpvwLRg5dzdjFOzkU2/4BEiYtKAJMUjKXLRFnXvVZwMM XGIuK5v38o/XH1+NNwTTDfbsgIj3Ax4VcL6ZATOT2vKo1CHpnvtyI7HNWI25LGe2D56I zx5Wyr8EVjDXQE994HOEVv2DRVTRIVqT4CN1FVhNApWvzdPznCkKqZb8lpYlVdU4BHga 6mkwnmQS+6CKHdvhfH0IENX2h+EkARZmM8WuTohQdTbH4QIaQJAvKK9GiyZrkpd736K7 gsyADteqrKOgdy80C0U3VRYCraOhXrSF8WJXndokcqpLMsnFew7p13urRJhQ0IlZjxsV wEUQ== 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=canonical.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v27si1570127ejj.217.2020.11.25.08.51.58; Wed, 25 Nov 2020 08:52:28 -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=canonical.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732236AbgKYQvE (ORCPT + 99 others); Wed, 25 Nov 2020 11:51:04 -0500 Received: from youngberry.canonical.com ([91.189.89.112]:44631 "EHLO youngberry.canonical.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731088AbgKYQvD (ORCPT ); Wed, 25 Nov 2020 11:51:03 -0500 Received: from 1.general.cking.uk.vpn ([10.172.193.212]) by youngberry.canonical.com with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1khy0T-0005D7-RI; Wed, 25 Nov 2020 16:51:01 +0000 Subject: Re: nfsd: skip some unnecessary stats in the v4 case To: "J. Bruce Fields" Cc: Chuck Lever , "linux-nfs@vger.kernel.org" References: <20201125164738.GA7049@fieldses.org> From: Colin Ian King Message-ID: <5a0b9908-9942-ddca-63f6-a87bb9867855@canonical.com> Date: Wed, 25 Nov 2020 16:51:01 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.5.0 MIME-Version: 1.0 In-Reply-To: <20201125164738.GA7049@fieldses.org> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org On 25/11/2020 16:47, J. Bruce Fields wrote: > On Wed, Nov 25, 2020 at 02:50:51PM +0000, Colin Ian King wrote: >> Static analysis on today's linux-next has found an issue with the >> following commit: > > Thanks! I'll probably do something like this. Looks good to me, even if it is a little more convoluted. Thanks. > > Though this still all seems slightly more complicated than necessary. > > --b. > > diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c > index 8502a493be6d..7eb761801169 100644 > --- a/fs/nfsd/nfs3xdr.c > +++ b/fs/nfsd/nfs3xdr.c > @@ -260,13 +260,12 @@ void fill_pre_wcc(struct svc_fh *fhp) > struct inode *inode; > struct kstat stat; > bool v4 = (fhp->fh_maxsize == NFS4_FHSIZE); > - __be32 err; > > if (fhp->fh_pre_saved) > return; > inode = d_inode(fhp->fh_dentry); > if (!v4 || !inode->i_sb->s_export_op->fetch_iversion) { > - err = fh_getattr(fhp, &stat); > + __be32 err = fh_getattr(fhp, &stat); > if (err) { > /* Grab the times from inode anyway */ > stat.mtime = inode->i_mtime; > @@ -290,23 +289,23 @@ void fill_post_wcc(struct svc_fh *fhp) > { > bool v4 = (fhp->fh_maxsize == NFS4_FHSIZE); > struct inode *inode = d_inode(fhp->fh_dentry); > - __be32 err; > > if (fhp->fh_post_saved) > printk("nfsd: inode locked twice during operation.\n"); > > + fhp->fh_post_saved = true; > > - if (!v4 || !inode->i_sb->s_export_op->fetch_iversion) > - err = fh_getattr(fhp, &fhp->fh_post_attr); > + if (!v4 || !inode->i_sb->s_export_op->fetch_iversion) { > + __be32 err = fh_getattr(fhp, &fhp->fh_post_attr); > + if (err) { > + fhp->fh_post_saved = false; > + /* set_change_info might still need this: */ > + fhp->fh_post_attr.ctime = inode->i_ctime; > + } > + } > if (v4) > fhp->fh_post_change = > nfsd4_change_attribute(&fhp->fh_post_attr, inode); > - if (err) { > - fhp->fh_post_saved = false; > - /* Grab the ctime anyway - set_change_info might use it */ > - fhp->fh_post_attr.ctime = inode->i_ctime; > - } else > - fhp->fh_post_saved = true; > } > > /* >