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>
This commit is contained in:
Родитель
30abce053f
Коммит
1213375077
|
@ -456,8 +456,6 @@ extern void fat_time_unix2fat(struct msdos_sb_info *sbi, struct timespec64 *ts,
|
||||||
__le16 *time, __le16 *date, u8 *time_cs);
|
__le16 *time, __le16 *date, u8 *time_cs);
|
||||||
extern struct timespec64 fat_truncate_atime(const struct msdos_sb_info *sbi,
|
extern struct timespec64 fat_truncate_atime(const struct msdos_sb_info *sbi,
|
||||||
const struct timespec64 *ts);
|
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,
|
extern struct timespec64 fat_truncate_mtime(const struct msdos_sb_info *sbi,
|
||||||
const struct timespec64 *ts);
|
const struct timespec64 *ts);
|
||||||
extern int fat_truncate_time(struct inode *inode, struct timespec64 *now,
|
extern int fat_truncate_time(struct inode *inode, struct timespec64 *now,
|
||||||
|
|
|
@ -281,13 +281,6 @@ static inline struct timespec64 fat_timespec64_trunc_2secs(struct timespec64 ts)
|
||||||
return (struct timespec64){ ts.tv_sec & ~1ULL, 0 };
|
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)
|
* 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 };
|
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
|
* truncate mtime to 2 second granularity
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -780,8 +780,6 @@ static int vfat_create(struct user_namespace *mnt_userns, struct inode *dir,
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
inode_inc_iversion(inode);
|
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);
|
d_instantiate(dentry, inode);
|
||||||
out:
|
out:
|
||||||
|
@ -878,8 +876,6 @@ static int vfat_mkdir(struct user_namespace *mnt_userns, struct inode *dir,
|
||||||
}
|
}
|
||||||
inode_inc_iversion(inode);
|
inode_inc_iversion(inode);
|
||||||
set_nlink(inode, 2);
|
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);
|
d_instantiate(dentry, inode);
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче