diff options
-rw-r--r-- | fs/fat/inode.c | 11 | ||||
-rw-r--r-- | fs/fat/misc.c | 9 |
2 files changed, 10 insertions, 10 deletions
diff --git a/fs/fat/inode.c b/fs/fat/inode.c index cb698a827c9a..d0371913f496 100644 --- a/fs/fat/inode.c +++ b/fs/fat/inode.c @@ -567,12 +567,11 @@ int fat_fill_inode(struct inode *inode, struct msdos_dir_entry *de) & ~((loff_t)sbi->cluster_size - 1)) >> 9; fat_time_fat2unix(sbi, &inode->i_mtime, de->time, de->date, 0); - if (sbi->options.isvfat) { - fat_time_fat2unix(sbi, &inode->i_ctime, de->ctime, - de->cdate, de->ctime_cs); + inode->i_ctime = inode->i_mtime; + if (sbi->options.isvfat) fat_time_fat2unix(sbi, &inode->i_atime, 0, de->adate, 0); - } else - fat_truncate_time(inode, &inode->i_mtime, S_ATIME|S_CTIME); + else + inode->i_atime = fat_truncate_atime(sbi, &inode->i_mtime); return 0; } @@ -888,8 +887,6 @@ retry: &raw_entry->date, NULL); if (sbi->options.isvfat) { __le16 atime; - fat_time_unix2fat(sbi, &inode->i_ctime, &raw_entry->ctime, - &raw_entry->cdate, &raw_entry->ctime_cs); fat_time_unix2fat(sbi, &inode->i_atime, &atime, &raw_entry->adate, NULL); } diff --git a/fs/fat/misc.c b/fs/fat/misc.c index 80c6f8b3dc75..8ebe49e315ab 100644 --- a/fs/fat/misc.c +++ b/fs/fat/misc.c @@ -347,10 +347,13 @@ int fat_truncate_time(struct inode *inode, struct timespec64 *now, int flags) if (flags & S_ATIME) inode->i_atime = fat_truncate_atime(sbi, now); - if (flags & S_CTIME) - inode->i_ctime = fat_truncate_crtime(sbi, now); + /* + * ctime and mtime share the same on-disk field, and should be + * identical in memory. all mtime updates will be applied to ctime, + * but ctime updates are ignored. + */ if (flags & S_MTIME) - inode->i_mtime = fat_truncate_mtime(sbi, now); + inode->i_mtime = inode->i_ctime = fat_truncate_mtime(sbi, now); return 0; } |