From 1213375077451337c2381a8b5b88502a3fc394a2 Mon Sep 17 00:00:00 2001 From: Chung-Chiang Cheng Date: Tue, 3 May 2022 23:25:36 +0800 Subject: fat: remove time truncations in vfat_create/vfat_mkdir All the timestamps in vfat_create() and vfat_mkdir() come from fat_time_fat2unix() which ensures time granularity. We don't need to truncate them to fit FAT's format. Moreover, fat_truncate_crtime() and fat_timespec64_trunc_10ms() are also removed because there is no caller anymore. Link: https://lkml.kernel.org/r/20220503152536.2503003-4-cccheng@synology.com Signed-off-by: Chung-Chiang Cheng Acked-by: OGAWA Hirofumi Signed-off-by: Andrew Morton --- fs/fat/fat.h | 2 -- fs/fat/misc.c | 21 --------------------- fs/fat/namei_vfat.c | 4 ---- 3 files changed, 27 deletions(-) (limited to 'fs/fat') diff --git a/fs/fat/fat.h b/fs/fat/fat.h index 6ed05ac0e694..a415c02ede39 100644 --- a/fs/fat/fat.h +++ b/fs/fat/fat.h @@ -456,8 +456,6 @@ extern void fat_time_unix2fat(struct msdos_sb_info *sbi, struct timespec64 *ts, __le16 *time, __le16 *date, u8 *time_cs); extern struct timespec64 fat_truncate_atime(const struct msdos_sb_info *sbi, const struct timespec64 *ts); -extern struct timespec64 fat_truncate_crtime(const struct msdos_sb_info *sbi, - const struct timespec64 *ts); extern struct timespec64 fat_truncate_mtime(const struct msdos_sb_info *sbi, const struct timespec64 *ts); extern int fat_truncate_time(struct inode *inode, struct timespec64 *now, diff --git a/fs/fat/misc.c b/fs/fat/misc.c index 8ebe49e315ab..7e5d6ae305f2 100644 --- a/fs/fat/misc.c +++ b/fs/fat/misc.c @@ -281,13 +281,6 @@ static inline struct timespec64 fat_timespec64_trunc_2secs(struct timespec64 ts) return (struct timespec64){ ts.tv_sec & ~1ULL, 0 }; } -static inline struct timespec64 fat_timespec64_trunc_10ms(struct timespec64 ts) -{ - if (ts.tv_nsec) - ts.tv_nsec -= ts.tv_nsec % 10000000UL; - return ts; -} - /* * truncate atime to 24 hour granularity (00:00:00 in local timezone) */ @@ -305,20 +298,6 @@ struct timespec64 fat_truncate_atime(const struct msdos_sb_info *sbi, return (struct timespec64){ seconds, 0 }; } -/* - * truncate creation time with appropriate granularity: - * msdos - 2 seconds - * vfat - 10 milliseconds - */ -struct timespec64 fat_truncate_crtime(const struct msdos_sb_info *sbi, - const struct timespec64 *ts) -{ - if (sbi->options.isvfat) - return fat_timespec64_trunc_10ms(*ts); - else - return fat_timespec64_trunc_2secs(*ts); -} - /* * truncate mtime to 2 second granularity */ diff --git a/fs/fat/namei_vfat.c b/fs/fat/namei_vfat.c index 5369d82e0bfb..c573314806cf 100644 --- a/fs/fat/namei_vfat.c +++ b/fs/fat/namei_vfat.c @@ -780,8 +780,6 @@ static int vfat_create(struct user_namespace *mnt_userns, struct inode *dir, goto out; } inode_inc_iversion(inode); - fat_truncate_time(inode, &ts, S_ATIME|S_CTIME|S_MTIME); - /* timestamp is already written, so mark_inode_dirty() is unneeded. */ d_instantiate(dentry, inode); out: @@ -878,8 +876,6 @@ static int vfat_mkdir(struct user_namespace *mnt_userns, struct inode *dir, } inode_inc_iversion(inode); set_nlink(inode, 2); - fat_truncate_time(inode, &ts, S_ATIME|S_CTIME|S_MTIME); - /* timestamp is already written, so mark_inode_dirty() is unneeded. */ d_instantiate(dentry, inode); -- cgit 1.4.1