Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp3490113rwb; Fri, 30 Sep 2022 04:30:06 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7OmAVrAIrk0OK2MWcbsVr91y/vhcwKI/oDIaP1RfYzMwPp+cUqTgVocEJ5j9FybWoHzBrS X-Received: by 2002:a17:907:d94:b0:782:65af:9442 with SMTP id go20-20020a1709070d9400b0078265af9442mr6172265ejc.637.1664537406166; Fri, 30 Sep 2022 04:30:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1664537406; cv=none; d=google.com; s=arc-20160816; b=CTKp8VmWMWnzSY+MBztv8maGhwinsz+zC1EQZtj4RqzkQjEDoo0Oi6tu6toYAl0qf2 Bd+o1AOKzi3WBxkEb6q+OemOmQw84Lesb29ceAeYpIUzYc3mBM/QxQKAUtaNpt/jh87C nFU6TyR1SZID55ln/TazjaW7Ev1+alDNVhDMj9xIOcpVdSx59KAVcjTzkQUqQK4TtrLp rXUwxG92oYbZnowBHLwIMgMTpFvjcL3DLagem1QMT4NzGLYsAFerJFAy2L4ZYZ8ZEke7 eZfNsrxSHQAG8S2RCNbT5P6/VNpeNc0moksFkcdGx42T2OmshtTwvrjVgthLN8wloBfC Tztw== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=oqo56mYETSB9wTMtEjGlWpkKjs10F3ftDMsJBSfhgvs=; b=dxRHb5MPA41AgRf+j3rvD0aGGyPUbUTLA3aSNl60I5/2HlNAc9bsUubezsuXZE0saK Gj3woCBY/qJLhnEq7NycX4T/RnXbD4Bzy7Za6AAaSBS5qDCsBiFGlGosCrbneGqL5IBz wBxXVdLAaOI4A+wvZtiGjIidDkwqZDEFK/zfTpb/WtuFjQgR8Hmn2fkZbfole84eIeL4 CCc0+bONjv6KyljdUcb69crb2N39Yn59mYdjE7Nt9aeaCN01fNT9P5ufxAN2JmatOQiB ZYvZB7P3WKaJxJTJh/j+jiNOTxfQiivh2mP0MjIm/o2fzdhgRNCnElKxw0aQYMON/w3/ 4d2g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=qSgdTK0O; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id y3-20020a056402170300b00458947655ebsi270059edu.89.2022.09.30.04.29.32; Fri, 30 Sep 2022 04:30:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-ext4-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; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=qSgdTK0O; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231691AbiI3L1J (ORCPT + 99 others); Fri, 30 Sep 2022 07:27:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52256 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232575AbiI3L03 (ORCPT ); Fri, 30 Sep 2022 07:26:29 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 30A063ECC4; Fri, 30 Sep 2022 04:18:54 -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 BD7C662299; Fri, 30 Sep 2022 11:18:53 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 45083C4347C; Fri, 30 Sep 2022 11:18:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1664536733; bh=RJmSmkbr0DPIG61xWI+MMXJapiGj8COfeLHhDCBUg/g=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=qSgdTK0OkVqwuPneLv8OETMMx+MgJGaIW8o8j/RrOd+1X4XklGgsgv+VO7ZCVpFzS m39M+7b3tW7h2s/S1s1HQslRMr/yZbSzTHLj4bItFJi16KX5RHuh4F7+MBpFNh3Om9 Be0JAf/us9KqWqmXjTtzI94l1o8fO+7YhUw9cHpm5/b1MdORIGcnuSWKIQKjmCwJSK CfkAOG9TrJ69UPkDSqjsb/UgFQTgW8XIEkD8Y5B5O8mbZbvchl7Z1eEbhsuzbYaxxD J2buF3KHDJbsuYGrh4rsD/11byM8hFPgLA5oWkhWWdeQV5sv0F6yf2k+TcqUPIQUJ+ g40PWwUX4LrpQ== From: Jeff Layton To: tytso@mit.edu, adilger.kernel@dilger.ca, djwong@kernel.org, david@fromorbit.com, trondmy@hammerspace.com, neilb@suse.de, viro@zeniv.linux.org.uk, zohar@linux.ibm.com, xiubli@redhat.com, chuck.lever@oracle.com, lczerner@redhat.com, jack@suse.cz, bfields@fieldses.org, brauner@kernel.org, fweimer@redhat.com Cc: linux-btrfs@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, ceph-devel@vger.kernel.org, linux-ext4@vger.kernel.org, linux-nfs@vger.kernel.org, linux-xfs@vger.kernel.org Subject: [PATCH v6 4/9] nfs: report the inode version in getattr if requested Date: Fri, 30 Sep 2022 07:18:35 -0400 Message-Id: <20220930111840.10695-5-jlayton@kernel.org> X-Mailer: git-send-email 2.37.3 In-Reply-To: <20220930111840.10695-1-jlayton@kernel.org> References: <20220930111840.10695-1-jlayton@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,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-ext4@vger.kernel.org Allow NFS to report the i_version in getattr requests. Since the cost to fetch it is relatively cheap, do it unconditionally and just set the flag if it looks like it's valid. Also, conditionally enable the MONOTONIC flag when the server reports its change attr type as such. Signed-off-by: Jeff Layton --- fs/nfs/inode.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c index bea7c005119c..5cb7017e5089 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c @@ -830,6 +830,8 @@ static u32 nfs_get_valid_attrmask(struct inode *inode) reply_mask |= STATX_UID | STATX_GID; if (!(cache_validity & NFS_INO_INVALID_BLOCKS)) reply_mask |= STATX_BLOCKS; + if (!(cache_validity & NFS_INO_INVALID_CHANGE)) + reply_mask |= STATX_VERSION; return reply_mask; } @@ -848,7 +850,7 @@ int nfs_getattr(struct user_namespace *mnt_userns, const struct path *path, request_mask &= STATX_TYPE | STATX_MODE | STATX_NLINK | STATX_UID | STATX_GID | STATX_ATIME | STATX_MTIME | STATX_CTIME | - STATX_INO | STATX_SIZE | STATX_BLOCKS; + STATX_INO | STATX_SIZE | STATX_BLOCKS | STATX_VERSION; if ((query_flags & AT_STATX_DONT_SYNC) && !force_sync) { if (readdirplus_enabled) @@ -877,7 +879,7 @@ int nfs_getattr(struct user_namespace *mnt_userns, const struct path *path, /* Is the user requesting attributes that might need revalidation? */ if (!(request_mask & (STATX_MODE|STATX_NLINK|STATX_ATIME|STATX_CTIME| STATX_MTIME|STATX_UID|STATX_GID| - STATX_SIZE|STATX_BLOCKS))) + STATX_SIZE|STATX_BLOCKS|STATX_VERSION))) goto out_no_revalidate; /* Check whether the cached attributes are stale */ @@ -915,6 +917,10 @@ int nfs_getattr(struct user_namespace *mnt_userns, const struct path *path, generic_fillattr(&init_user_ns, inode, stat); stat->ino = nfs_compat_user_ino64(NFS_FILEID(inode)); + stat->version = inode_peek_iversion_raw(inode); + stat->attributes_mask |= STATX_ATTR_VERSION_MONOTONIC; + if (server->change_attr_type != NFS4_CHANGE_TYPE_IS_UNDEFINED) + stat->attributes |= STATX_ATTR_VERSION_MONOTONIC; if (S_ISDIR(inode->i_mode)) stat->blksize = NFS_SERVER(inode)->dtsize; out: -- 2.37.3