linux/fs
Linus Torvalds 615e95831e v6.6-vfs.ctime
-----BEGIN PGP SIGNATURE-----
 
 iHUEABYKAB0WIQRAhzRXHqcMeLMyaSiRxhvAZXjcogUCZOXTKAAKCRCRxhvAZXjc
 oifJAQCzi/p+AdQu8LA/0XvR7fTwaq64ZDCibU4BISuLGT2kEgEAuGbuoFZa0rs2
 XYD/s4+gi64p9Z01MmXm2XO1pu3GPg0=
 =eJz5
 -----END PGP SIGNATURE-----

Merge tag 'v6.6-vfs.ctime' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs

Pull vfs timestamp updates from Christian Brauner:
 "This adds VFS support for multi-grain timestamps and converts tmpfs,
  xfs, ext4, and btrfs to use them. This carries acks from all relevant
  filesystems.

  The VFS always uses coarse-grained timestamps when updating the ctime
  and mtime after a change. This has the benefit of allowing filesystems
  to optimize away a lot of 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. A lot of changes
  can happen in a jiffy, so timestamps aren't sufficient to help the
  client decide to invalidate the cache.

  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 with timestamps
  (e.g., backup applications).

  If we were to always use fine-grained timestamps, that would improve
  the situation, but that becomes rather expensive, as the underlying
  filesystem would have to log a lot more metadata updates.

  This introduces fine-grained timestamps that are used when they are
  actively queried.

  This uses the 31st bit of the ctime tv_nsec field to indicate that
  something has queried the inode for the mtime or ctime. When this flag
  is set, on the next mtime or ctime update, the kernel will fetch a
  fine-grained timestamp instead of the usual coarse-grained one.

  As POSIX generally mandates that when the mtime changes, the ctime
  must also change the kernel always stores normalized ctime values, so
  only the first 30 bits of the tv_nsec field are ever used.

  Filesytems can opt into this behavior by setting the FS_MGTIME flag in
  the fstype. Filesystems that don't set this flag will continue to use
  coarse-grained timestamps.

  Various preparatory changes, fixes and cleanups are included:

   - Fixup all relevant places where POSIX requires updating ctime
     together with mtime. This is a wide-range of places and all
     maintainers provided necessary Acks.

   - Add new accessors for inode->i_ctime directly and change all
     callers to rely on them. Plain accesses to inode->i_ctime are now
     gone and it is accordingly rename to inode->__i_ctime and commented
     as requiring accessors.

   - Extend generic_fillattr() to pass in a request mask mirroring in a
     sense the statx() uapi. This allows callers to pass in a request
     mask to only get a subset of attributes filled in.

   - Rework timestamp updates so it's possible to drop the @now
     parameter the update_time() inode operation and associated helpers.

   - Add inode_update_timestamps() and convert all filesystems to it
     removing a bunch of open-coding"

* tag 'v6.6-vfs.ctime' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs: (107 commits)
  btrfs: convert to multigrain timestamps
  ext4: switch to multigrain timestamps
  xfs: switch to multigrain timestamps
  tmpfs: add support for multigrain timestamps
  fs: add infrastructure for multigrain timestamps
  fs: drop the timespec64 argument from update_time
  xfs: have xfs_vn_update_time gets its own timestamp
  fat: make fat_update_time get its own timestamp
  fat: remove i_version handling from fat_update_time
  ubifs: have ubifs_update_time use inode_update_timestamps
  btrfs: have it use inode_update_timestamps
  fs: drop the timespec64 arg from generic_update_time
  fs: pass the request_mask to generic_fillattr
  fs: remove silly warning from current_time
  gfs2: fix timestamp handling on quota inodes
  fs: rename i_ctime field to __i_ctime
  selinux: convert to ctime accessor functions
  security: convert to ctime accessor functions
  apparmor: convert to ctime accessor functions
  sunrpc: convert to ctime accessor functions
  ...
2023-08-28 09:31:32 -07:00
..
9p v6.6-vfs.ctime 2023-08-28 09:31:32 -07:00
adfs adfs: convert to ctime accessor functions 2023-07-13 10:28:03 +02:00
affs affs: convert to ctime accessor functions 2023-07-13 10:28:03 +02:00
afs fs: pass the request_mask to generic_fillattr 2023-08-09 08:56:36 +02:00
autofs v6.6-vfs.ctime 2023-08-28 09:31:32 -07:00
befs befs: convert to ctime accessor functions 2023-07-13 10:28:04 +02:00
bfs bfs: convert to ctime accessor functions 2023-07-13 10:28:04 +02:00
btrfs v6.6-vfs.ctime 2023-08-28 09:31:32 -07:00
cachefiles v6.5/vfs.file 2023-06-26 10:14:36 -07:00
ceph v6.6-vfs.ctime 2023-08-28 09:31:32 -07:00
coda v6.6-vfs.ctime 2023-08-28 09:31:32 -07:00
configfs configfs: convert to ctime accessor functions 2023-07-13 10:28:05 +02:00
cramfs cramfs: convert to ctime accessor functions 2023-07-13 10:28:05 +02:00
crypto fscrypt: Replace 1-element array with flexible array 2023-05-23 19:46:09 -07:00
debugfs debugfs: convert to ctime accessor functions 2023-07-13 10:28:05 +02:00
devpts devpts: convert to ctime accessor functions 2023-07-13 10:28:06 +02:00
dlm dlm for 6.5 2023-06-29 13:27:50 -07:00
ecryptfs fs: pass the request_mask to generic_fillattr 2023-08-09 08:56:36 +02:00
efivarfs efivarfs: convert to ctime accessor functions 2023-07-13 10:28:06 +02:00
efs efs: convert to ctime accessor functions 2023-07-13 10:28:06 +02:00
erofs v6.6-vfs.ctime 2023-08-28 09:31:32 -07:00
exfat v6.6-vfs.ctime 2023-08-28 09:31:32 -07:00
exportfs vfs: get rid of old '->iterate' directory operation 2023-08-06 15:08:35 +02:00
ext2 fs: pass the request_mask to generic_fillattr 2023-08-09 08:56:36 +02:00
ext4 v6.6-vfs.ctime 2023-08-28 09:31:32 -07:00
f2fs fs: pass the request_mask to generic_fillattr 2023-08-09 08:56:36 +02:00
fat fs: drop the timespec64 argument from update_time 2023-08-11 09:04:57 +02:00
freevxfs freevxfs: convert to ctime accessor functions 2023-07-24 10:29:59 +02:00
fscache
fuse v6.6-vfs.ctime 2023-08-28 09:31:32 -07:00
gfs2 v6.6-vfs.ctime 2023-08-28 09:31:32 -07:00
hfs hfs: convert to ctime accessor functions 2023-07-24 10:29:59 +02:00
hfsplus fs: pass the request_mask to generic_fillattr 2023-08-09 08:56:36 +02:00
hostfs hostfs: convert to ctime accessor functions 2023-07-24 10:30:00 +02:00
hpfs hpfs: convert to ctime accessor functions 2023-07-24 10:30:00 +02:00
hugetlbfs hugetlbfs: convert to ctime accessor functions 2023-07-24 10:30:00 +02:00
iomap iomap: micro optimize the ki_pos assignment in iomap_file_buffered_write 2023-07-17 08:49:57 -07:00
isofs isofs: convert to ctime accessor functions 2023-07-24 10:30:00 +02:00
jbd2 jbd2: remove __journal_try_to_free_buffer() 2023-07-10 23:09:21 -04:00
jffs2 jffs2: convert to ctime accessor functions 2023-07-24 10:30:01 +02:00
jfs v6.6-vfs.ctime 2023-08-28 09:31:32 -07:00
kernfs fs: pass the request_mask to generic_fillattr 2023-08-09 08:56:36 +02:00
lockd NFS client updates for Linux 6.5 2023-07-01 14:38:25 -07:00
minix fs: pass the request_mask to generic_fillattr 2023-08-09 08:56:36 +02:00
netfs Move netfs_extract_iter_to_sg() to lib/scatterlist.c 2023-06-08 13:42:33 +02:00
nfs v6.6-vfs.ctime 2023-08-28 09:31:32 -07:00
nfs_common
nfsd v6.6-vfs.ctime 2023-08-28 09:31:32 -07:00
nilfs2 v6.6-vfs.ctime 2023-08-28 09:31:32 -07:00
nls fs/nls: make load_nls() take a const parameter 2023-07-25 00:30:02 -05:00
notify fanotify: disallow mount/sb marks on kernel internal pseudo fs 2023-07-04 13:29:29 +02:00
ntfs v6.6-vfs.ctime 2023-08-28 09:31:32 -07:00
ntfs3 fs: pass the request_mask to generic_fillattr 2023-08-09 08:56:36 +02:00
ocfs2 v6.6-vfs.ctime 2023-08-28 09:31:32 -07:00
omfs omfs: convert to ctime accessor functions 2023-07-24 10:30:02 +02:00
openpromfs openpromfs: convert to ctime accessor functions 2023-07-24 10:30:03 +02:00
orangefs fs: drop the timespec64 argument from update_time 2023-08-11 09:04:57 +02:00
overlayfs v6.6-vfs.ctime 2023-08-28 09:31:32 -07:00
proc v6.6-vfs.ctime 2023-08-28 09:31:32 -07:00
pstore pstore: convert to ctime accessor functions 2023-07-24 10:30:03 +02:00
qnx4 qnx4: convert to ctime accessor functions 2023-07-24 10:30:04 +02:00
qnx6 qnx6: convert to ctime accessor functions 2023-07-24 10:30:04 +02:00
quota quota: fix warning in dqgrab() 2023-06-05 16:50:30 +02:00
ramfs ramfs: convert to ctime accessor functions 2023-07-24 10:30:04 +02:00
reiserfs reiserfs: convert to ctime accessor functions 2023-07-24 10:30:04 +02:00
romfs romfs: convert to ctime accessor functions 2023-07-24 10:30:04 +02:00
smb v6.6-vfs.ctime 2023-08-28 09:31:32 -07:00
squashfs squashfs: convert to ctime accessor functions 2023-07-24 10:30:05 +02:00
sysfs sysfs: Skip empty folders creation 2023-06-15 13:37:53 +02:00
sysv fs: pass the request_mask to generic_fillattr 2023-08-09 08:56:36 +02:00
tracefs tracefs: convert to ctime accessor functions 2023-07-24 10:30:05 +02:00
ubifs fs: drop the timespec64 argument from update_time 2023-08-11 09:04:57 +02:00
udf fs: pass the request_mask to generic_fillattr 2023-08-09 08:56:36 +02:00
ufs ufs: convert to ctime accessor functions 2023-07-24 10:30:06 +02:00
unicode
vboxsf v6.6-vfs.ctime 2023-08-28 09:31:32 -07:00
verity fsverity: improve documentation for builtin signature support 2023-06-20 22:47:55 -07:00
xfs v6.6-vfs.ctime 2023-08-28 09:31:32 -07:00
zonefs v6.6-vfs.ctime 2023-08-28 09:31:32 -07:00
aio.c fs/aio: Stop allocating aio rings from HIGHMEM 2023-06-15 09:22:23 +02:00
anon_inodes.c
attr.c fs: convert to ctime accessor functions 2023-07-13 10:28:04 +02:00
bad_inode.c fs: drop the timespec64 argument from update_time 2023-08-11 09:04:57 +02:00
binfmt_elf_fdpic.c binfmt: Slightly simplify elf_fdpic_map_file() 2023-05-30 15:49:46 -07:00
binfmt_elf_test.c
binfmt_elf.c Merge branch 'expand-stack' 2023-06-28 20:35:21 -07:00
binfmt_flat.c
binfmt_misc.c fs: convert to ctime accessor functions 2023-07-13 10:28:04 +02:00
binfmt_script.c
buffer.c \n 2023-06-29 13:39:51 -07:00
char_dev.c vfs: Replace all non-returning strlcpy with strscpy 2023-05-15 09:42:01 +02:00
compat_binfmt_elf.c
coredump.c v6.5/vfs.misc 2023-06-26 09:50:21 -07:00
d_path.c fs: d_path: include internal.h 2023-05-17 09:16:59 +02:00
dax.c dax: enable dax fault handler to report VM_FAULT_HWPOISON 2023-06-26 07:54:23 -06:00
dcache.c
direct-io.c - Yosry Ahmed brought back some cgroup v1 stats in OOM logs. 2023-06-28 10:28:11 -07:00
drop_caches.c
eventfd.c eventfd: show the EFD_SEMAPHORE flag in fdinfo 2023-06-15 09:22:23 +02:00
eventpoll.c v6.5/vfs.misc 2023-06-26 09:50:21 -07:00
exec.c \n 2023-06-29 13:31:44 -07:00
fcntl.c
fhandle.c fsnotify: move fsnotify_open() hook into do_dentry_open() 2023-06-12 10:43:45 +02:00
file_table.c fs: move cleanup from init_file() into its callers 2023-07-02 13:15:49 +02:00
file.c fs: rely on ->iterate_shared to determine f_pos locking 2023-08-06 15:08:36 +02:00
filesystems.c
fs_context.c fs: add FSCONFIG_CMD_CREATE_EXCL 2023-08-14 18:48:02 +02:00
fs_parser.c
fs_pin.c
fs_struct.c
fs_types.c
fs-writeback.c writeback: move wb_over_bg_thresh() call outside lock section 2023-06-09 16:25:14 -07:00
fsopen.c fs: add FSCONFIG_CMD_CREATE_EXCL 2023-08-14 18:48:02 +02:00
init.c
inode.c v6.6-vfs.ctime 2023-08-28 09:31:32 -07:00
internal.h v6.5/vfs.file 2023-06-26 10:14:36 -07:00
ioctl.c
Kconfig smb: move client and server files to common directory fs/smb 2023-05-24 16:29:21 -05:00
Kconfig.binfmt
kernel_read_file.c
libfs.c fs: pass the request_mask to generic_fillattr 2023-08-09 08:56:36 +02:00
locks.c
Makefile for-6.5/block-2023-06-23 2023-06-26 12:47:20 -07:00
mbcache.c
mnt_idmapping.c
mount.h
mpage.c
namei.c fs: no need to check source 2023-07-04 10:20:29 +02:00
namespace.c v6.5/vfs.mount 2023-06-26 10:27:04 -07:00
nsfs.c fs: convert to ctime accessor functions 2023-07-13 10:28:04 +02:00
open.c open: make RESOLVE_CACHED correctly test for O_TMPFILE 2023-08-06 15:08:35 +02:00
pipe.c fs: convert to ctime accessor functions 2023-07-13 10:28:04 +02:00
pnode.c fs: allow to mount beneath top mount 2023-05-19 04:30:22 +02:00
pnode.h fs: allow to mount beneath top mount 2023-05-19 04:30:22 +02:00
posix_acl.c fs: convert to ctime accessor functions 2023-07-13 10:28:04 +02:00
proc_namespace.c tty, proc, kernfs, random: Use copy_splice_read() 2023-05-24 08:42:16 -06:00
read_write.c splice: Use filemap_splice_read() instead of generic_file_splice_read() 2023-05-24 08:42:17 -06:00
readdir.c vfs: get rid of old '->iterate' directory operation 2023-08-06 15:08:35 +02:00
remap_range.c fs: use UB-safe check for signed addition overflow in remap_verify_area 2023-05-24 11:03:59 +02:00
select.c
seq_file.c
signalfd.c
splice.c splice, net: Fix splice_to_socket() for O_NONBLOCK socket 2023-07-26 21:56:06 -07:00
stack.c fs: convert to ctime accessor functions 2023-07-13 10:28:04 +02:00
stat.c fs: add infrastructure for multigrain timestamps 2023-08-11 09:04:57 +02:00
statfs.c statfs: enforce statfs[64] structure initialization 2023-05-17 15:20:17 +02:00
super.c fs: add FSCONFIG_CMD_CREATE_EXCL 2023-08-14 18:48:02 +02:00
sync.c
sysctls.c sysctl: Refactor base paths registrations 2023-05-23 21:43:26 -07:00
timerfd.c
userfaultfd.c Merge mm-hotfixes-stable into mm-stable to pick up depended-upon changes. 2023-06-23 16:58:19 -07:00
utimes.c
xattr.c fs: don't call posix_acl_listxattr in generic_listxattr 2023-05-17 15:25:20 +02:00