summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChung-Chiang Cheng <cccheng@synology.com>2022-05-03 18:25:36 +0300
committerakpm <akpm@linux-foundation.org>2022-05-20 00:10:31 +0300
commit1213375077451337c2381a8b5b88502a3fc394a2 (patch)
tree63100a4421c129c8f9e9ca730970d2d10022d75a
parent30abce053f811f52688a5b739c3e4ba98d34070d (diff)
downloadlinux-1213375077451337c2381a8b5b88502a3fc394a2.tar.xz
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 <cccheng@synology.com> Acked-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
-rw-r--r--fs/fat/fat.h2
-rw-r--r--fs/fat/misc.c21
-rw-r--r--fs/fat/namei_vfat.c4
3 files changed, 0 insertions, 27 deletions
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)
*/
@@ -306,20 +299,6 @@ struct timespec64 fat_truncate_atime(const struct msdos_sb_info *sbi,
}
/*
- * 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
*/
struct timespec64 fat_truncate_mtime(const struct msdos_sb_info *sbi,
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);