From patchwork Thu May 18 11:47:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 13246629 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id C0755C7EE22 for ; Thu, 18 May 2023 11:47:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 41F07900003; Thu, 18 May 2023 07:47:53 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3F7DF280001; Thu, 18 May 2023 07:47:53 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 26FD5900006; Thu, 18 May 2023 07:47:53 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 16287900003 for ; Thu, 18 May 2023 07:47:53 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id D4E7A1A02B8 for ; Thu, 18 May 2023 11:47:52 +0000 (UTC) X-FDA: 80803201584.26.0240638 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf20.hostedemail.com (Postfix) with ESMTP id 14F411C000D for ; Thu, 18 May 2023 11:47:50 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="W/uHDd2T"; spf=pass (imf20.hostedemail.com: domain of jlayton@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=jlayton@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1684410471; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=S7uGEvsWRwCyTMd+jRDZorjWoGkd+qCLCI+H5s4rLus=; b=Dgo4CKjckjNsC/3g+y/gSljthv13dPI//EzglHs5Lq3NsPCfABCK9fFytuyNJ7SF9EQeoT uFfyhICbgGN9/4Hr2+892PyT+lVWEglXRyofytZOhd5tdPqJW4Pj7fq+KcENZuE+NSRCtc 3nH+hlcYELuDezqdAtPL2o9H+Iijvgs= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684410471; a=rsa-sha256; cv=none; b=pQZctjanQ08STD95YSW9L2+Clkgr9poLLi7bHtYyIXcQbIWo5+qiTYmshOUcrbwOrTYbWs teLVYhPjCtV1lUt3jZgWdDYJYN1Fm6PEfOGRGrfJqZKUwZ43nIs6y4TgmyHcyGqaYbWNR7 zmsw6+3jZGR8ibSVyjjbJo/m7P5U1uU= ARC-Authentication-Results: i=1; imf20.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="W/uHDd2T"; spf=pass (imf20.hostedemail.com: domain of jlayton@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=jlayton@kernel.org; dmarc=pass (policy=none) header.from=kernel.org 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 EF8D564EB8; Thu, 18 May 2023 11:47:49 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id ECD84C433A0; Thu, 18 May 2023 11:47:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1684410469; bh=Q1I36QZ2ubpBwrlSpR+FGLpulO58XQ0AXxbB1W7GRCY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=W/uHDd2TqzPvA0ZgOfQGdJEPzZsSUJvsj+gG0xy1Kc2BtCXL1oIPng6BpViQGK86u jv5aGAFd+g9C/gKVoMMnGDXlKWKFZbQ2XeCgH4tJ0oBnuLjlkeQkIN6e+H8raKTPPs q3kaF9EdfKyprvg6TePSRqx8cIK1ts6+sZEqZYnOFzKKnJi7OaVVVpJq8x4sZshYSO tMJB2xzKMn9KNGQPwCcXrKil4r7dO1hD96cT/PKOPxTQhrCxXkTX8ABAa0PiVH2OUi UAMOo/KmdTmFACKF5uqgTuch6ouTwr0/Vh0T5CVZn3q22+H3EWF1lgtR2Jb+CExy62 RssUhxv439/JQ== From: Jeff Layton To: Alexander Viro , Christian Brauner , "Darrick J. Wong" , Hugh Dickins , Andrew Morton , Dave Chinner , Chuck Lever Cc: Jan Kara , Amir Goldstein , David Howells , Neil Brown , Matthew Wilcox , Andreas Dilger , Theodore T'so , Chris Mason , Josef Bacik , David Sterba , Namjae Jeon , Steve French , Sergey Senozhatsky , Tom Talpey , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-ext4@vger.kernel.org, linux-mm@kvack.org, linux-nfs@vger.kernel.org, linux-cifs@vger.kernel.org Subject: [PATCH v4 1/9] fs: pass the request_mask to generic_fillattr Date: Thu, 18 May 2023 07:47:34 -0400 Message-Id: <20230518114742.128950-2-jlayton@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230518114742.128950-1-jlayton@kernel.org> References: <20230518114742.128950-1-jlayton@kernel.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: 14F411C000D X-Rspam-User: X-Rspamd-Server: rspam06 X-Stat-Signature: ebo73umbdem9xzn53c749b7dqgpbxk5m X-HE-Tag: 1684410470-105662 X-HE-Meta: U2FsdGVkX18GHweGGaGLGEOPauWtUNfbtf5MrjdYezSMItbPX6Ut1dRKjPR+FOW3265VWRJYiweNrnzMBk6KdVkZdxrvKf36h84fK6/gATUvLl0KhuwDyVryYm8TyMlZlZv1NwM6MnCQw2S3FH+JIr1n45DtlButhXRdgDVhzxcVhLTLVBz97lWulkok9Xy/CvZp09NTkGV2jY2oKRYletm0S/smXZrB7J8lxPF8JWj/7rpD2L0k3YVovO8mmuroHfRpvif/Qrre5jpaGgfTDp9573p2wxevB9Z8rqg6rO+w4SLiS8Zl22gjLTjWdIqblFkRO7xAMz7I4KgxQe4csTDXwIlFILCJewjQvF8OQAr+4qZsvgUr4N2tyC+zQBAs+kTpmhkFiyQfYaKz8Qf00pkEeQQOp3U9kBc7ZILrIZBfCAY6kvQ/o3IH0HTUo8iAfmocg26Fa18I76bCMInPCAqZ8IeJNJ79eKpFNPcJEaFbzCZjypnjFhIdJLa/wxqDLK6eQuktwOcgqzfg35aUYIkFvqulKdeu0nERQxNKWInUkfEB5j+Dp7tegukHm7ensd7AKukfOWhRmv8UMZA/ygds2j70n1ilWAYigSi/w06UJjsFRsfqxU9tAt5SLdGl2z0iQItbjaqWENDI+ROmwfJtDYJuJcmDq2Gku6tDpoobKJPuNFUaxjoBzKRPAGmiVAiD7bAvq6fdDZXXvrkBcbY7fsJC6sEDurC97stIjOL5E+Br44j6wN57Xlc/E8TDAzLFRv+NRQ5NAwkrwk5PDSGxM+Me4T46/SfUGStiWSZWM5+lhlMdV9VUtBEH3ID3sXvkQLH8zcw8roXK2SQI9pJp7ZJk/yACy7++VdSTgUE4OH0RS/0/Qq1++9zQOSGN2/511r01elllCsEwULRQO2K47KAWriINFZAhFxausG2hpumvcFanxt1YIQb4PfhRqp8jobXpLBjMZg4vcmE VGl0KUKF w3Ruw986Lzb2EfuyFvIdDC3hzxcbVCmKxj4QA9aq6SCRYLlkh8CVrTCC6P186HPUngQf9wujT9783ZGD6Mru9T+i2ScNa31E59BYvdcRYTxVCqCiDXJXXXXWEX/hptTM7yGNnSf0cshF/pbRUM8AsyaOY/sQFiCMzAmHl5W3SVXQ90DvGvYdPOuL7fPu9JS1JZoEXo0AOidFJfpzzcEj0I03QYrZWDsCMjqc9ef5sR/XDPr3nGik1NOvlKilN64qdEjJ5sdeHEc4RiyNDopYBEUfbTQLYvDENbwexdVKcn336IlJI0CkEm0o87FaaklB0/S/KP7QGoxSoyBqYDTjWqvzS3CnD2m4skS4q6Aaflb0t3opKRd7nDN8iwMhdaD8UNJrO X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: generic_fillattr just fills in the entire stat struct indiscriminately today, copying data from the inode. There is at least one attribute (STATX_CHANGE_COOKIE) that can have side effects when it is reported, and we're looking at adding more with the addition of multigrain timestamps. Add a request_mask argument to generic_fillattr and have most callers just pass in the value that is passed to getattr. Have other callers (e.g. ksmbd) just pass in STATX_BASIC_STATS. Also move the setting of STATX_CHANGE_COOKIE into generic_fillattr. Signed-off-by: Jeff Layton Reviewed-by: Jan Kara --- fs/9p/vfs_inode.c | 4 ++-- fs/9p/vfs_inode_dotl.c | 4 ++-- fs/afs/inode.c | 2 +- fs/btrfs/inode.c | 2 +- fs/ceph/inode.c | 2 +- fs/cifs/inode.c | 2 +- fs/coda/inode.c | 3 ++- fs/ecryptfs/inode.c | 5 +++-- fs/erofs/inode.c | 2 +- fs/exfat/file.c | 2 +- fs/ext2/inode.c | 2 +- fs/ext4/inode.c | 2 +- fs/f2fs/file.c | 2 +- fs/fat/file.c | 2 +- fs/fuse/dir.c | 2 +- fs/gfs2/inode.c | 2 +- fs/hfsplus/inode.c | 2 +- fs/kernfs/inode.c | 2 +- fs/ksmbd/smb2pdu.c | 22 +++++++++++----------- fs/ksmbd/vfs.c | 3 ++- fs/libfs.c | 4 ++-- fs/minix/inode.c | 2 +- fs/nfs/inode.c | 2 +- fs/nfs/namespace.c | 3 ++- fs/ntfs3/file.c | 2 +- fs/ocfs2/file.c | 2 +- fs/orangefs/inode.c | 2 +- fs/proc/base.c | 4 ++-- fs/proc/fd.c | 2 +- fs/proc/generic.c | 2 +- fs/proc/proc_net.c | 2 +- fs/proc/proc_sysctl.c | 2 +- fs/proc/root.c | 3 ++- fs/stat.c | 18 ++++++++++-------- fs/sysv/itree.c | 3 ++- fs/ubifs/dir.c | 2 +- fs/udf/symlink.c | 2 +- fs/vboxsf/utils.c | 2 +- include/linux/fs.h | 2 +- mm/shmem.c | 2 +- 40 files changed, 70 insertions(+), 62 deletions(-) diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c index 36b466e35887..11bd069d038b 100644 --- a/fs/9p/vfs_inode.c +++ b/fs/9p/vfs_inode.c @@ -1016,7 +1016,7 @@ v9fs_vfs_getattr(struct mnt_idmap *idmap, const struct path *path, p9_debug(P9_DEBUG_VFS, "dentry: %p\n", dentry); v9ses = v9fs_dentry2v9ses(dentry); if (v9ses->cache & (CACHE_META|CACHE_LOOSE)) { - generic_fillattr(&nop_mnt_idmap, inode, stat); + generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat); return 0; } else if (v9ses->cache & CACHE_WRITEBACK) { if (S_ISREG(inode->i_mode)) { @@ -1037,7 +1037,7 @@ v9fs_vfs_getattr(struct mnt_idmap *idmap, const struct path *path, return PTR_ERR(st); v9fs_stat2inode(st, d_inode(dentry), dentry->d_sb, 0); - generic_fillattr(&nop_mnt_idmap, d_inode(dentry), stat); + generic_fillattr(&nop_mnt_idmap, request_mask, d_inode(dentry), stat); p9stat_free(st); kfree(st); diff --git a/fs/9p/vfs_inode_dotl.c b/fs/9p/vfs_inode_dotl.c index 5361cd2d7996..04083fbf0c91 100644 --- a/fs/9p/vfs_inode_dotl.c +++ b/fs/9p/vfs_inode_dotl.c @@ -451,7 +451,7 @@ v9fs_vfs_getattr_dotl(struct mnt_idmap *idmap, p9_debug(P9_DEBUG_VFS, "dentry: %p\n", dentry); v9ses = v9fs_dentry2v9ses(dentry); if (v9ses->cache & (CACHE_META|CACHE_LOOSE)) { - generic_fillattr(&nop_mnt_idmap, inode, stat); + generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat); return 0; } else if (v9ses->cache) { if (S_ISREG(inode->i_mode)) { @@ -476,7 +476,7 @@ v9fs_vfs_getattr_dotl(struct mnt_idmap *idmap, return PTR_ERR(st); v9fs_stat2inode_dotl(st, d_inode(dentry), 0); - generic_fillattr(&nop_mnt_idmap, d_inode(dentry), stat); + generic_fillattr(&nop_mnt_idmap, request_mask, d_inode(dentry), stat); /* Change block size to what the server returned */ stat->blksize = st->st_blksize; diff --git a/fs/afs/inode.c b/fs/afs/inode.c index 866bab860a88..54a4a1dd3bba 100644 --- a/fs/afs/inode.c +++ b/fs/afs/inode.c @@ -773,7 +773,7 @@ int afs_getattr(struct mnt_idmap *idmap, const struct path *path, do { read_seqbegin_or_lock(&vnode->cb_lock, &seq); - generic_fillattr(&nop_mnt_idmap, inode, stat); + generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat); if (test_bit(AFS_VNODE_SILLY_DELETED, &vnode->flags) && stat->nlink > 0) stat->nlink -= 1; diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 19c707bc8801..2335b5e1cecc 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -8625,7 +8625,7 @@ static int btrfs_getattr(struct mnt_idmap *idmap, STATX_ATTR_IMMUTABLE | STATX_ATTR_NODUMP); - generic_fillattr(idmap, inode, stat); + generic_fillattr(idmap, request_mask, inode, stat); stat->dev = BTRFS_I(inode)->root->anon_dev; spin_lock(&BTRFS_I(inode)->lock); diff --git a/fs/ceph/inode.c b/fs/ceph/inode.c index 8e5f41d45283..2e479dca6845 100644 --- a/fs/ceph/inode.c +++ b/fs/ceph/inode.c @@ -2465,7 +2465,7 @@ int ceph_getattr(struct mnt_idmap *idmap, const struct path *path, return err; } - generic_fillattr(&nop_mnt_idmap, inode, stat); + generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat); stat->ino = ceph_present_inode(inode); /* diff --git a/fs/cifs/inode.c b/fs/cifs/inode.c index 1087ac6104a9..1ba09e39a1de 100644 --- a/fs/cifs/inode.c +++ b/fs/cifs/inode.c @@ -2540,7 +2540,7 @@ int cifs_getattr(struct mnt_idmap *idmap, const struct path *path, return rc; } - generic_fillattr(&nop_mnt_idmap, inode, stat); + generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat); stat->blksize = cifs_sb->ctx->bsize; stat->ino = CIFS_I(inode)->uniqueid; diff --git a/fs/coda/inode.c b/fs/coda/inode.c index d661e6cf17ac..f0be47be3587 100644 --- a/fs/coda/inode.c +++ b/fs/coda/inode.c @@ -256,7 +256,8 @@ int coda_getattr(struct mnt_idmap *idmap, const struct path *path, { int err = coda_revalidate_inode(d_inode(path->dentry)); if (!err) - generic_fillattr(&nop_mnt_idmap, d_inode(path->dentry), stat); + generic_fillattr(&nop_mnt_idmap, request_mask, + d_inode(path->dentry), stat); return err; } diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c index 83274915ba6d..e4c1b62a2de2 100644 --- a/fs/ecryptfs/inode.c +++ b/fs/ecryptfs/inode.c @@ -982,7 +982,7 @@ static int ecryptfs_getattr_link(struct mnt_idmap *idmap, mount_crypt_stat = &ecryptfs_superblock_to_private( dentry->d_sb)->mount_crypt_stat; - generic_fillattr(&nop_mnt_idmap, d_inode(dentry), stat); + generic_fillattr(&nop_mnt_idmap, request_mask, d_inode(dentry), stat); if (mount_crypt_stat->flags & ECRYPTFS_GLOBAL_ENCRYPT_FILENAMES) { char *target; size_t targetsiz; @@ -1011,7 +1011,8 @@ static int ecryptfs_getattr(struct mnt_idmap *idmap, if (!rc) { fsstack_copy_attr_all(d_inode(dentry), ecryptfs_inode_to_lower(d_inode(dentry))); - generic_fillattr(&nop_mnt_idmap, d_inode(dentry), stat); + generic_fillattr(&nop_mnt_idmap, request_mask, + d_inode(dentry), stat); stat->blocks = lower_stat.blocks; } return rc; diff --git a/fs/erofs/inode.c b/fs/erofs/inode.c index d70b12b81507..b8aeb1251997 100644 --- a/fs/erofs/inode.c +++ b/fs/erofs/inode.c @@ -372,7 +372,7 @@ int erofs_getattr(struct mnt_idmap *idmap, const struct path *path, stat->attributes_mask |= (STATX_ATTR_COMPRESSED | STATX_ATTR_IMMUTABLE); - generic_fillattr(idmap, inode, stat); + generic_fillattr(idmap, request_mask, inode, stat); return 0; } diff --git a/fs/exfat/file.c b/fs/exfat/file.c index e99183a74611..29b6229fddad 100644 --- a/fs/exfat/file.c +++ b/fs/exfat/file.c @@ -232,7 +232,7 @@ int exfat_getattr(struct mnt_idmap *idmap, const struct path *path, struct inode *inode = d_backing_inode(path->dentry); struct exfat_inode_info *ei = EXFAT_I(inode); - generic_fillattr(&nop_mnt_idmap, inode, stat); + generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat); exfat_truncate_atime(&stat->atime); stat->result_mask |= STATX_BTIME; stat->btime.tv_sec = ei->i_crtime.tv_sec; diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c index 26f135e7ffce..eb4d32fcbf17 100644 --- a/fs/ext2/inode.c +++ b/fs/ext2/inode.c @@ -1614,7 +1614,7 @@ int ext2_getattr(struct mnt_idmap *idmap, const struct path *path, STATX_ATTR_IMMUTABLE | STATX_ATTR_NODUMP); - generic_fillattr(&nop_mnt_idmap, inode, stat); + generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat); return 0; } diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index ce5f21b6c2b3..e0bbcf7a07b5 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -5539,7 +5539,7 @@ int ext4_getattr(struct mnt_idmap *idmap, const struct path *path, STATX_ATTR_NODUMP | STATX_ATTR_VERITY); - generic_fillattr(idmap, inode, stat); + generic_fillattr(idmap, request_mask, inode, stat); return 0; } diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index 5ac53d2627d2..bb16319a9491 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -888,7 +888,7 @@ int f2fs_getattr(struct mnt_idmap *idmap, const struct path *path, STATX_ATTR_NODUMP | STATX_ATTR_VERITY); - generic_fillattr(idmap, inode, stat); + generic_fillattr(idmap, request_mask, inode, stat); /* we need to show initial sectors used for inline_data/dentries */ if ((S_ISREG(inode->i_mode) && f2fs_has_inline_data(inode)) || diff --git a/fs/fat/file.c b/fs/fat/file.c index 795a4fad5c40..650f77422057 100644 --- a/fs/fat/file.c +++ b/fs/fat/file.c @@ -401,7 +401,7 @@ int fat_getattr(struct mnt_idmap *idmap, const struct path *path, struct inode *inode = d_inode(path->dentry); struct msdos_sb_info *sbi = MSDOS_SB(inode->i_sb); - generic_fillattr(idmap, inode, stat); + generic_fillattr(idmap, request_mask, inode, stat); stat->blksize = sbi->cluster_size; if (sbi->options.nfs == FAT_NFS_NOSTALE_RO) { diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c index 35bc174f9ba2..a445d72bd98f 100644 --- a/fs/fuse/dir.c +++ b/fs/fuse/dir.c @@ -1224,7 +1224,7 @@ static int fuse_update_get_attr(struct inode *inode, struct file *file, forget_all_cached_acls(inode); err = fuse_do_getattr(inode, stat, file); } else if (stat) { - generic_fillattr(&nop_mnt_idmap, inode, stat); + generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat); stat->mode = fi->orig_i_mode; stat->ino = fi->orig_ino; } diff --git a/fs/gfs2/inode.c b/fs/gfs2/inode.c index 17c994a0c0d0..5b3c62d20db5 100644 --- a/fs/gfs2/inode.c +++ b/fs/gfs2/inode.c @@ -2071,7 +2071,7 @@ static int gfs2_getattr(struct mnt_idmap *idmap, STATX_ATTR_IMMUTABLE | STATX_ATTR_NODUMP); - generic_fillattr(&nop_mnt_idmap, inode, stat); + generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat); if (gfs2_holder_initialized(&gh)) gfs2_glock_dq_uninit(&gh); diff --git a/fs/hfsplus/inode.c b/fs/hfsplus/inode.c index b21660475ac1..6aefdbd3e7b6 100644 --- a/fs/hfsplus/inode.c +++ b/fs/hfsplus/inode.c @@ -298,7 +298,7 @@ int hfsplus_getattr(struct mnt_idmap *idmap, const struct path *path, stat->attributes_mask |= STATX_ATTR_APPEND | STATX_ATTR_IMMUTABLE | STATX_ATTR_NODUMP; - generic_fillattr(&nop_mnt_idmap, inode, stat); + generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat); return 0; } diff --git a/fs/kernfs/inode.c b/fs/kernfs/inode.c index b22b74d1a115..b01cc38ed843 100644 --- a/fs/kernfs/inode.c +++ b/fs/kernfs/inode.c @@ -191,7 +191,7 @@ int kernfs_iop_getattr(struct mnt_idmap *idmap, down_read(&root->kernfs_iattr_rwsem); kernfs_refresh_inode(kn, inode); - generic_fillattr(&nop_mnt_idmap, inode, stat); + generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat); up_read(&root->kernfs_iattr_rwsem); return 0; diff --git a/fs/ksmbd/smb2pdu.c b/fs/ksmbd/smb2pdu.c index cb93fd231f4e..d39ddb344417 100644 --- a/fs/ksmbd/smb2pdu.c +++ b/fs/ksmbd/smb2pdu.c @@ -4342,8 +4342,8 @@ static int get_file_basic_info(struct smb2_query_info_rsp *rsp, } basic_info = (struct smb2_file_basic_info *)rsp->Buffer; - generic_fillattr(file_mnt_idmap(fp->filp), file_inode(fp->filp), - &stat); + generic_fillattr(file_mnt_idmap(fp->filp), STATX_BASIC_STATS, + file_inode(fp->filp), &stat); basic_info->CreationTime = cpu_to_le64(fp->create_time); time = ksmbd_UnixTimeToNT(stat.atime); basic_info->LastAccessTime = cpu_to_le64(time); @@ -4383,7 +4383,7 @@ static void get_file_standard_info(struct smb2_query_info_rsp *rsp, struct kstat stat; inode = file_inode(fp->filp); - generic_fillattr(file_mnt_idmap(fp->filp), inode, &stat); + generic_fillattr(file_mnt_idmap(fp->filp), STATX_BASIC_STATS, inode, &stat); sinfo = (struct smb2_file_standard_info *)rsp->Buffer; delete_pending = ksmbd_inode_pending_delete(fp); @@ -4437,7 +4437,7 @@ static int get_file_all_info(struct ksmbd_work *work, return PTR_ERR(filename); inode = file_inode(fp->filp); - generic_fillattr(file_mnt_idmap(fp->filp), inode, &stat); + generic_fillattr(file_mnt_idmap(fp->filp), STATX_BASIC_STATS, inode, &stat); ksmbd_debug(SMB, "filename = %s\n", filename); delete_pending = ksmbd_inode_pending_delete(fp); @@ -4514,8 +4514,8 @@ static void get_file_stream_info(struct ksmbd_work *work, int buf_free_len; struct smb2_query_info_req *req = ksmbd_req_buf_next(work); - generic_fillattr(file_mnt_idmap(fp->filp), file_inode(fp->filp), - &stat); + generic_fillattr(file_mnt_idmap(fp->filp), STATX_BASIC_STATS, + file_inode(fp->filp), &stat); file_info = (struct smb2_file_stream_info *)rsp->Buffer; buf_free_len = @@ -4605,8 +4605,8 @@ static void get_file_internal_info(struct smb2_query_info_rsp *rsp, struct smb2_file_internal_info *file_info; struct kstat stat; - generic_fillattr(file_mnt_idmap(fp->filp), file_inode(fp->filp), - &stat); + generic_fillattr(file_mnt_idmap(fp->filp), STATX_BASIC_STATS, + file_inode(fp->filp), &stat); file_info = (struct smb2_file_internal_info *)rsp->Buffer; file_info->IndexNumber = cpu_to_le64(stat.ino); rsp->OutputBufferLength = @@ -4631,7 +4631,7 @@ static int get_file_network_open_info(struct smb2_query_info_rsp *rsp, file_info = (struct smb2_file_ntwrk_info *)rsp->Buffer; inode = file_inode(fp->filp); - generic_fillattr(file_mnt_idmap(fp->filp), inode, &stat); + generic_fillattr(file_mnt_idmap(fp->filp), STATX_BASIC_STATS, inode, &stat); file_info->CreationTime = cpu_to_le64(fp->create_time); time = ksmbd_UnixTimeToNT(stat.atime); @@ -4692,8 +4692,8 @@ static void get_file_compression_info(struct smb2_query_info_rsp *rsp, struct smb2_file_comp_info *file_info; struct kstat stat; - generic_fillattr(file_mnt_idmap(fp->filp), file_inode(fp->filp), - &stat); + generic_fillattr(file_mnt_idmap(fp->filp), STATX_BASIC_STATS, + file_inode(fp->filp), &stat); file_info = (struct smb2_file_comp_info *)rsp->Buffer; file_info->CompressedFileSize = cpu_to_le64(stat.blocks << 9); diff --git a/fs/ksmbd/vfs.c b/fs/ksmbd/vfs.c index 778c152708e4..47a4fe1e5043 100644 --- a/fs/ksmbd/vfs.c +++ b/fs/ksmbd/vfs.c @@ -1597,7 +1597,8 @@ int ksmbd_vfs_fill_dentry_attrs(struct ksmbd_work *work, u64 time; int rc; - generic_fillattr(idmap, d_inode(dentry), ksmbd_kstat->kstat); + generic_fillattr(idmap, STATX_BASIC_STATS, d_inode(dentry), + ksmbd_kstat->kstat); time = ksmbd_UnixTimeToNT(ksmbd_kstat->kstat->ctime); ksmbd_kstat->create_time = time; diff --git a/fs/libfs.c b/fs/libfs.c index 89cf614a3271..b8f7be638f17 100644 --- a/fs/libfs.c +++ b/fs/libfs.c @@ -33,7 +33,7 @@ int simple_getattr(struct mnt_idmap *idmap, const struct path *path, unsigned int query_flags) { struct inode *inode = d_inode(path->dentry); - generic_fillattr(&nop_mnt_idmap, inode, stat); + generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat); stat->blocks = inode->i_mapping->nrpages << (PAGE_SHIFT - 9); return 0; } @@ -1315,7 +1315,7 @@ static int empty_dir_getattr(struct mnt_idmap *idmap, u32 request_mask, unsigned int query_flags) { struct inode *inode = d_inode(path->dentry); - generic_fillattr(&nop_mnt_idmap, inode, stat); + generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat); return 0; } diff --git a/fs/minix/inode.c b/fs/minix/inode.c index e9fbb5303a22..a7f927e3760c 100644 --- a/fs/minix/inode.c +++ b/fs/minix/inode.c @@ -660,7 +660,7 @@ int minix_getattr(struct mnt_idmap *idmap, const struct path *path, struct super_block *sb = path->dentry->d_sb; struct inode *inode = d_inode(path->dentry); - generic_fillattr(&nop_mnt_idmap, inode, stat); + generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat); if (INODE_VERSION(inode) == MINIX_V1) stat->blocks = (BLOCK_SIZE / 512) * V1_minix_blocks(stat->size, sb); else diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c index a910b9a638c5..7f490c29ab6b 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c @@ -912,7 +912,7 @@ int nfs_getattr(struct mnt_idmap *idmap, const struct path *path, /* Only return attributes that were revalidated. */ stat->result_mask = nfs_get_valid_attrmask(inode) | request_mask; - generic_fillattr(&nop_mnt_idmap, inode, stat); + generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat); stat->ino = nfs_compat_user_ino64(NFS_FILEID(inode)); stat->change_cookie = inode_peek_iversion_raw(inode); stat->attributes_mask |= STATX_ATTR_CHANGE_MONOTONIC; diff --git a/fs/nfs/namespace.c b/fs/nfs/namespace.c index 19d51ebf842c..e7494cdd957e 100644 --- a/fs/nfs/namespace.c +++ b/fs/nfs/namespace.c @@ -215,7 +215,8 @@ nfs_namespace_getattr(struct mnt_idmap *idmap, if (NFS_FH(d_inode(path->dentry))->size != 0) return nfs_getattr(idmap, path, stat, request_mask, query_flags); - generic_fillattr(&nop_mnt_idmap, d_inode(path->dentry), stat); + generic_fillattr(&nop_mnt_idmap, request_mask, d_inode(path->dentry), + stat); return 0; } diff --git a/fs/ntfs3/file.c b/fs/ntfs3/file.c index 9a3d55c367d9..43ffd48eb048 100644 --- a/fs/ntfs3/file.c +++ b/fs/ntfs3/file.c @@ -85,7 +85,7 @@ int ntfs_getattr(struct mnt_idmap *idmap, const struct path *path, stat->attributes_mask |= STATX_ATTR_COMPRESSED | STATX_ATTR_ENCRYPTED; - generic_fillattr(idmap, inode, stat); + generic_fillattr(idmap, request_mask, inode, stat); stat->result_mask |= STATX_BTIME; stat->btime = ni->i_crtime; diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c index efb09de4343d..5dc659a53311 100644 --- a/fs/ocfs2/file.c +++ b/fs/ocfs2/file.c @@ -1317,7 +1317,7 @@ int ocfs2_getattr(struct mnt_idmap *idmap, const struct path *path, goto bail; } - generic_fillattr(&nop_mnt_idmap, inode, stat); + generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat); /* * If there is inline data in the inode, the inode will normally not * have data blocks allocated (it may have an external xattr block). diff --git a/fs/orangefs/inode.c b/fs/orangefs/inode.c index 9014bbcc8031..a52c30e80f45 100644 --- a/fs/orangefs/inode.c +++ b/fs/orangefs/inode.c @@ -871,7 +871,7 @@ int orangefs_getattr(struct mnt_idmap *idmap, const struct path *path, ret = orangefs_inode_getattr(inode, request_mask & STATX_SIZE ? ORANGEFS_GETATTR_SIZE : 0); if (ret == 0) { - generic_fillattr(&nop_mnt_idmap, inode, stat); + generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat); /* override block size reported to stat */ if (!(request_mask & STATX_SIZE)) diff --git a/fs/proc/base.c b/fs/proc/base.c index 05452c3b9872..98eab84553f9 100644 --- a/fs/proc/base.c +++ b/fs/proc/base.c @@ -1966,7 +1966,7 @@ int pid_getattr(struct mnt_idmap *idmap, const struct path *path, struct proc_fs_info *fs_info = proc_sb_info(inode->i_sb); struct task_struct *task; - generic_fillattr(&nop_mnt_idmap, inode, stat); + generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat); stat->uid = GLOBAL_ROOT_UID; stat->gid = GLOBAL_ROOT_GID; @@ -3899,7 +3899,7 @@ static int proc_task_getattr(struct mnt_idmap *idmap, { struct inode *inode = d_inode(path->dentry); struct task_struct *p = get_proc_task(inode); - generic_fillattr(&nop_mnt_idmap, inode, stat); + generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat); if (p) { stat->nlink += get_nr_threads(p); diff --git a/fs/proc/fd.c b/fs/proc/fd.c index b3140deebbbf..6276b3938842 100644 --- a/fs/proc/fd.c +++ b/fs/proc/fd.c @@ -352,7 +352,7 @@ static int proc_fd_getattr(struct mnt_idmap *idmap, struct inode *inode = d_inode(path->dentry); int rv = 0; - generic_fillattr(&nop_mnt_idmap, inode, stat); + generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat); /* If it's a directory, put the number of open fds there */ if (S_ISDIR(inode->i_mode)) { diff --git a/fs/proc/generic.c b/fs/proc/generic.c index 42ae38ff6e7e..775ce0bcf08c 100644 --- a/fs/proc/generic.c +++ b/fs/proc/generic.c @@ -146,7 +146,7 @@ static int proc_getattr(struct mnt_idmap *idmap, } } - generic_fillattr(&nop_mnt_idmap, inode, stat); + generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat); return 0; } diff --git a/fs/proc/proc_net.c b/fs/proc/proc_net.c index a0c0419872e3..75f35f128e63 100644 --- a/fs/proc/proc_net.c +++ b/fs/proc/proc_net.c @@ -308,7 +308,7 @@ static int proc_tgid_net_getattr(struct mnt_idmap *idmap, net = get_proc_task_net(inode); - generic_fillattr(&nop_mnt_idmap, inode, stat); + generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat); if (net != NULL) { stat->nlink = net->proc_net->nlink; diff --git a/fs/proc/proc_sysctl.c b/fs/proc/proc_sysctl.c index 8038833ff5b0..c00b15b0ba81 100644 --- a/fs/proc/proc_sysctl.c +++ b/fs/proc/proc_sysctl.c @@ -855,7 +855,7 @@ static int proc_sys_getattr(struct mnt_idmap *idmap, if (IS_ERR(head)) return PTR_ERR(head); - generic_fillattr(&nop_mnt_idmap, inode, stat); + generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat); if (table) stat->mode = (stat->mode & S_IFMT) | table->mode; diff --git a/fs/proc/root.c b/fs/proc/root.c index a86e65a608da..9191248f2dac 100644 --- a/fs/proc/root.c +++ b/fs/proc/root.c @@ -314,7 +314,8 @@ static int proc_root_getattr(struct mnt_idmap *idmap, const struct path *path, struct kstat *stat, u32 request_mask, unsigned int query_flags) { - generic_fillattr(&nop_mnt_idmap, d_inode(path->dentry), stat); + generic_fillattr(&nop_mnt_idmap, request_mask, d_inode(path->dentry), + stat); stat->nlink = proc_root.nlink + nr_processes(); return 0; } diff --git a/fs/stat.c b/fs/stat.c index 7c238da22ef0..9b513a142a56 100644 --- a/fs/stat.c +++ b/fs/stat.c @@ -29,6 +29,7 @@ /** * generic_fillattr - Fill in the basic attributes from the inode struct * @idmap: idmap of the mount the inode was found from + * @req_mask statx request_mask * @inode: Inode to use as the source * @stat: Where to fill in the attributes * @@ -42,8 +43,8 @@ * uid and gid filds. On non-idmapped mounts or if permission checking is to be * performed on the raw inode simply passs @nop_mnt_idmap. */ -void generic_fillattr(struct mnt_idmap *idmap, struct inode *inode, - struct kstat *stat) +void generic_fillattr(struct mnt_idmap *idmap, u32 request_mask, + struct inode *inode, struct kstat *stat) { vfsuid_t vfsuid = i_uid_into_vfsuid(idmap, inode); vfsgid_t vfsgid = i_gid_into_vfsgid(idmap, inode); @@ -61,6 +62,12 @@ void generic_fillattr(struct mnt_idmap *idmap, struct inode *inode, stat->ctime = inode->i_ctime; stat->blksize = i_blocksize(inode); stat->blocks = inode->i_blocks; + + if ((request_mask & STATX_CHANGE_COOKIE) && IS_I_VERSION(inode)) { + stat->result_mask |= STATX_CHANGE_COOKIE; + stat->change_cookie = inode_query_iversion(inode); + } + } EXPORT_SYMBOL(generic_fillattr); @@ -123,17 +130,12 @@ int vfs_getattr_nosec(const struct path *path, struct kstat *stat, stat->attributes_mask |= (STATX_ATTR_AUTOMOUNT | STATX_ATTR_DAX); - if ((request_mask & STATX_CHANGE_COOKIE) && IS_I_VERSION(inode)) { - stat->result_mask |= STATX_CHANGE_COOKIE; - stat->change_cookie = inode_query_iversion(inode); - } - idmap = mnt_idmap(path->mnt); if (inode->i_op->getattr) return inode->i_op->getattr(idmap, path, stat, request_mask, query_flags); - generic_fillattr(idmap, inode, stat); + generic_fillattr(idmap, request_mask, inode, stat); return 0; } EXPORT_SYMBOL(vfs_getattr_nosec); diff --git a/fs/sysv/itree.c b/fs/sysv/itree.c index b22764fe669c..d41189cd9ec2 100644 --- a/fs/sysv/itree.c +++ b/fs/sysv/itree.c @@ -445,7 +445,8 @@ int sysv_getattr(struct mnt_idmap *idmap, const struct path *path, struct kstat *stat, u32 request_mask, unsigned int flags) { struct super_block *s = path->dentry->d_sb; - generic_fillattr(&nop_mnt_idmap, d_inode(path->dentry), stat); + generic_fillattr(&nop_mnt_idmap, request_mask, d_inode(path->dentry), + stat); stat->blocks = (s->s_blocksize / 512) * sysv_nblocks(s, stat->size); stat->blksize = s->s_blocksize; return 0; diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c index ef0499edc248..ca044f31c49d 100644 --- a/fs/ubifs/dir.c +++ b/fs/ubifs/dir.c @@ -1665,7 +1665,7 @@ int ubifs_getattr(struct mnt_idmap *idmap, const struct path *path, STATX_ATTR_ENCRYPTED | STATX_ATTR_IMMUTABLE); - generic_fillattr(&nop_mnt_idmap, inode, stat); + generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat); stat->blksize = UBIFS_BLOCK_SIZE; stat->size = ui->ui_size; diff --git a/fs/udf/symlink.c b/fs/udf/symlink.c index a34c8c4e6d21..69f6982aec9a 100644 --- a/fs/udf/symlink.c +++ b/fs/udf/symlink.c @@ -153,7 +153,7 @@ static int udf_symlink_getattr(struct mnt_idmap *idmap, struct inode *inode = d_backing_inode(dentry); struct page *page; - generic_fillattr(&nop_mnt_idmap, inode, stat); + generic_fillattr(&nop_mnt_idmap, request_mask, inode, stat); page = read_mapping_page(inode->i_mapping, 0, NULL); if (IS_ERR(page)) return PTR_ERR(page); diff --git a/fs/vboxsf/utils.c b/fs/vboxsf/utils.c index dd0ae1188e87..482f778709d6 100644 --- a/fs/vboxsf/utils.c +++ b/fs/vboxsf/utils.c @@ -252,7 +252,7 @@ int vboxsf_getattr(struct mnt_idmap *idmap, const struct path *path, if (err) return err; - generic_fillattr(&nop_mnt_idmap, d_inode(dentry), kstat); + generic_fillattr(&nop_mnt_idmap, request_mask, d_inode(dentry), kstat); return 0; } diff --git a/include/linux/fs.h b/include/linux/fs.h index 21a981680856..d5896f90093a 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -2857,7 +2857,7 @@ extern void page_put_link(void *); extern int page_symlink(struct inode *inode, const char *symname, int len); extern const struct inode_operations page_symlink_inode_operations; extern void kfree_link(void *); -void generic_fillattr(struct mnt_idmap *, struct inode *, struct kstat *); +void generic_fillattr(struct mnt_idmap *, u32, struct inode *, struct kstat *); void generic_fill_statx_attr(struct inode *inode, struct kstat *stat); extern int vfs_getattr_nosec(const struct path *, struct kstat *, u32, unsigned int); extern int vfs_getattr(const struct path *, struct kstat *, u32, unsigned int); diff --git a/mm/shmem.c b/mm/shmem.c index e40a08c5c6d7..8208d4f85dff 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -1073,7 +1073,7 @@ static int shmem_getattr(struct mnt_idmap *idmap, stat->attributes_mask |= (STATX_ATTR_APPEND | STATX_ATTR_IMMUTABLE | STATX_ATTR_NODUMP); - generic_fillattr(idmap, inode, stat); + generic_fillattr(idmap, request_mask, inode, stat); if (shmem_is_huge(inode, 0, false, NULL, 0)) stat->blksize = HPAGE_PMD_SIZE; From patchwork Thu May 18 11:47:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 13246630 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id D33B0C7EE23 for ; Thu, 18 May 2023 11:47:55 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6B6ED280002; Thu, 18 May 2023 07:47:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 66732280001; Thu, 18 May 2023 07:47:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 4B9EE280002; Thu, 18 May 2023 07:47:55 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 3F161280001 for ; Thu, 18 May 2023 07:47:55 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 208A4A07E6 for ; Thu, 18 May 2023 11:47:55 +0000 (UTC) X-FDA: 80803201710.01.B42F278 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf16.hostedemail.com (Postfix) with ESMTP id 6582E180010 for ; Thu, 18 May 2023 11:47:53 +0000 (UTC) Authentication-Results: imf16.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="kf4/fSAg"; spf=pass (imf16.hostedemail.com: domain of jlayton@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=jlayton@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1684410473; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=+8miEzzf4W1PalDwaRAb0xXD16VMnMMTAWsK+wE0Xp4=; b=hmEGsIQfqXkMIxmbokAhVIV49Etj+8N0imoq7husTzBlQchLBVSjfYzlfzUntRtK97/Ony IVIikjoREvXgLv1Zj47bdVBB7dbkrVxKKcHGpbz2jgEL1rFOmrwunnmYTO9ur8OoHUVwId So7LhzLBTriuCKTkEgDOIwfNq4fU0ek= ARC-Authentication-Results: i=1; imf16.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="kf4/fSAg"; spf=pass (imf16.hostedemail.com: domain of jlayton@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=jlayton@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684410473; a=rsa-sha256; cv=none; b=AQNLtVoepIx+KyOafFHyzJmW/swaV1JOwFdfOXwxpIclIeATkreeVN4NNQWW+I8gUsoaRB KhQbul++LCHmUdlpz2apzeKHGxBKqsjovTWaQ8XHxMtMR1G8VvEmcmxVFkg50NAe7CC4nz Nlb93Lx0EXhsW/EJsEiJxJWcALm7upc= 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 8951864ED3; Thu, 18 May 2023 11:47:52 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9E063C433D2; Thu, 18 May 2023 11:47:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1684410472; bh=234xn7dTn/EH18jsQndb3M4XMiFAfMq97F1cqMWOU2M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=kf4/fSAguVGEyctc98BenJkqq4M/xPbp9CIvuOaByIVai7GitVP0VjzNWKHsEnGUR wxJkYgQLmRkGLegr0jV3peRlQO0qoZrcyK7ExFIdxNVPXL6mjOYgVr1qmJKU7dyr4u hV9emFVZylRUjXqgQ6ERA+zD8hiKxJHM5K7u5lf0tUMBCyFAeu/7L2/nG9AEPI7VtD W/gNEoLsGWiGFf+zdGbrnmvjD+/7zBPehpp8u9ItRYpC0kD0btUoaimIkwAgWU/vCC XqWNbWfNu1nQmjHulzwT1eAAOyqAX3s0uUHt3AVlJDO+3YQw7VL9luECvvZBVqS43Z SXN8Auw3Sbx8w== From: Jeff Layton To: Alexander Viro , Christian Brauner , "Darrick J. Wong" , Hugh Dickins , Andrew Morton , Dave Chinner , Chuck Lever Cc: Jan Kara , Amir Goldstein , David Howells , Neil Brown , Matthew Wilcox , Andreas Dilger , Theodore T'so , Chris Mason , Josef Bacik , David Sterba , Namjae Jeon , Steve French , Sergey Senozhatsky , Tom Talpey , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-ext4@vger.kernel.org, linux-mm@kvack.org, linux-nfs@vger.kernel.org, linux-cifs@vger.kernel.org Subject: [PATCH v4 2/9] fs: add infrastructure for multigrain inode i_m/ctime Date: Thu, 18 May 2023 07:47:35 -0400 Message-Id: <20230518114742.128950-3-jlayton@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230518114742.128950-1-jlayton@kernel.org> References: <20230518114742.128950-1-jlayton@kernel.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 6582E180010 X-Stat-Signature: 6izqqawprc4wa3w5hcr4c8dny35xoqtk X-HE-Tag: 1684410473-818029 X-HE-Meta: U2FsdGVkX18pPjr5ErVcs0BLGj3RvVrU4FoxVPE8OUmtrUjdYc6HFJCiFoOM6c0HdVl2D1bKsfzV3IP0yQpcLQeewX7FUrc3lTSUj5a/rBjTW09GyuHNltVnz7yktJ1pkXy6kKW5NpKMlK9vg18rgPB1ZK/PlPyKCehkq54A7Ywxij/eln3GicezXONUrfN1sy0Xx7Eg77Y7kpFEDPBAkMfsy2GyVUKOPwgpLULbBeDeU2Wnky0uHssZIywyC/FUDhIMn151NCyJSheTBGJigtXqLpCfLDxfIxF9YIFwBOuTm8amLMbD//7BYktbenvttVjFHewaoKpOFYYfKCAkzxTTBHtttK16KuTUJEN0onYXCucTXoKzsVAOshTw7FYVNtDTI+xeLDOiL9YvFBqW2CVu1f3rvVKm6qHkWi08bXfP1smNXrKopX39qlEOamJCos4a4SsmIvSKyG6cuPi6E9+D6h887S7gxeNMJcD/RtTmwEV5JfOwsp80Y7laN4PrcTavc+6OBg1MJuQ6cY+730jFUryzUfDfEGyKUBfpqakNyhrFBry9//ZLRksZs+ikdv1hRO2WAwD410IxP79GrV1ptmCJtA+9sewZ95BcEtMLkZdtRxKicfezZ20AYvpYtNXuo1L8N7qJbPBc5WPP3dl1HKNNKdECmeX4HfMhzIIDy0RW82jt3SICljaew+OdhaP0yZ8/EHJ6N0XClASPv6BJd/zG75YdXxZdrc4JPc3dYCKRVanhOmzrH3RlXcPleQyI5aIgWCCGlckkm5WqCoG2091z7+IWXqYTUD48WAgobc8j85PR5TGO8qjl/VUfUyRpATV2N3VD3Byi0MeYKItuqKhwLsb+NBMKv1bIfoOvCnDtBs6fDLol5lwP+Wq948Nqcu72W9gcIZQst83+U23fhEAxJtXUIyLcSfOLTHM4m136kpC/MVH9G+I1SfozNXJBUUK0LSoyePXM9fL e2WpkCJg GeIz4ITL/1ieSEVGkSh1zzMCEkevfGzshGtHIK+jbxLqOljxaIcNBQxWuayhGT9RCjGJaFXjbJvIKRTyYr9uBew2QjTP9MSHy1EQlaCFtXRCOHDA/wql177YxkrKsyUjRC3XHp3UquS3iAsJB4fTp6VF90MwaNbeR9p1YRy/MXxVcO6eyxDua3ZUXUwHOmsW9w+k33Y8uZ/PDGMW+RNVk1eznHj8kzHsVyki4/N6/kX51gPjUqRoJmZ8v9r7IZKHRB0lILCP4ACgY7NX04z2OW6H9FHz/nti9KCHPbTpDDtBrFgnA6v4ZT6Uifh7JbM9mi6RicdDATErHguPsPGwUsJDlJwfKXiuWAePkFcoreiPLX6u9ZRetfXUNV2WKV7NgB30m X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: The VFS always uses coarse-grained timestamp updates for filling out the ctime and mtime after a change. This has the benefit of allowing filesystems to optimize away a lot metadata updates, down to around 1 per jiffy, even when a file is under heavy writes. Unfortunately, this has always been an issue when we're exporting via NFSv3, which relies on timestamps to validate caches. Even with NFSv4, a lot of exported filesystems don't properly support a change attribute and are subject to the same problems with timestamp granularity. Other applications have similar issues (e.g backup applications). Switching to always using fine-grained timestamps would improve the situation, but that becomes rather expensive, as the underlying filesystem will have to log a lot more metadata updates. What we need is a way to only use fine-grained timestamps when they are being actively queried. The kernel always stores normalized ctime values, so only the first 30 bits of the tv_nsec field are ever used. Whenever the mtime changes, the ctime must also change. Use the 31st bit of the ctime tv_nsec field to indicate that something has queried the inode for the i_mtime or i_ctime. When this flag is set, on the next timestamp update, the kernel can fetch a fine-grained timestamp instead of the usual coarse-grained one. This patch adds the infrastructure this scheme. Filesytems can opt into it by setting the FS_MULTIGRAIN_TS flag in the fstype. Later patches will convert individual filesystems over to use it. Signed-off-by: Jeff Layton --- fs/inode.c | 48 ++++++++++++++++++++++++++++----- fs/stat.c | 41 ++++++++++++++++++++++++++-- include/linux/fs.h | 66 +++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 145 insertions(+), 10 deletions(-) diff --git a/fs/inode.c b/fs/inode.c index 577799b7855f..24769e08fbaa 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -2029,6 +2029,7 @@ EXPORT_SYMBOL(file_remove_privs); static int inode_needs_update_time(struct inode *inode, struct timespec64 *now) { int sync_it = 0; + struct timespec64 ctime; /* First try to exhaust all avenues to not sync */ if (IS_NOCMTIME(inode)) @@ -2037,7 +2038,8 @@ static int inode_needs_update_time(struct inode *inode, struct timespec64 *now) if (!timespec64_equal(&inode->i_mtime, now)) sync_it = S_MTIME; - if (!timespec64_equal(&inode->i_ctime, now)) + ctime = ctime_peek(inode); + if (!timespec64_equal(&ctime, now)) sync_it |= S_CTIME; if (IS_I_VERSION(inode) && inode_iversion_need_inc(inode)) @@ -2431,6 +2433,40 @@ struct timespec64 timestamp_truncate(struct timespec64 t, struct inode *inode) } EXPORT_SYMBOL(timestamp_truncate); +/** + * current_mg_time - Return FS time (possibly fine-grained) + * @inode: inode. + * + * Return the current time truncated to the time granularity supported by + * the fs, as suitable for a ctime/mtime change. If the ctime is flagged + * as having been QUERIED, get a fine-grained timestamp. + */ +static struct timespec64 current_mg_time(struct inode *inode) +{ + struct timespec64 now; + atomic_long_t *pnsec = (atomic_long_t *)&inode->i_ctime.tv_nsec; + long nsec = atomic_long_fetch_andnot(I_CTIME_QUERIED, pnsec); + + if (nsec & I_CTIME_QUERIED) { + ktime_get_real_ts64(&now); + } else { + struct timespec64 ctime; + + ktime_get_coarse_real_ts64(&now); + + /* + * If we've recently fetched a fine-grained timestamp + * then the coarse-grained one may still be earlier than the + * existing one. Just keep the existing ctime if so. + */ + ctime = ctime_peek(inode); + if (timespec64_compare(&ctime, &now) > 0) + now = ctime; + } + + return now; +} + /** * current_time - Return FS time * @inode: inode. @@ -2445,12 +2481,10 @@ struct timespec64 current_time(struct inode *inode) { struct timespec64 now; - ktime_get_coarse_real_ts64(&now); - - if (unlikely(!inode->i_sb)) { - WARN(1, "current_time() called with uninitialized super_block in the inode"); - return now; - } + if (is_multigrain_ts(inode)) + now = current_mg_time(inode); + else + ktime_get_coarse_real_ts64(&now); return timestamp_truncate(now, inode); } diff --git a/fs/stat.c b/fs/stat.c index 9b513a142a56..74d8283cc5c6 100644 --- a/fs/stat.c +++ b/fs/stat.c @@ -26,6 +26,38 @@ #include "internal.h" #include "mount.h" +/** + * fill_multigrain_cmtime - Fill in the mtime and ctime and flag ctime as QUERIED + * @request_mask: STATX_* values requested + * @inode: inode from which to grab the c/mtime + * @stat: where to store the resulting values + * + * Given @inode, grab the ctime and mtime out if it and store the result + * in @stat. When fetching the value, flag it as queried so the next write + * will use a fine-grained timestamp. + */ +void fill_multigrain_cmtime(u32 request_mask, struct inode *inode, + struct kstat *stat) +{ + atomic_long_t *pnsec = (atomic_long_t *)&inode->i_ctime.tv_nsec; + + /* If neither time was requested, then don't report them */ + if (!(request_mask & (STATX_CTIME|STATX_MTIME))) { + stat->result_mask &= ~(STATX_CTIME|STATX_MTIME); + return; + } + + stat->mtime = inode->i_mtime; + stat->ctime.tv_sec = inode->i_ctime.tv_sec; + /* + * Atomically set the QUERIED flag and fetch the new value with + * the flag masked off. + */ + stat->ctime.tv_nsec = atomic_long_fetch_or(I_CTIME_QUERIED, pnsec) & + ~I_CTIME_QUERIED; +} +EXPORT_SYMBOL(fill_multigrain_cmtime); + /** * generic_fillattr - Fill in the basic attributes from the inode struct * @idmap: idmap of the mount the inode was found from @@ -58,11 +90,16 @@ void generic_fillattr(struct mnt_idmap *idmap, u32 request_mask, stat->rdev = inode->i_rdev; stat->size = i_size_read(inode); stat->atime = inode->i_atime; - stat->mtime = inode->i_mtime; - stat->ctime = inode->i_ctime; stat->blksize = i_blocksize(inode); stat->blocks = inode->i_blocks; + if (is_multigrain_ts(inode)) { + fill_multigrain_cmtime(request_mask, inode, stat); + } else { + stat->mtime = inode->i_mtime; + stat->ctime = inode->i_ctime; + } + if ((request_mask & STATX_CHANGE_COOKIE) && IS_I_VERSION(inode)) { stat->result_mask |= STATX_CHANGE_COOKIE; stat->change_cookie = inode_query_iversion(inode); diff --git a/include/linux/fs.h b/include/linux/fs.h index d5896f90093a..1f670cf1edbd 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -1474,7 +1474,7 @@ static inline bool fsuidgid_has_mapping(struct super_block *sb, kgid_has_mapping(fs_userns, kgid); } -extern struct timespec64 current_time(struct inode *inode); +struct timespec64 current_time(struct inode *inode); /* * Snapshotting support. @@ -2212,6 +2212,7 @@ struct file_system_type { #define FS_USERNS_MOUNT 8 /* Can be mounted by userns root */ #define FS_DISALLOW_NOTIFY_PERM 16 /* Disable fanotify permission events */ #define FS_ALLOW_IDMAP 32 /* FS has been updated to handle vfs idmappings. */ +#define FS_MULTIGRAIN_TS 64 /* Filesystem uses multigrain timestamps */ #define FS_RENAME_DOES_D_MOVE 32768 /* FS will handle d_move() during rename() internally. */ int (*init_fs_context)(struct fs_context *); const struct fs_parameter_spec *parameters; @@ -2235,6 +2236,67 @@ struct file_system_type { #define MODULE_ALIAS_FS(NAME) MODULE_ALIAS("fs-" NAME) +/* + * Multigrain timestamps + * + * Conditionally use fine-grained ctime and mtime timestamps when there + * are users actively observing them via getattr. The primary use-case + * for this is NFS clients that use the ctime to distinguish between + * different states of the file, and that are often fooled by multiple + * operations that occur in the same coarse-grained timer tick. + */ +static inline bool is_multigrain_ts(const struct inode *inode) +{ + return inode->i_sb->s_type->fs_flags & FS_MULTIGRAIN_TS; +} + +/* + * The kernel always keeps normalized struct timespec64 values in the ctime, + * which means that only the first 30 bits of the value are used. Use the + * 31st bit of the ctime's tv_nsec field as a flag to indicate that the value + * has been queried since it was last updated. + */ +#define I_CTIME_QUERIED (1L<<30) + +/** + * ctime_nsec_peek - peek at (but don't query) the ctime tv_nsec field + * @inode: inode to fetch the ctime from + * + * Grab the current ctime tv_nsec field from the inode, mask off the + * I_CTIME_QUERIED flag and return it. This is mostly intended for use by + * internal consumers of the ctime that aren't concerned with ensuring a + * fine-grained update on the next change (e.g. when preparing to store + * the value in the backing store for later retrieval). + * + * This is safe to call regardless of whether the underlying filesystem + * is using multigrain timestamps. + */ +static inline long ctime_nsec_peek(const struct inode *inode) +{ + return inode->i_ctime.tv_nsec &~ I_CTIME_QUERIED; +} + +/** + * ctime_peek - peek at (but don't query) the ctime + * @inode: inode to fetch the ctime from + * + * Grab the current ctime from the inode, sans I_CTIME_QUERIED flag. For + * use by internal consumers that don't require a fine-grained update on + * the next change. + * + * This is safe to call regardless of whether the underlying filesystem + * is using multigrain timestamps. + */ +static inline struct timespec64 ctime_peek(const struct inode *inode) +{ + struct timespec64 ctime; + + ctime.tv_sec = inode->i_ctime.tv_sec; + ctime.tv_nsec = ctime_nsec_peek(inode); + + return ctime; +} + extern struct dentry *mount_bdev(struct file_system_type *fs_type, int flags, const char *dev_name, void *data, int (*fill_super)(struct super_block *, void *, int)); @@ -2857,6 +2919,8 @@ extern void page_put_link(void *); extern int page_symlink(struct inode *inode, const char *symname, int len); extern const struct inode_operations page_symlink_inode_operations; extern void kfree_link(void *); +void fill_multigrain_cmtime(u32 request_mask, struct inode *inode, + struct kstat *stat); void generic_fillattr(struct mnt_idmap *, u32, struct inode *, struct kstat *); void generic_fill_statx_attr(struct inode *inode, struct kstat *stat); extern int vfs_getattr_nosec(const struct path *, struct kstat *, u32, unsigned int); From patchwork Thu May 18 11:47:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 13246631 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 38AECC7EE30 for ; Thu, 18 May 2023 11:47:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C842F280003; Thu, 18 May 2023 07:47:57 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C3425280001; Thu, 18 May 2023 07:47:57 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AFB46280003; Thu, 18 May 2023 07:47:57 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id A1E35280001 for ; Thu, 18 May 2023 07:47:57 -0400 (EDT) Received: from smtpin12.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 65183AE12F for ; Thu, 18 May 2023 11:47:57 +0000 (UTC) X-FDA: 80803201794.12.9597FE2 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf21.hostedemail.com (Postfix) with ESMTP id B73C21C0007 for ; Thu, 18 May 2023 11:47:55 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=NQnkqGwC; spf=pass (imf21.hostedemail.com: domain of jlayton@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=jlayton@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1684410475; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=bvRugfaoSNQhF0ArW4XDGYXPgUlcymLeIqb3NM03rJw=; b=4gplsY4XzdvN57P0AwNXkYnDqlbX3OeaCrOw9XX2Bk6qKTiN/cIK9jX2QBKJ+j41UP+zQ4 Ie4WpHZ0xhLy94n72RIHzFXgY1QeoL31B5SsBL/od6PJJIvNOU8Lkr+vFQXcjyMP0Nnh4y bEuj82/69VXVeIvn/mWD55kCm+f/Izg= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=NQnkqGwC; spf=pass (imf21.hostedemail.com: domain of jlayton@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=jlayton@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684410475; a=rsa-sha256; cv=none; b=ZY3h6O3wrBBtB6bNIMBJZtz62HNe13+mB2O3bGhW1PPrFzk5SAcBTlSHEj2lXSnnp/H/Qm pDtyFRxz5IxDaho0J4FEIvNb1NMBuJ7NBo97MmbVdmd4F+iTu323a3UcK0GV+HIQ8lNYAf FZTR/m+2Co742nD15tyJlozAecPuv7g= 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 C318C64EC0; Thu, 18 May 2023 11:47:54 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 3F80EC433AA; Thu, 18 May 2023 11:47:52 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1684410474; bh=+ZM+liB0nOC40xQZQZ86xt6fi25JWXDh676GI1IVOtU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=NQnkqGwCCO7vGJ/Yl4qfYfKxifiKbMPWX2nYexu/UCvc1oIUUfQVuW6udPdzJ1m4k rWMY0fCaeAJOQI+qqhPBhxIV7gfUu9Ylg2eSEobnGKZW88ySXBwsucmW1y8Y+nFlfR 6tVEWNilLHOCnTpp/KdfqHoVSXvdllBWDnVe9kNrF2FvgYteYmwPND+Z+1pY9ZmQ2e iyCImFsXgFxeUDph74sSt9m0qYQnTUhLuWqAY/TFIwQnnTp/OT8BBkqPnjwa96LF+q MqMJYD6fBTddkIFRXAdvcgr6RmUENlMzwsFZYCbPjxDR9haBrGDkiCc3Hs4jGSiG4s 1NqFQlisf4yPQ== From: Jeff Layton To: Alexander Viro , Christian Brauner , "Darrick J. Wong" , Hugh Dickins , Andrew Morton , Dave Chinner , Chuck Lever Cc: Jan Kara , Amir Goldstein , David Howells , Neil Brown , Matthew Wilcox , Andreas Dilger , Theodore T'so , Chris Mason , Josef Bacik , David Sterba , Namjae Jeon , Steve French , Sergey Senozhatsky , Tom Talpey , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-ext4@vger.kernel.org, linux-mm@kvack.org, linux-nfs@vger.kernel.org, linux-cifs@vger.kernel.org Subject: [PATCH v4 3/9] overlayfs: allow it to handle multigrain timestamps Date: Thu, 18 May 2023 07:47:36 -0400 Message-Id: <20230518114742.128950-4-jlayton@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230518114742.128950-1-jlayton@kernel.org> References: <20230518114742.128950-1-jlayton@kernel.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: B73C21C0007 X-Stat-Signature: f3y4jhe179s6gyi8cxfjb8i41f57tk4x X-HE-Tag: 1684410475-591074 X-HE-Meta: U2FsdGVkX1/pqewLQbp0A+hN1bI6hvNiW2kZ93l36Gzydf4TSjnhCujuDLnzDVMqWn2NQZU+9y17AYUHY8DmoVSeXJy5piJYysvHiRjYyXOBfwhtUvLilligfv5lhdQlWcvQH6kp58rCs7B8ikBQ7ZpJX8EXIQuXb3Q/SQkBiVkwwzYPuKfj+T3D6IOzfdtBAqMJOND3fuNU1GfBsO9pJXZ1ZJXhsDsnSSD/Q8tz8FUEilMDqtMxzbAKBPKw/BlP4D8MXvWlwCHX4WAobUoeHAbZKZvrX4OO+ZgAD2ziq3Gvyu3AS/Wzu0gOtVsKq1yB+h3k6b/JJcQ9zynXVpiudDr8w3qVvY2BM93GiNgIB0o+9GAwOdCcPIWxinpl0h99XYCIrazp1gbu2FznP69gFazCMdt+wbYN5knsYZImpL6mXkyl8rpLmZK7SNyaC5cVRhkxvs7mDT+2k4JBEfy3OO4+WK/ofjw17uK8vZSiukWkeaIaNhaAOYiyvZmUlLGfbUJrMXoIqp4MNYvv0Crv1aD50dqJKm0NRzG6FU8A7/EBWtYuL1qd8F2mttyotTQQf/q/FE4N5HqzG5Y66Plswv8i6NTt4oCwquzkOq1gz+tGtt2220iZZ6a73VRGGHzineSsYEZL0wmcBBfhMOeTbuu+Of19NDXyxU0StsTHd3Bw9oivzGUOKyZHfuMfE4d+x2hnxSnghVe7mqKs6BvUI2QRJ9GV+J4QadrAJvkmk7Fmc34mpzl0WUueSvpYWE41p5iFQbeuhih17pyaqc/dQ0oX4mjrtISbdSzoegCJWAd2vHxJGzN/Y8b4vhErLaIg1SWwDkrBbaXwE+Ufyi/u8zbcga1ucJDX0ua/E0TU78URBaIEldZdl5mQj3rydEV3Jq+KP8PjhWxhYZyQRWpv4Ow513S+ZCA35CgFhO+CG9Ty+4ykyFelXMOjYf7DDGUrkQt8TXPvxrUZ3oRuiEv tK/ZLmVZ /QoMkxm6JYw12HlFGhRvQXDZLan54Ie7c30xzcBy8kY/4O3zT3kHg59Y9k5QccFAsXZXQYjsF0NuL0RoKB7up6Xa2uYh2BPt59c8681bbgOAHDYffVfOhQpgbNmC6Nx5ftGWbZxLTSIcXHDdBRR7fsgWEO2R1yoiW5h3cHL4avaBq6y8aN8WKOP2B9NgYHV6w13Hotdmg5oeHDzi0lV0xaX/TRIYJX8eHqgIuXhqEsttuM6H5AJNnsSGo1Uz7y6wxt9pwbE7dQOpzu2YP4r8s+5rndPAWV6FfLU51wKsYHgVsFMLl4QLftF2MKwzR1OOBgYDOimihP3H387KSrXvlDBZ4dQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Ensure that we strip off the I_CTIME_QUERIED bit when copying up. Signed-off-by: Jeff Layton --- fs/overlayfs/file.c | 7 +++++-- fs/overlayfs/util.c | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/fs/overlayfs/file.c b/fs/overlayfs/file.c index 7c04f033aadd..cad715df8c4e 100644 --- a/fs/overlayfs/file.c +++ b/fs/overlayfs/file.c @@ -222,6 +222,7 @@ static loff_t ovl_llseek(struct file *file, loff_t offset, int whence) static void ovl_file_accessed(struct file *file) { struct inode *inode, *upperinode; + struct timespec64 ctime, uctime; if (file->f_flags & O_NOATIME) return; @@ -232,10 +233,12 @@ static void ovl_file_accessed(struct file *file) if (!upperinode) return; + ctime = ctime_peek(inode); + uctime = ctime_peek(upperinode); if ((!timespec64_equal(&inode->i_mtime, &upperinode->i_mtime) || - !timespec64_equal(&inode->i_ctime, &upperinode->i_ctime))) { + !timespec64_equal(&ctime, &uctime))) { inode->i_mtime = upperinode->i_mtime; - inode->i_ctime = upperinode->i_ctime; + inode->i_ctime = uctime; } touch_atime(&file->f_path); diff --git a/fs/overlayfs/util.c b/fs/overlayfs/util.c index 923d66d131c1..f4f9d7e189ef 100644 --- a/fs/overlayfs/util.c +++ b/fs/overlayfs/util.c @@ -1117,6 +1117,6 @@ void ovl_copyattr(struct inode *inode) inode->i_mode = realinode->i_mode; inode->i_atime = realinode->i_atime; inode->i_mtime = realinode->i_mtime; - inode->i_ctime = realinode->i_ctime; + inode->i_ctime = ctime_peek(realinode); i_size_write(inode, i_size_read(realinode)); } From patchwork Thu May 18 11:47:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 13246632 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 27795C7EE2E for ; Thu, 18 May 2023 11:48:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AD5D6280005; Thu, 18 May 2023 07:48:00 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A8544280001; Thu, 18 May 2023 07:48:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 94DAB280005; Thu, 18 May 2023 07:48:00 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 88576280001 for ; Thu, 18 May 2023 07:48:00 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 5433D1C75EF for ; Thu, 18 May 2023 11:48:00 +0000 (UTC) X-FDA: 80803201920.16.0DB5E8D Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf30.hostedemail.com (Postfix) with ESMTP id A2B3880010 for ; Thu, 18 May 2023 11:47:58 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=E4LAb0nI; spf=pass (imf30.hostedemail.com: domain of jlayton@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=jlayton@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1684410478; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=E45ftUt+La85JZW631KM+z9pPgcCPE3ssg5Uuu6Ne3s=; b=X0TeSpsE1QhRXBpafapo8BInBljb+Ap1gFzqzRuLXPfgg3SJRl/lzoyiKwPmstxIEyx/mz lcMZceK23RKR1b3ftNPy0XItr5YsxQysKsA1AnP7RaEDzSdB0T7iVkWVN456EtLqv4Q9yk UfrIFZ2MWFRl0fwwkH5h7/O2elEe7Tk= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684410478; a=rsa-sha256; cv=none; b=UUa9drpQPIaIUUdZImfemJc520AXg5QfjlV34XOMdDl+aMbUqgJT0KIgFAR009kv/Q7Pxk J+wNO0Z3Y+fj2BcjZYnW6tetMZB9yDDl9Q2fmzwxqN++4ZYgiaQxPukcvO5IjfIf3WGjy4 +zdaqPhwqkp/okkAaZushovUnFZTRf0= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=E4LAb0nI; spf=pass (imf30.hostedemail.com: domain of jlayton@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=jlayton@kernel.org; dmarc=pass (policy=none) header.from=kernel.org 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 C60BC64E9D; Thu, 18 May 2023 11:47:57 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D0DD8C433A0; Thu, 18 May 2023 11:47:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1684410477; bh=en20+kwYIb+rQx+Bs8McKeHFRgrQ8XEHcOk9MVmU7iY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=E4LAb0nIr9avuLF6bnhNgC2cRv8n+Y1r1x0zPOZeGu+bmo0SCl5MMh4ksQB9eom5S CEPIxNX0JYB+XiFpj7TAYcNwACJZ0aG2sE7DrRd8kZiFZMB+MkW7P2Gk7W1du57+Tx BMsp9pM/wLI2kWZmup7SdZvctIT91uMob/wvifDVVh88XCAtTac7bHJkRuxHrr8ZN2 jrlGYU74z7oZ6tQP5ksyrgyn3awO7cIF7AtozH7MMlARxYEikZaguKB2DTP6z6xi6M Wm8fgVO2JxxmGPrUz5pDiYBZcTOycshUgvJF3oY9yDGZ5hzJhsgwGrWv6Kl3g/82aL D7C397+DhZIWQ== From: Jeff Layton To: Alexander Viro , Christian Brauner , "Darrick J. Wong" , Hugh Dickins , Andrew Morton , Dave Chinner , Chuck Lever Cc: Jan Kara , Amir Goldstein , David Howells , Neil Brown , Matthew Wilcox , Andreas Dilger , Theodore T'so , Chris Mason , Josef Bacik , David Sterba , Namjae Jeon , Steve French , Sergey Senozhatsky , Tom Talpey , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-ext4@vger.kernel.org, linux-mm@kvack.org, linux-nfs@vger.kernel.org, linux-cifs@vger.kernel.org Subject: [PATCH v4 4/9] nfsd: ensure we use ctime_peek to grab the inode->i_ctime Date: Thu, 18 May 2023 07:47:37 -0400 Message-Id: <20230518114742.128950-5-jlayton@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230518114742.128950-1-jlayton@kernel.org> References: <20230518114742.128950-1-jlayton@kernel.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: A2B3880010 X-Stat-Signature: ek7y46qp3tsonmthf89ztdd4zsyiu9xc X-Rspam-User: X-Rspamd-Server: rspam09 X-HE-Tag: 1684410478-789965 X-HE-Meta: U2FsdGVkX19Qlo6iH8rf0bnZTU3kJmpJgBCiCmPAilzaZarvHoexDlcLRqmJ9KHLhLsRDYNXTp6dNrgrT3Qil6y1+Sea8ClwdCAL0j2KLDIezFcgXMB6595FpK6uDla+Whg9iAdy1734mgJQapbRCESyY9lvOOSdisLDLlzO1sMrDMJp4rSZfodTRsGFJqOFZoikmEHnYI4Sk8gh0QfIE1PVxJrHSXdusJN1zqWz+LV4zhm4mKQagE/3/6bIVCKxuD5MEdw9z+NgjJrSbNZxFvLqf13H93EYoB5zxyECDK3gRPAo82wxCoQCRa1/qG9qaLsuBK/y4oe4mHVSUdHgNXK6j8zgdprBpXkH6QcscZ8oElFrQznqfeDkdsC4+8F1UikIJ//ow5D/DSTg3GbdpsxnhmGE8rCwW+7lvxGrnQOXofrazAWZkZIqg3QuBYI/AxLJUTOstoml1pmpzKB7YWxaY9pkk6TfvOXMBCXjIOdG72yyWXIF7pMAorNHqBbnWhIqbwIB83OoSKLVTNMlTt5ds5wMUz1Fz3SQWZjJ7ZkIVKn8Ig/kGFovPwW7u7aFm4HVMTjiLwl0jGplHL+zM++04g1474RJm6NyZ38K3INBVRx74mYRMERXbymBLqoIgKvXdC90Mzt+UFDSQe8wjbDL9h0lm1BqbX40FcMU5louelC0tcjIOT+rkCoJn9wNYLmf8AbL4fOMiM8suH+5xNyrfcSLIxzTYb+cR6rhChbHiL18Hnflt1EqflGd9uUenOFcSXLcW9gV4ijWyuqhBHdBhkH6ApZPBx2sxLAgOomgll/Bzy9ghxHUJ64bhGaCtNqqlrKZ2ttxTHb2yy08BLhhQaGhAuCMGEsFKR0RGn4qyVdUVntlI450DhoetTdbk2p8UW96T7vFaADwyKCqMOstjezGGVC7KGn3Id+Hrtuh39ESylm3M3dLY/ye2A5yLamwVa8LHYhliec2/+R po6HJiM7 rgHHcoRXn80weRyNrAxnwW6KuD9CFnp3SoUDsjTa1oujp8sdW2uvoEWFk4KD5zG++uhUXEfZ+ylq7weZw3PWWxlpe3rf6TK+PZ/uMBx3+BIWgkZa32fz/B2IbViyXK11loQgC2Aq87KUSptrieWeaJVrjjxDN51EZAvOxcorJ7B14k1q0L5I1Ew20iu4ot1QOdHe+2NIU/Jvv36tz7TurEX+EEVQpOF/BRUOwqaZxWBDG3b5WalceHZlGn0D+x2IBqyb6d+4lnpjpIE7tjFUfYDbBjcpV+tObzaZ16Ar66migt/BPAuuZZXSY/TAC0JuPsCACVaE+8G7jDFb5TiUqXya5VUevPSQFBaOwe+qWiD2j0F9KBpYJ9LsXdH2k9EzNdAZS X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: If getattr fails, then nfsd can end up scraping the time values directly out of the inode for pre and post-op attrs. This may or may not be the right thing to do, but for now make it at least use ctime_peek in this situation to ensure that the QUERIED flag is masked. Signed-off-by: Jeff Layton --- fs/nfsd/nfsfh.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/fs/nfsd/nfsfh.c b/fs/nfsd/nfsfh.c index ccd8485fee04..f053cf20dd8a 100644 --- a/fs/nfsd/nfsfh.c +++ b/fs/nfsd/nfsfh.c @@ -624,9 +624,14 @@ void fh_fill_pre_attrs(struct svc_fh *fhp) inode = d_inode(fhp->fh_dentry); err = fh_getattr(fhp, &stat); if (err) { - /* Grab the times from inode anyway */ + /* + * Grab the times from inode anyway. + * + * FIXME: is this the right thing to do? Or should we just + * not send pre and post-op attrs in this case? + */ stat.mtime = inode->i_mtime; - stat.ctime = inode->i_ctime; + stat.ctime = ctime_peek(inode); stat.size = inode->i_size; if (v4 && IS_I_VERSION(inode)) { stat.change_cookie = inode_query_iversion(inode); @@ -662,7 +667,7 @@ void fh_fill_post_attrs(struct svc_fh *fhp) err = fh_getattr(fhp, &fhp->fh_post_attr); if (err) { fhp->fh_post_saved = false; - fhp->fh_post_attr.ctime = inode->i_ctime; + fhp->fh_post_attr.ctime = ctime_peek(inode); if (v4 && IS_I_VERSION(inode)) { fhp->fh_post_attr.change_cookie = inode_query_iversion(inode); fhp->fh_post_attr.result_mask |= STATX_CHANGE_COOKIE; From patchwork Thu May 18 11:47:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 13246633 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id BCD29C77B7A for ; Thu, 18 May 2023 11:48:03 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 5F34F280008; Thu, 18 May 2023 07:48:03 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 57D5D280001; Thu, 18 May 2023 07:48:03 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 41DB7280008; Thu, 18 May 2023 07:48:03 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 326F1280001 for ; Thu, 18 May 2023 07:48:03 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id E7723C05D1 for ; Thu, 18 May 2023 11:48:02 +0000 (UTC) X-FDA: 80803202004.24.41AB718 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf24.hostedemail.com (Postfix) with ESMTP id 46BBE180011 for ; Thu, 18 May 2023 11:48:01 +0000 (UTC) Authentication-Results: imf24.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=pv9NSU1e; spf=pass (imf24.hostedemail.com: domain of jlayton@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=jlayton@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684410481; a=rsa-sha256; cv=none; b=Ie3VYjqLdMK8i04lHhkumpU3J0EGqKj0D957IOxU1rHqdJlVtzZ+Ak/Zu9jRAVaFpzFHhZ NNFmOPOWidLGUNM7Xmqvq5GM7SQ0RVyT6JQTRbtf9eGfeaoQ7FzqOhUFmY+Jh4BQBYe9Gi vQ1Nm2C2KdMzKkWJVks7vNu6x36eD7k= ARC-Authentication-Results: i=1; imf24.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=pv9NSU1e; spf=pass (imf24.hostedemail.com: domain of jlayton@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=jlayton@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1684410481; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=IJgQ18FYI+xs9FDD5lKBcw8Ak01NNxhHvPgnEm2MRog=; b=GpXSJ8ZDdoO9nu1jIuT+mI5GHueTe6r9BqJp3tPD6Rs2ZBd62aeyJrTuc81SqTJjJb9iee SGdkVD5EhCYRt3PtWEInlGqIBy4yk/9gRbdSNH4As9gONhPTYMhtO9MkQTlK2pPBr5B8FF rZIkBtXoLcFU4ZMidPZcQeOm+dKYxdQ= 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 6837A64ED9; Thu, 18 May 2023 11:48:00 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 77283C433A1; Thu, 18 May 2023 11:47:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1684410479; bh=wTAnemCjoVMdBCyfBm7Caga87wrGLLdiUMBAcBipLM4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pv9NSU1eFgIMWnOukE0vFtlSJhvEzj0TZb3+gBxSbV4qnUliBKBhdy87cs9IAXHTQ 1dMxyJ0MCSwcxOHa0adG7hzskt16qlLg6oamqDb76RXfskYjsZM5o0JxuTo/WFc897 VcFtzIuIMOGA47SH7EdySeITog2TKUoLRdLffRTpA7WrjOcjjvIVsAT/189C9RgPwh YJ2blX4n6Pm7QyDIP3ewgeAI6b3YJEbz4lUXoiFKczZaUeQvD+QwwzqUFJd6f3EYkC +6ZEtMgGqziZq7hwGRaYwIsAUtBQD/dTP/9CtCnpQcrkIjmmiHoBVgsfu4UY3Vycc5 mjFdNmAgburFQ== From: Jeff Layton To: Alexander Viro , Christian Brauner , "Darrick J. Wong" , Hugh Dickins , Andrew Morton , Dave Chinner , Chuck Lever Cc: Jan Kara , Amir Goldstein , David Howells , Neil Brown , Matthew Wilcox , Andreas Dilger , Theodore T'so , Chris Mason , Josef Bacik , David Sterba , Namjae Jeon , Steve French , Sergey Senozhatsky , Tom Talpey , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-ext4@vger.kernel.org, linux-mm@kvack.org, linux-nfs@vger.kernel.org, linux-cifs@vger.kernel.org Subject: [PATCH v4 5/9] ksmbd: use ctime_peek to grab the ctime out of the inode Date: Thu, 18 May 2023 07:47:38 -0400 Message-Id: <20230518114742.128950-6-jlayton@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230518114742.128950-1-jlayton@kernel.org> References: <20230518114742.128950-1-jlayton@kernel.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: 46BBE180011 X-Stat-Signature: 5gd9ffehd873jy69q9fonrtynj8yzr8h X-HE-Tag: 1684410481-126335 X-HE-Meta: U2FsdGVkX1+B+doR0NbjgvZ6YPetxusFoIijfj73fnaaUg1d3qfw6V/uwMBX+TVDSy2DrZt+cfNYsc62nG7brAg2H59GqmFX0XTjbgkS4ozzbHXkszD2oa1r/M+QMSrrpR/tPZzTYqlzvnKi6aCYgW9gYS9WnVXZV8qBH3/XRoa5LSXGxYKI1bZTyfFW33WyhO5hQA7dUHIFBqXYw9KylngxnL2OG5FWhcVm09bO6kYyfPXt4FpuAT9ZElMluhY+EHI4vwLPR/lZwL4sIMuDinTGbVRTeL0Gbd7VMHoRBMAcy5bry9fSzHwf5f7+A8RuW9PPqobtDyx2nfp4mve5NqnD3Zc0jOwW4NMF8QG+jI/IL9tZ8hGSnEmkgjQEmAtU/lRrb4n0d2KhHJdjX80KG97RYwF/uiTZMR0LPwiS8qglKzHLoYNOc2udG8SpEef4Hohgp3U9/VQTUDUjsEmFWhqqqL0ArFYAGWZjyioOdNjwpt+ZDxsCPsu5/ySL2Agg+21CMUj5InnRPa5LHddi/MASbfiSjuEVGq5bWx3j3ugSOHcyg1KOTz1VzQutDF7q09M8r6zcM9uuoRnK+P1ve09zL1wv50tSVcwiX5fXPYr18l0fYDJpcHv3kWzTMNUFFdIDMMcZX3w7geQIllrhOV/9irXcbGP6wTXwvK+6oCB3W7NVQPSMJ8SDq7ekLocMRn5bORV62TMO+eZwdfi0KUM3MEuNQeRpBcNAdy2SYJ18BANyxatTAgHeouKlIEjKYTeEmozPVvd3KuSFBMFwO31Mmu5qhSlBCP4MB50/c8hBjBFK01xbPnN1tpTO5ZD7N6/8h9sPFSsq/Nias2FFZm0xCawWCVC9JK6KehC4ZdxuIQDGA5FiwHWvs2MgC0B/7WvDny0hddbKDFM/FfHL03rHW9+29/9jtQI9+JYmJazUz+I3ASXJ7obmCqXvZbkoqS0Egq+1eJc24kCc5oe e7p1364S raY6b4wT4Qh0HHDHlIeIiSn1rp4XCvQWkF97bC2HdMMaOpMUeeqgvYNVqueFCp2vcAnLSGXaUwGmhSD74k/NYK0cH9+ieJo4/e4k7NW321VZH5oBtyWMzswPFf4cxkMuNw9oGlYEwXE4mHW14/Owcp2+db8/EY73Aqcfisp44rGmsju0lyIU9ika1A+BULrrxWA674b5hjpLqnKr1k87f6dk1TgWPdQryuG1TrR4ryp3RLNrHSsZRL7dTq5aGJ6fToW/Ea6834JX1B0MPxX+CFGQdOjEu1Sxn0Vo2RsJVRlx69CzE3ukg7oKf2WYWTzXPYDUVMhWgB78VmGWDEIXiYf7pkAdLNuFNBN5OjARtOPEw8c8wMYVIe1/q9qxEbNdE+E7S X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: This ensures that the flag is masked off in the result. Signed-off-by: Jeff Layton --- fs/ksmbd/smb2pdu.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fs/ksmbd/smb2pdu.c b/fs/ksmbd/smb2pdu.c index d39ddb344417..c33128570448 100644 --- a/fs/ksmbd/smb2pdu.c +++ b/fs/ksmbd/smb2pdu.c @@ -4745,7 +4745,7 @@ static int find_file_posix_info(struct smb2_query_info_rsp *rsp, file_info->LastAccessTime = cpu_to_le64(time); time = ksmbd_UnixTimeToNT(inode->i_mtime); file_info->LastWriteTime = cpu_to_le64(time); - time = ksmbd_UnixTimeToNT(inode->i_ctime); + time = ksmbd_UnixTimeToNT(ctime_peek(inode)); file_info->ChangeTime = cpu_to_le64(time); file_info->DosAttributes = fp->f_ci->m_fattr; file_info->Inode = cpu_to_le64(inode->i_ino); @@ -5386,7 +5386,7 @@ int smb2_close(struct ksmbd_work *work) rsp->LastAccessTime = cpu_to_le64(time); time = ksmbd_UnixTimeToNT(inode->i_mtime); rsp->LastWriteTime = cpu_to_le64(time); - time = ksmbd_UnixTimeToNT(inode->i_ctime); + time = ksmbd_UnixTimeToNT(ctime_peek(inode)); rsp->ChangeTime = cpu_to_le64(time); ksmbd_fd_put(work, fp); } else { @@ -5605,7 +5605,7 @@ static int set_file_basic_info(struct ksmbd_file *fp, if (file_info->ChangeTime) attrs.ia_ctime = ksmbd_NTtimeToUnix(file_info->ChangeTime); else - attrs.ia_ctime = inode->i_ctime; + attrs.ia_ctime = ctime_peek(inode); if (file_info->LastWriteTime) { attrs.ia_mtime = ksmbd_NTtimeToUnix(file_info->LastWriteTime); From patchwork Thu May 18 11:47:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 13246634 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 32A53C7EE22 for ; Thu, 18 May 2023 11:48:06 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C82FE28000A; Thu, 18 May 2023 07:48:05 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id C0DC7280001; Thu, 18 May 2023 07:48:05 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AD5D928000A; Thu, 18 May 2023 07:48:05 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 9B363280001 for ; Thu, 18 May 2023 07:48:05 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id 7364D407AA for ; Thu, 18 May 2023 11:48:05 +0000 (UTC) X-FDA: 80803202130.05.B7ED5AC Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf08.hostedemail.com (Postfix) with ESMTP id CB203160014 for ; Thu, 18 May 2023 11:48:03 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=RkTLJNDN; spf=pass (imf08.hostedemail.com: domain of jlayton@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=jlayton@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684410483; a=rsa-sha256; cv=none; b=O23MCpmxYKZlDe48q69pLpcKKsSrvFsqyuZiPG/d0Lh1/XQTgE8h6z9h/2JMHzxmbCfqAg XPKR3ZlxHdxAPcQKmkR7T4cFIkeqKN28MbeK6GX8rYeM3fTPFe4foOWY2Jr2NZjtgbY3ht OY1UcJWirFLusjOKgu9kygDseUpB/Gk= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=RkTLJNDN; spf=pass (imf08.hostedemail.com: domain of jlayton@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=jlayton@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1684410483; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=5P9g3pPBvkbeHxauxXwwHTnUA5TPE/AahrkPMw6r/FU=; b=AoHHHfgVGkSibNwLOejYx42Frei30FYrGur+bwInEUiJhO7UlADLMb8QrFGBl8h/d14k7T pEnnEF7IrrSLE7s45KtdQK+uPGtM7a3ZARXiJrDRvbdcMcsqZMUigUab9UJewEB/yriZRG QwKRGmFEOabgqHTVcCtJZjIlN1hpC3Y= 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 01E0B64ED6; Thu, 18 May 2023 11:48:03 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 13E0DC433A8; Thu, 18 May 2023 11:48:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1684410482; bh=8+fZEJKQ9cO5SVgMB2qO1XAAD7U35g4jCUBGVnN6KkQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=RkTLJNDNnDv/jhHbXE2CP7WNHaiIixKzHFGzRqROTOa7iwgnTbvZWcLXdq3poORnn n50CgeB7/YwrwJUEkbCk8zVTU6JrO23Skvl7vBQUU2AFFm5HVvnXyXmho4MVsJyUL1 zWUSudVSr+81Xd7URP6fUQdeaGhd5Rmo2fkitrKbKPLuHcGPMCedmpejICiuN2jJNh WvLJupsKyQTDsjHfhlZeHpV4uwY1nBiaRaKYhtAatsab0HiBd3H3hIzA8H3v9rrWK9 3h2/VjlzDkEWTsiuE9zwNF9BrKCBW1wFNuYsi0NQhb4vckXzyLfJSTAhxoQSRNQEZd OZtbDt/5GXBgQ== From: Jeff Layton To: Alexander Viro , Christian Brauner , "Darrick J. Wong" , Hugh Dickins , Andrew Morton , Dave Chinner , Chuck Lever Cc: Jan Kara , Amir Goldstein , David Howells , Neil Brown , Matthew Wilcox , Andreas Dilger , Theodore T'so , Chris Mason , Josef Bacik , David Sterba , Namjae Jeon , Steve French , Sergey Senozhatsky , Tom Talpey , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-ext4@vger.kernel.org, linux-mm@kvack.org, linux-nfs@vger.kernel.org, linux-cifs@vger.kernel.org Subject: [PATCH v4 6/9] tmpfs: add support for multigrain timestamps Date: Thu, 18 May 2023 07:47:39 -0400 Message-Id: <20230518114742.128950-7-jlayton@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230518114742.128950-1-jlayton@kernel.org> References: <20230518114742.128950-1-jlayton@kernel.org> MIME-Version: 1.0 X-Rspam-User: X-Stat-Signature: arp44qg945mhb1xcsz4mw1dqqy9xu1tf X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: CB203160014 X-HE-Tag: 1684410483-754918 X-HE-Meta: U2FsdGVkX1+uO8VFrDB9RWph9naqYB8DH+RdCSG0r/BULWf6IiUQWbn4bH4i+HRTAZ1NFqW/KPHNrSd+FOs7MWrHNrVvjPJv9Z5ZWZSbD2QmmyUx1nBJWF0MBvtFScAONdwI/mdBcXitHNhsvyMbty6NJQltaioyoV8jlnIRbDhNX+RSmAZHIFRVJhUOH3FL0VxQjkD/LJ4LRfrM6LarudvnU6+cUJmvQQxLb79loojZxD21/EqGIGiYMnTkHe8bioTE9IG5IxDLMEnKlbxB8zaGDbboRNAtVH1nqnbc3TPuZ+26kaDFzxU5mmMXMHVDDYCyQdF4UfUpfR1Yxdb+qEKaTHaDtGu1mBstsxpgt+uNZ4RrSeaiHJLYNtUDHMLS+MCbo31ce8fHTzrK81nbL1/eAa44T2HzCTevJapGazEMkEUyqAvcTgY3qHsW91bvtbv115CiEdXfGatgdzyOg7ExwY5lGQFD77uNNLy2tlig7Oy+Tc3Wkn36cnE/rpdCSQ8VJaQ75Ma09Y+Tx9mvHhU3J0SfS2cslQLsHjWSmjgRZYHKBmHJYVj1iGDR7EFh8SfyeVKs1SjY0/mm8al5GhWWJMpJizzQcwh2refVGyHJAEflXv6bWMuuShkDQJl1NR6yXYt5K1/LURGpLc8pgQ83aU5qSp9qzqyfiIqsPvGZjZA9sprdNHI2aGIvbptfe/w4pBXWe7dTnVsltpfVT+tbRCZ8izwzNEfvwsT5QtwmAmV3Y0FC+8zQ8IimHTRw0gwMthAUJaHppbr86MgyPYr1a2jxtkPyQu5GxZ+82n+cTcAivqf41flCktaeBAeVU25xx8yAGdSdSxHQchOm4+OX0wDNtW2U09IZ9vwEm6tq/nQhhs9TUFQZbJlgXWg3ZXBejdPd6Zdg7qRYUYtNe8+JvQZf3OhuS5V5kfwcmgiPaKzL3n4nLe6lFrx33pFjVDvn0os4Ckp8XUDHCKa 44HhXau5 gHJSb/PIPpw8UVfsvh3S3SKnPJvtjq7ooAmEnKjy0wbxBgPKzR0AejvIbQNzxVBKhDExzVIq/onOyduRFieElDAHicQZYUBnmtSDo0g6JVeSd2A/lWsbM6pxSru+6lC1tzL/+Vp6kRYp4iph8i3btYCInbwx2YoN/OXJybc4QbUYIhITPw6D3CpMqAfwoFfQrIfV4+JqBtldAiOD3/yY1PSKCiKBqIgOeJJpK+A/Od7tSdC0US9i/Zi3b+VO0RN3/+UKkspAha+rCh99rc31lrTW1lqX1rQM6lXv5UDu1N/TkSvD4U6/69FicDZ7IGve4o4kspElOU/1guVW2EAYxP3YUyQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Signed-off-by: Jeff Layton --- mm/shmem.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/shmem.c b/mm/shmem.c index 8208d4f85dff..94ea3086eacc 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -4085,7 +4085,7 @@ static struct file_system_type shmem_fs_type = { #endif .kill_sb = kill_litter_super, #ifdef CONFIG_SHMEM - .fs_flags = FS_USERNS_MOUNT | FS_ALLOW_IDMAP, + .fs_flags = FS_USERNS_MOUNT | FS_ALLOW_IDMAP | FS_MULTIGRAIN_TS, #else .fs_flags = FS_USERNS_MOUNT, #endif From patchwork Thu May 18 11:47:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 13246635 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id F1F9BC77B7A for ; Thu, 18 May 2023 11:48:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 95035900004; Thu, 18 May 2023 07:48:08 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8FF9E280001; Thu, 18 May 2023 07:48:08 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 79FA3900006; Thu, 18 May 2023 07:48:08 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 6BC9B900004 for ; Thu, 18 May 2023 07:48:08 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 474421C6D4A for ; Thu, 18 May 2023 11:48:08 +0000 (UTC) X-FDA: 80803202256.14.ADA3372 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf14.hostedemail.com (Postfix) with ESMTP id 8528110000C for ; Thu, 18 May 2023 11:48:06 +0000 (UTC) Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="sBtX/DS8"; spf=pass (imf14.hostedemail.com: domain of jlayton@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=jlayton@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684410486; a=rsa-sha256; cv=none; b=r6nhyvLMnC6BVuvnxrk4jPl58WD8vn+GRIfPagkBDIEZQHXbCTD2pKJJpG0cM40GkpRvjE Gc17Gy5BzYmArwhsd3qVw2RYAMag9jOlL0y8jVP+Dro/Dj/5x957L47BpkzD9tIL6ix9B4 IkyV8w2TSRItT04MJsCX5p0V6vbGlMo= ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b="sBtX/DS8"; spf=pass (imf14.hostedemail.com: domain of jlayton@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=jlayton@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1684410486; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=wC97rnTGhU08Xi36MCKHDB64Jn4BbrMStcM5esdGwCA=; b=ZeV7TOLRBPt34kcff7/ZlFuiM2h3mFOPc76ntQm8yHnJ9izc8LcM0GfsodcFgscH0JUbSi 0Df0RWteRziXbKtqwuW3l5K3GVeh/wF5x2PJeEMGOiZf9mPbOZnQy0y/ZfRmOjIVz8jgBE thK08A9gfmmIBmbyfamuEEtethOteXc= 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 9ABC364ED7; Thu, 18 May 2023 11:48:05 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A9BF6C433A4; Thu, 18 May 2023 11:48:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1684410485; bh=ygTtM/LLLrcVV+TnSxcIj03jHvShAv8O7IAKtsJLgdY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sBtX/DS8qpYR222xc7Siz+3XNG6alHqDdMu7MV+26Qjmd8IJFQ+qaydwfuMFOhuA1 KxXP0esLbNeifgJdpeFxiv1fQH0DPzRx86DlXW3J17VzulWVHzz1r9Xuka4FGPuCmb JOeUMIm1tq3Bdh0lGCBGuxlMHWAfk3jBqfP0Ecs37r44cPoi09hsgmgYKI4FU7ux4P wsAI1c72iO7FPaRPhfxstBsz0LfFCNhjvpMne5sFcc624+ud6oPFpZriopJ7uc5VAa eIK/RQkcw/HvwoOAzexj4FMO/EpqE/41/V6io7aZYlB5/UlGLMmjIUEmb8l6WnW/TA OZpkiIuGtUXCw== From: Jeff Layton To: Alexander Viro , Christian Brauner , "Darrick J. Wong" , Hugh Dickins , Andrew Morton , Dave Chinner , Chuck Lever Cc: Jan Kara , Amir Goldstein , David Howells , Neil Brown , Matthew Wilcox , Andreas Dilger , Theodore T'so , Chris Mason , Josef Bacik , David Sterba , Namjae Jeon , Steve French , Sergey Senozhatsky , Tom Talpey , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-ext4@vger.kernel.org, linux-mm@kvack.org, linux-nfs@vger.kernel.org, linux-cifs@vger.kernel.org Subject: [PATCH v4 7/9] xfs: switch to multigrain timestamps Date: Thu, 18 May 2023 07:47:40 -0400 Message-Id: <20230518114742.128950-8-jlayton@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230518114742.128950-1-jlayton@kernel.org> References: <20230518114742.128950-1-jlayton@kernel.org> MIME-Version: 1.0 X-Rspam-User: X-Stat-Signature: y1aizc3zdccuj44bxgb5dqp884ubwtkt X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 8528110000C X-HE-Tag: 1684410486-365435 X-HE-Meta: U2FsdGVkX1/OEmTK8LGPBaQ6vE42VKJHZVMy0HuVeK44EdaB6h3QUHe8EVZwbD5jNPAjYGjdC/cAIn/VPPMrFdJG1On9ShSq3gg0T+5ZW/j2HSoKRkcGqhDRqlqsyn+5ENtHu8py51u7ArlLKYt5/bKVVb89nLHFFgunCvu1LEmGG9k0l8y+eDWQdMIdlyK5Uw0OOaYSLfYyFnUiQqzwQ1HuBSK936kzsw8OB5nOynCEWxMMRB+NLjWZGZpnSd630kdR8kAqoKydOuGm80gfUyVl7cBbAcP4qYK+W6N+28eb3voklQ6CG22gqs9JjU/PZHbSd60+crEv2S3+zouUtR8x1FSszxvUzS0IZcB86A6HGIif+EuWq35IVNKOwfv4NFrimIVHSL6jX6JK1eYf/uN9V8XnGbbim/LPsg1M2H3lnYlspANJxDrHuxnkWZ89up3jmlMh28Mp+7rvB3C2MZFK1sKeHLw8tZ8Pa3VUzRI6SC/6gchShNQJWE9KjWDArSgcSkVWJvqo+E0Bme3GKLgNDF0uEbD5EDPGL1RN9fQs3NU1U9Bgmhbzu88wRcvzwqhYrsbWmQO1qlIWvoH2Lo0FRv/Z+53VXSF6EjfwTGicrqd3seW7EXT9lzg5+ea0EKLnj0mn0UBkl7PehHngsBdoalTzlCeiMsV8xf1q/V7aB1QFPpope6/tpsNgWAHJybDP07IQoVqTqo18/lH8ZBrbk0eQhF2cfRLemW7PW853lH1giYbQ6iH9QjJfm3Zt1xyW6Xu5J1yHtr8aw2JHZulFrlpIJrLvtB+78yEtcBJor1edMewvAIsl9NEQXDbbhFy7k0Lt3gP+cXZ93oew8jzLd5qx7S+YwiXboMsxjDR9s2SSEb1r66B/CXDmwv3zii7HVw/5vCtuQy1D+ba5SojLuLZWPq8VNe9EqUV0bD1sHQjpsqj+0ZlbK2BlqyZhWAtKKPL6GwkW1IeQTpY hwNkbpUi O2J2pzrVfboShlW8gQHDCwBbZu5RFqfO7XFyRBn28qy3vNhd290U3ZJzsK7JXyDcYuPgZGXW/86+yJA8EkIpRm+Mj1OG/60U5rVrDOP+jnFpvU7rALwU6HoB3h9Y3pDXmac5wRsDN98lFFJ0f9U7MbBIbebLYLKbUntBOBfbjI34OuAlkvgKx/Tq5vfZui0z6MFwmaCHt3BALPE4coIol8TfrapUJt4eigW4w0g6F9CB8kglXIfV5FSfWMuRuJOlLuJLHptcViKzycK9wep92OpZx+KmIk0qVG74hScHkO1CJwmInPVAMkWfBapqVVRmQ7IbpSB5J4Ky802M9ginLxSm+TQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Signed-off-by: Jeff Layton --- fs/xfs/libxfs/xfs_inode_buf.c | 2 +- fs/xfs/xfs_inode_item.c | 2 +- fs/xfs/xfs_iops.c | 4 ++-- fs/xfs/xfs_super.c | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/fs/xfs/libxfs/xfs_inode_buf.c b/fs/xfs/libxfs/xfs_inode_buf.c index 758aacd8166b..c29e961fac34 100644 --- a/fs/xfs/libxfs/xfs_inode_buf.c +++ b/fs/xfs/libxfs/xfs_inode_buf.c @@ -316,7 +316,7 @@ xfs_inode_to_disk( to->di_atime = xfs_inode_to_disk_ts(ip, inode->i_atime); to->di_mtime = xfs_inode_to_disk_ts(ip, inode->i_mtime); - to->di_ctime = xfs_inode_to_disk_ts(ip, inode->i_ctime); + to->di_ctime = xfs_inode_to_disk_ts(ip, ctime_peek(inode)); to->di_nlink = cpu_to_be32(inode->i_nlink); to->di_gen = cpu_to_be32(inode->i_generation); to->di_mode = cpu_to_be16(inode->i_mode); diff --git a/fs/xfs/xfs_inode_item.c b/fs/xfs/xfs_inode_item.c index ca2941ab6cbc..018f187387f0 100644 --- a/fs/xfs/xfs_inode_item.c +++ b/fs/xfs/xfs_inode_item.c @@ -381,7 +381,7 @@ xfs_inode_to_log_dinode( memset(to->di_pad3, 0, sizeof(to->di_pad3)); to->di_atime = xfs_inode_to_log_dinode_ts(ip, inode->i_atime); to->di_mtime = xfs_inode_to_log_dinode_ts(ip, inode->i_mtime); - to->di_ctime = xfs_inode_to_log_dinode_ts(ip, inode->i_ctime); + to->di_ctime = xfs_inode_to_log_dinode_ts(ip, ctime_peek(inode)); to->di_nlink = inode->i_nlink; to->di_gen = inode->i_generation; to->di_mode = inode->i_mode; diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index 24718adb3c16..f101b543a33f 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c @@ -573,10 +573,10 @@ xfs_vn_getattr( stat->gid = vfsgid_into_kgid(vfsgid); stat->ino = ip->i_ino; stat->atime = inode->i_atime; - stat->mtime = inode->i_mtime; - stat->ctime = inode->i_ctime; stat->blocks = XFS_FSB_TO_BB(mp, ip->i_nblocks + ip->i_delayed_blks); + fill_multigrain_cmtime(request_mask, inode, stat); + if (xfs_has_v3inodes(mp)) { if (request_mask & STATX_BTIME) { stat->result_mask |= STATX_BTIME; diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c index 7e706255f165..71c04cec974b 100644 --- a/fs/xfs/xfs_super.c +++ b/fs/xfs/xfs_super.c @@ -1992,7 +1992,7 @@ static struct file_system_type xfs_fs_type = { .init_fs_context = xfs_init_fs_context, .parameters = xfs_fs_parameters, .kill_sb = kill_block_super, - .fs_flags = FS_REQUIRES_DEV | FS_ALLOW_IDMAP, + .fs_flags = FS_REQUIRES_DEV | FS_ALLOW_IDMAP | FS_MULTIGRAIN_TS, }; MODULE_ALIAS_FS("xfs"); From patchwork Thu May 18 11:47:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 13246636 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id A62B0C7EE22 for ; Thu, 18 May 2023 11:48:11 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3F91D900003; Thu, 18 May 2023 07:48:11 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 3A819280001; Thu, 18 May 2023 07:48:11 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 27020900006; Thu, 18 May 2023 07:48:11 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 1A160900003 for ; Thu, 18 May 2023 07:48:11 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id CA2C71A07B8 for ; Thu, 18 May 2023 11:48:10 +0000 (UTC) X-FDA: 80803202340.25.4BC58D3 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf22.hostedemail.com (Postfix) with ESMTP id 086B1C0009 for ; Thu, 18 May 2023 11:48:08 +0000 (UTC) Authentication-Results: imf22.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=bzkIxbhD; spf=pass (imf22.hostedemail.com: domain of jlayton@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=jlayton@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1684410489; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=7p7H57m5EvrexIaZAfkDWNQhr9XBbFKJmNws5e2gM/o=; b=ckUy2IyVzFJAqVWBxeGImsAhZbNv9TFBhmbntvam+Y0pnIqPYhLWrrsdCNubMdOXO9sczj QBelsPwD5QlHu3D8/fhmHmYw0q5EjPaknQgWf0SUegOy1OD+L1O0c5PihCSYmvrreMh6cS l5OndRJGJXaJC6ssNaqcyfvUGvirB30= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684410489; a=rsa-sha256; cv=none; b=lnqHfV7CJfZka9wC5dF0zFVKbKHfjcIUCMtBYe5eI0KGFKUdgEbfSj2Ead+FzjQPZ6LoRf GKRWmb8jlDjfWN8YAHuGoTjIYv5xBrNgNskmJBA8/kWZ4gYouu84ceq7i8ZGN3g7OmS7A+ THD3/nTtiw2/QTI7Yf/ggz0kA9R/3ME= ARC-Authentication-Results: i=1; imf22.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=bzkIxbhD; spf=pass (imf22.hostedemail.com: domain of jlayton@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=jlayton@kernel.org; dmarc=pass (policy=none) header.from=kernel.org 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 391EF60C28; Thu, 18 May 2023 11:48:08 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 48507C433A8; Thu, 18 May 2023 11:48:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1684410487; bh=kquwxLu1RihR3+XLA7F476KPp9MVAZdnWUNISapvPR4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bzkIxbhDHURav3gjTbQ2xFZrLyGJSG3Hn9dS+SsLaBnRDDKBLvLERckzR526obwYW lvXvMK+Y2sH7weoCTR0SukIJ2OvUY3CI0eOdclclvgDj72X+zOY63Q1hrRGfWK2LP8 /t1DNOWaVGkaw36xyXe+sbetbfybu6C0m9TJvGHp6CBQLRrPHNGG5JM3sOp6DvxWZy SYax8PXtJ+sObAy4nFE0sXQrPOF84NN6/5SMCv89EUxLnC0OPfj6a4X8OnPVNcGta2 76mu7+on+K28VJdnqfF/QI1nAzBiR/LWfq6xVgGEb9QEPjDQdB18JUg5KlahtUxFP4 RDVUQQzgybvTw== From: Jeff Layton To: Alexander Viro , Christian Brauner , "Darrick J. Wong" , Hugh Dickins , Andrew Morton , Dave Chinner , Chuck Lever Cc: Jan Kara , Amir Goldstein , David Howells , Neil Brown , Matthew Wilcox , Andreas Dilger , Theodore T'so , Chris Mason , Josef Bacik , David Sterba , Namjae Jeon , Steve French , Sergey Senozhatsky , Tom Talpey , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-ext4@vger.kernel.org, linux-mm@kvack.org, linux-nfs@vger.kernel.org, linux-cifs@vger.kernel.org Subject: [PATCH v4 8/9] ext4: convert to multigrain timestamps Date: Thu, 18 May 2023 07:47:41 -0400 Message-Id: <20230518114742.128950-9-jlayton@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230518114742.128950-1-jlayton@kernel.org> References: <20230518114742.128950-1-jlayton@kernel.org> MIME-Version: 1.0 X-Rspamd-Queue-Id: 086B1C0009 X-Stat-Signature: pj9xr4saa83ncraisqqcmco79znz8wzg X-Rspam-User: X-Rspamd-Server: rspam09 X-HE-Tag: 1684410488-42638 X-HE-Meta: U2FsdGVkX181MeLGpos6IEo66Cq224pgAjZ0144bPXkaLM4KrbLqJ66IWzdja8Zq3D0+ZCWcJuANCwJlFvup1Pdj7HsPMIkAELW+tKfhHtm/O+6HyFRsQL/PIgfFQvlTxD6yud0afFb9ao5/S8y2sBkjF9quKtthsTmLULjSJ3ZbmX2Xr8fDFVIdMd5U/uGqYtOW2VdUwzjKxwuQJUWBIHs97xYGE2h8Cyetd9/s2W+qchCDtZnOcUSij/e5s1r9MqLzn7ijP1kLUrz8NTlZrHbA7NtuXj8+EjgvicsZD6x4OlVC9nppP0PMB4PSM512yM8hQu7Lev1Hmi5PQHxPm8PEPKlxKsvRub5YKrbA5dZaXby+NQ1CHc2DFC4H9g3fIdbWNkOWC7b3Pjjng6VYMGNrfYjYnDXDCECJ94HzHd3kA04m6omhA8j84LbrDaqoOF44wH8tNXiUmmYiXYUJNYIcNGxxT/MSOedpuPtNC86WSCjb7ave7KV5TYhng8goJEHULUaWbXmkNNJIMpl14fOSY7ukdmdfSsJLoGg4Z7ONH73tpiVkOIICBp/y1SkX+aw/dMyv35+CJ/5prYiyCIy916JA7kfm5GGdMMFSpIQpUuM7do8V7PLCLeSL8khducH0amkLtJTfcjofuVm/E7H0YDLi5YLMjUXhl8LNLoXw+yoSEsqjG+wOxCsV5n7bAbO8/9vSZbTfDf72Sp5XUDO9TVeaQApB21Mm8pfwlWM1UGtXhi28HoeYboKpvMIiK7pSa0aROq6VDrfLzebS6nbDg4MXe07aLKqqnb1IUmoOG3oN/DTmGMuy7KiE6ORRDhOAXe3MbaQfF6mpYiXPUmCLto6FCR1mhXRPeC5DgGxXOo/zFzcH01/pXxnCSkZZFy2yRnBtvk/qWB4B8/v1WLYsZ56N34YHVnVudOg0JWcip7vMxnl6G6ezu5IX2ewDaiHtVLCRWddM5ZvC+r9 IrFWwIE2 TGkFVG/9lc00XFqbqvYZPVaCdUWaBny+FdMhwcmbtOexPsMhUxryDG1wHyO2KqfXbgkT0UeHdwfNa3oUjKmLNeKXR2Jn/YuApxqhlr3Ez9I9dcGlnqhNBmR0E6CJW9pVpSG1pYDwLPLfwnZsIDpuWH7zZPuTaHaeRUNuo4Jq8y5yqrQtVKWOT9Zv4/wYjbkdUeujgdEcNGnqmMqVWp2g1rL2Dro2vH1wAvdXbBVYZAi39+EiENpC4KDCEqSHDHPfIj+KOlmdR9jjxoJhW1ueQzMj1nOJBEUD4AmPdVBcCBLH9hmS8WVt50+FVU8pSF85fJih/OtK48p8SKTwhxUtwvnieeg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Signed-off-by: Jeff Layton Acked-by: Theodore Ts'o --- fs/ext4/inode.c | 17 +++++++++++++++-- fs/ext4/super.c | 2 +- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c index e0bbcf7a07b5..37840aeb7ff9 100644 --- a/fs/ext4/inode.c +++ b/fs/ext4/inode.c @@ -4235,6 +4235,19 @@ static int ext4_inode_blocks_set(struct ext4_inode *raw_inode, return 0; } +static void ext4_inode_set_ctime(struct inode *inode, struct ext4_inode *raw_inode) +{ + struct timespec64 ctime = ctime_peek(inode); + + if (EXT4_FITS_IN_INODE(raw_inode, EXT4_I(inode), i_ctime_extra)) { + raw_inode->i_ctime = cpu_to_le32(ctime.tv_sec); + raw_inode->i_ctime_extra = ext4_encode_extra_time(&ctime); + } else { + raw_inode->i_ctime = cpu_to_le32(clamp_t(int32_t, + ctime.tv_sec, S32_MIN, S32_MAX)); + } +} + static int ext4_fill_raw_inode(struct inode *inode, struct ext4_inode *raw_inode) { struct ext4_inode_info *ei = EXT4_I(inode); @@ -4275,7 +4288,7 @@ static int ext4_fill_raw_inode(struct inode *inode, struct ext4_inode *raw_inode } raw_inode->i_links_count = cpu_to_le16(inode->i_nlink); - EXT4_INODE_SET_XTIME(i_ctime, inode, raw_inode); + ext4_inode_set_ctime(inode, raw_inode); EXT4_INODE_SET_XTIME(i_mtime, inode, raw_inode); EXT4_INODE_SET_XTIME(i_atime, inode, raw_inode); EXT4_EINODE_SET_XTIME(i_crtime, ei, raw_inode); @@ -4983,7 +4996,7 @@ static void __ext4_update_other_inode_time(struct super_block *sb, spin_unlock(&inode->i_lock); spin_lock(&ei->i_raw_lock); - EXT4_INODE_SET_XTIME(i_ctime, inode, raw_inode); + ext4_inode_set_ctime(inode, raw_inode); EXT4_INODE_SET_XTIME(i_mtime, inode, raw_inode); EXT4_INODE_SET_XTIME(i_atime, inode, raw_inode); ext4_inode_csum_set(inode, raw_inode, ei); diff --git a/fs/ext4/super.c b/fs/ext4/super.c index 9680fe753e59..4de4977dcb21 100644 --- a/fs/ext4/super.c +++ b/fs/ext4/super.c @@ -7258,7 +7258,7 @@ static struct file_system_type ext4_fs_type = { .init_fs_context = ext4_init_fs_context, .parameters = ext4_param_specs, .kill_sb = kill_block_super, - .fs_flags = FS_REQUIRES_DEV | FS_ALLOW_IDMAP, + .fs_flags = FS_REQUIRES_DEV | FS_ALLOW_IDMAP | FS_MULTIGRAIN_TS, }; MODULE_ALIAS_FS("ext4"); From patchwork Thu May 18 11:47:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jeff Layton X-Patchwork-Id: 13246637 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2C3A4C77B7A for ; Thu, 18 May 2023 11:48:14 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id BE6DE280002; Thu, 18 May 2023 07:48:13 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id BBDF6280001; Thu, 18 May 2023 07:48:13 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A5EDC280002; Thu, 18 May 2023 07:48:13 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 9932B280001 for ; Thu, 18 May 2023 07:48:13 -0400 (EDT) Received: from smtpin08.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 60DA3A07A8 for ; Thu, 18 May 2023 11:48:13 +0000 (UTC) X-FDA: 80803202466.08.C0BCF97 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf21.hostedemail.com (Postfix) with ESMTP id A32B31C0012 for ; Thu, 18 May 2023 11:48:11 +0000 (UTC) Authentication-Results: imf21.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=eVgA9C24; spf=pass (imf21.hostedemail.com: domain of jlayton@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=jlayton@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1684410491; a=rsa-sha256; cv=none; b=QzaJiX+MWoN0fB14m3QGiYIJw7aTRRmVneHXAZn1Nj9BQNQIMyjC3jKqSzqsQ/DTulsjQC jwC02aaBdgS5XQFT1fo1coz/BMzh4XD8VHAd+6QR4X5C9eIEzenkAFD48ezSMUB4PlpkD7 G44dvziCHqkw26Q3IoXPLiatl3iObAA= ARC-Authentication-Results: i=1; imf21.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=eVgA9C24; spf=pass (imf21.hostedemail.com: domain of jlayton@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=jlayton@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1684410491; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=K3pra9/7lzeMoeQ6tvF3aYX8KbqIJSGbzzRHgqoko1o=; b=bv1+Ww4wwXhEyXG8m9xR3foSHiKIZtsQ476+Gg1AQrN7rpfBIGElyaMDhj/v3HCGM+SDlU jXvTE2An7hg8XOHnJfrv+jlncLHS5yb6hwNaByhmgWPKds8xfHfHi0hSPSkq3nq4LSJOVQ kEbxIRGpZCAveR5S7Fq0z0ggYqbmrXY= 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 CB4F764EDD; Thu, 18 May 2023 11:48:10 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DB4D1C433EF; Thu, 18 May 2023 11:48:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1684410490; bh=5rxAU8gdxN1ANNzaz9AdhjVNTPRoenRpbGIWMsQfU4w=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=eVgA9C24n1V/7bjWNt/MFHa2FAnb+8uX24YF0bfaqI+n2uU86gaNNLvnJvTPy2h0u mzmMNL4mC7Iv7AvqfwHIA9G9ibv96tTkXSQCog7/MUUVORddGN6N+tp6QRz7RVGvZa 0c4rrwAy4Bl9Q+gIAGIs75p0tPNaKQvgeHqryuU+BvFHe0voa9dJD3Ox4r79+jXqzp E/3xSXXpUnpdfGbZWx+LUnrw6U9fuTep2qhxnuOpnZ1GCC2xnB4MaVAT5BvNzQA7oH ISArStV4NaqnmwgskcuEltftzmabNRP0wSvpmQ288q/XTm+8QneDSB49jf3ayM81XP z9Kt4JGRJ4IBg== From: Jeff Layton To: Alexander Viro , Christian Brauner , "Darrick J. Wong" , Hugh Dickins , Andrew Morton , Dave Chinner , Chuck Lever Cc: Jan Kara , Amir Goldstein , David Howells , Neil Brown , Matthew Wilcox , Andreas Dilger , Theodore T'so , Chris Mason , Josef Bacik , David Sterba , Namjae Jeon , Steve French , Sergey Senozhatsky , Tom Talpey , linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-xfs@vger.kernel.org, linux-btrfs@vger.kernel.org, linux-ext4@vger.kernel.org, linux-mm@kvack.org, linux-nfs@vger.kernel.org, linux-cifs@vger.kernel.org Subject: [PATCH v4 9/9] btrfs: convert to multigrain timestamps Date: Thu, 18 May 2023 07:47:42 -0400 Message-Id: <20230518114742.128950-10-jlayton@kernel.org> X-Mailer: git-send-email 2.40.1 In-Reply-To: <20230518114742.128950-1-jlayton@kernel.org> References: <20230518114742.128950-1-jlayton@kernel.org> MIME-Version: 1.0 X-Rspam-User: X-Rspamd-Server: rspam02 X-Rspamd-Queue-Id: A32B31C0012 X-Stat-Signature: nw3tgtakejzpmtd6uo566xhzxdejc5jd X-HE-Tag: 1684410491-501901 X-HE-Meta: U2FsdGVkX19mh3wMshgBereYiwtxW1Ebqzg1KKUAdYfQhoXxvese/bUlDURfoZcC0SnUF35htZtMuMiCQoPjFWHolTVj/QMS/ukcrT//HCVvnCweoUAyKeN17UWQmVttJ9z9Xh6g164cE1f8Qafs97pwGVHPDprgXWQVBltVVUNkoRz5YnuoE4p2OnSgwkKiLcGhAgVdttpe9IQCFtGGZdjHYx/GbyGgqTeOxMRR6zkPj0AGOTELL2lBECC4Nxnk5cyi9Vtn2U//ZTpAsmlTMYwPQNOfABGlMQlHRlTEVvxK+nVZDREEz6OHamDSfZxl+9HY5A/9059eGagH77Ni52CyswUtcsKRY6gfYm+IhK68bDd5JVvWzxQ65Wo6PE9s/2xOe0VJPxauWkqW+gEZs4EOGB3+rUNKffYFEWNMsfEFQnN02CFys23WWCDPcLSAo2ANRSms9J93YH77HxExkdSNcEOcn1Pq0oPrgKkZwI0mLmDi4f+9gPNfGpZRdOHcOeh/O8OsezQ3knBXTd10wS3MtfmVuBdBal32XnFB3danC9xRik3pCh3mDy0COIP9rT+e3xlgxNaYiZLJ/acKnZamznv8G1EEnY9HlSmRwQgE5ZHwX30NHkrFqCH9r/thjLHDXina6aGqG3i3Pv8hBrCeeu3WCxF6JztWc0bTP9sYholf4a2CXz8eNUdxLFl+ylfe+J7s/T4uPBtGdKjENFIjlJuPAAV6+8O2gSoqeGR1UKax9fUDLQ6BZY1Uv4bfJBUpSZKXr/hia8dcJA/LEbpSUZitn9ni5H+AkrRM8EPPXUhh54e7WebD2BuYxoKU+IhTl0tItyoyJwEIHd200P5fLGCvQyw5ZBgtQpd471fBFlTW/dwdzr2qgSOUV5jtxvslRBc+eKq+vqSD+i0Fs8EM19ncAoF6JfxRWp3g31N/AeS17Dr6jU5MWMUq0ZqzO4EtqOHJYqpCvtds8gd 9JJvMJI6 4RmwHWQjdN5u9jlG6D9alCPKz7TX29VDd3pius3FHBOOYIK3+VDL/vwSqpWJ1/37W/eTz604NYTJ8jKMVcbDXejcraSjy9OkcdUTJzAKWQ1tGpdH2cwZs+QIpVzlbbdrMlCduyPqhbwHX36Wt6jQ23GTNzF0lvO/VMkSn5Jm551J6IddWgBrIBkR3u/vVPT6uOXPVxR7uldJZafarIVJrjuthXwgq/OPvDN7BX0l8Pg1Zywpg0Gu9miG1lnIOcQdGLpjdJ78yDdXhiMoaM4zM76yp/QycnMcFEEJoPciDwTbEsyKyh9fyvRvjT4HHAJ3Av02ph7Oju5CwYh/rhDW8IHhJ5A== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: Signed-off-by: Jeff Layton Acked-by: David Sterba --- fs/btrfs/delayed-inode.c | 2 +- fs/btrfs/inode.c | 2 +- fs/btrfs/super.c | 5 +++-- fs/btrfs/tree-log.c | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c index 6b457b010cbc..8307fd69da43 100644 --- a/fs/btrfs/delayed-inode.c +++ b/fs/btrfs/delayed-inode.c @@ -1810,7 +1810,7 @@ static void fill_stack_inode_item(struct btrfs_trans_handle *trans, btrfs_set_stack_timespec_sec(&inode_item->ctime, inode->i_ctime.tv_sec); btrfs_set_stack_timespec_nsec(&inode_item->ctime, - inode->i_ctime.tv_nsec); + ctime_nsec_peek(inode)); btrfs_set_stack_timespec_sec(&inode_item->otime, BTRFS_I(inode)->i_otime.tv_sec); diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 2335b5e1cecc..b27d4dda6024 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c @@ -3970,7 +3970,7 @@ static void fill_inode_item(struct btrfs_trans_handle *trans, btrfs_set_token_timespec_sec(&token, &item->ctime, inode->i_ctime.tv_sec); btrfs_set_token_timespec_nsec(&token, &item->ctime, - inode->i_ctime.tv_nsec); + ctime_nsec_peek(inode)); btrfs_set_token_timespec_sec(&token, &item->otime, BTRFS_I(inode)->i_otime.tv_sec); diff --git a/fs/btrfs/super.c b/fs/btrfs/super.c index ec18e2210602..fc6abf8b1f42 100644 --- a/fs/btrfs/super.c +++ b/fs/btrfs/super.c @@ -2144,7 +2144,7 @@ static struct file_system_type btrfs_fs_type = { .name = "btrfs", .mount = btrfs_mount, .kill_sb = btrfs_kill_super, - .fs_flags = FS_REQUIRES_DEV | FS_BINARY_MOUNTDATA, + .fs_flags = FS_REQUIRES_DEV | FS_BINARY_MOUNTDATA | FS_MULTIGRAIN_TS, }; static struct file_system_type btrfs_root_fs_type = { @@ -2152,7 +2152,8 @@ static struct file_system_type btrfs_root_fs_type = { .name = "btrfs", .mount = btrfs_mount_root, .kill_sb = btrfs_kill_super, - .fs_flags = FS_REQUIRES_DEV | FS_BINARY_MOUNTDATA | FS_ALLOW_IDMAP, + .fs_flags = FS_REQUIRES_DEV | FS_BINARY_MOUNTDATA | + FS_ALLOW_IDMAP | FS_MULTIGRAIN_TS, }; MODULE_ALIAS_FS("btrfs"); diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c index 9b212e8c70cc..9a4d1b2ab204 100644 --- a/fs/btrfs/tree-log.c +++ b/fs/btrfs/tree-log.c @@ -4150,7 +4150,7 @@ static void fill_inode_item(struct btrfs_trans_handle *trans, btrfs_set_token_timespec_sec(&token, &item->ctime, inode->i_ctime.tv_sec); btrfs_set_token_timespec_nsec(&token, &item->ctime, - inode->i_ctime.tv_nsec); + ctime_nsec_peek(inode)); /* * We do not need to set the nbytes field, in fact during a fast fsync