This is a replacement for the v6 series sitting in Christian's vfs.mgtime branch. The main changes here are to the changelogs, documentation and comments. The code itself is largely unchanged. The pipe1_threads test shows these averages on my test rig with this series: v6.11: 89233600 (baseline) v6.11 + v9 series: 88460897 (<1% slower) Acked-by's and Reviewed-by's would be welcome (particularly from the timekeeper folks). Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx> --- Changes in v9: - Comment and documentation cleanups. - Drop the EXPORT_SYMBOL_GPL() from new timekeeper interfaces - Link to v8: https://lore.kernel.org/r/20241001-mgtime-v8-0-903343d91bc3@xxxxxxxxxx Changes in v8: - split patch that adds percpu counters into fs and timekeeping patches - convert percpu counters to unsigned longs - directly access the offs_real value in timekeeper instead of going through offsets array - drop WARN_ON's in timekeeping patches - better changelogs and more comments for the timekeeping bits - better document how backward realtime clock jumps affect things - Link to v7: https://lore.kernel.org/r/20240913-mgtime-v7-0-92d4020e3b00@xxxxxxxxxx Changes in v7: - move the floor value handling into timekeeper for better performance - Link to v6: https://lore.kernel.org/r/20240715-mgtime-v6-0-48e5d34bd2ba@xxxxxxxxxx Changes in v6: - Normalize timespec64 in inode_set_ctime_to_ts - use DEFINE_PER_CPU counters for better vfs consistency - skip ctime cmpxchg if the result means nothing will change - add trace_ctime_xchg_skip to track skipped ctime updates - use __print_flags in ctime_ns_xchg tracepoint - Link to v5: https://lore.kernel.org/r/20240711-mgtime-v5-0-37bb5b465feb@xxxxxxxxxx Changes in v5: - refetch coarse time in coarse_ctime if not returning floor - timestamp_truncate before swapping new ctime value into place - track floor value as atomic64_t - cleanups to Documentation file - Link to v4: https://lore.kernel.org/r/20240708-mgtime-v4-0-a0f3c6fb57f3@xxxxxxxxxx Changes in v4: - reordered tracepoint fields for better packing - rework percpu counters again to also count fine grained timestamps - switch to try_cmpxchg for better efficiency - Link to v3: https://lore.kernel.org/r/20240705-mgtime-v3-0-85b2daa9b335@xxxxxxxxxx Changes in v3: - Drop the conversion of i_ctime fields to ktime_t, and use an unused bit of the i_ctime_nsec field as QUERIED flag. - Better tracepoints for tracking floor and ctime updates - Reworked percpu counters to be more useful - Track floor as monotonic value, which eliminates clock-jump problem Changes in v2: - Added Documentation file - Link to v1: https://lore.kernel.org/r/20240626-mgtime-v1-0-a189352d0f8f@xxxxxxxxxx --- Jeff Layton (12): timekeeping: add interfaces for handling timestamps with a floor value fs: add infrastructure for multigrain timestamps fs: have setattr_copy handle multigrain timestamps appropriately fs: handle delegated timestamps in setattr_copy_mgtime fs: tracepoints around multigrain timestamp events fs: add percpu counters for significant multigrain timestamp events timekeeping: add percpu counter for tracking floor swap events Documentation: add a new file documenting multigrain timestamps xfs: switch to multigrain timestamps ext4: switch to multigrain timestamps btrfs: convert to multigrain timestamps tmpfs: add support for multigrain timestamps Documentation/filesystems/index.rst | 1 + Documentation/filesystems/multigrain-ts.rst | 125 ++++++++++++ fs/attr.c | 60 +++++- fs/btrfs/file.c | 25 +-- fs/btrfs/super.c | 3 +- fs/ext4/super.c | 2 +- fs/inode.c | 282 +++++++++++++++++++++++++--- fs/stat.c | 46 ++++- fs/xfs/libxfs/xfs_trans_inode.c | 6 +- fs/xfs/xfs_iops.c | 10 +- fs/xfs/xfs_super.c | 2 +- include/linux/fs.h | 36 +++- include/linux/timekeeping.h | 5 + include/trace/events/timestamp.h | 124 ++++++++++++ kernel/time/timekeeping.c | 106 +++++++++++ kernel/time/timekeeping_debug.c | 13 ++ kernel/time/timekeeping_internal.h | 9 + mm/shmem.c | 2 +- 18 files changed, 784 insertions(+), 73 deletions(-) --- base-commit: 7f1416b4fe6bd3363878a91894cd770f8ee1b5d0 change-id: 20240913-mgtime-20c98bcda88e Best regards, -- Jeff Layton <jlayton@xxxxxxxxxx>