On Tue, Jul 30, 2019 at 1:27 AM OGAWA Hirofumi hirofumi@mail.parknet.co.jp wrote:
Deepa Dinamani deepa.kernel@gmail.com writes:
diff --git a/fs/fat/misc.c b/fs/fat/misc.c index 1e08bd54c5fb..53bb7c6bf993 100644 --- a/fs/fat/misc.c +++ b/fs/fat/misc.c @@ -307,8 +307,9 @@ int fat_truncate_time(struct inode *inode, struct timespec64 *now, int flags) inode->i_atime = (struct timespec64){ seconds, 0 }; } if (flags & S_CTIME) {
if (sbi->options.isvfat)
inode->i_ctime = timespec64_trunc(*now, 10000000);
if (sbi->options.isvfat) {
inode->i_ctime = timestamp_truncate(*now, inode);
} else inode->i_ctime = fat_timespec64_trunc_2secs(*now); }
Looks like broken. It changed to sb->s_time_gran from 10000000, and changed coding style.
This is using a new api: timestamp_truncate(). granularity is gotten by inode->sb->s_time_gran. See Patch [2/20]: https://lkml.org/lkml/2019/7/29/1853
So this is not broken if fat is filling in the right granularity in the sb.
-Deepa