diff mbox series

[v6,4/4] fat: remove time truncations in vfat_create/vfat_mkdir

Message ID 20220503152536.2503003-4-cccheng@synology.com (mailing list archive)
State New, archived
Headers show
Series [v6,1/4] fat: split fat_truncate_time() into separate functions | expand

Commit Message

Chung-Chiang Cheng May 3, 2022, 3:25 p.m. UTC
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.

Signed-off-by: Chung-Chiang Cheng <cccheng@synology.com>
---
 fs/fat/fat.h        |  2 --
 fs/fat/misc.c       | 21 ---------------------
 fs/fat/namei_vfat.c |  4 ----
 3 files changed, 27 deletions(-)

Comments

OGAWA Hirofumi May 15, 2022, 2 p.m. UTC | #1
Chung-Chiang Cheng <cccheng@synology.com> writes:

> 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.

Acked-by: OGAWA Hirofumi <hirofumi@mail.parknet.co.jp>

Thanks.

> Signed-off-by: Chung-Chiang Cheng <cccheng@synology.com>
> ---
>  fs/fat/fat.h        |  2 --
>  fs/fat/misc.c       | 21 ---------------------
>  fs/fat/namei_vfat.c |  4 ----
>  3 files changed, 27 deletions(-)
>
> diff --git a/fs/fat/fat.h b/fs/fat/fat.h
> index f3bbf17ee352..47b90deef284 100644
> --- a/fs/fat/fat.h
> +++ b/fs/fat/fat.h
> @@ -449,8 +449,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 85bb9dc3af2d..010865dfc46b 100644
> --- a/fs/fat/misc.c
> +++ b/fs/fat/misc.c
> @@ -275,13 +275,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)
>   */
> @@ -299,20 +292,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);
diff mbox series

Patch

diff --git a/fs/fat/fat.h b/fs/fat/fat.h
index f3bbf17ee352..47b90deef284 100644
--- a/fs/fat/fat.h
+++ b/fs/fat/fat.h
@@ -449,8 +449,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 85bb9dc3af2d..010865dfc46b 100644
--- a/fs/fat/misc.c
+++ b/fs/fat/misc.c
@@ -275,13 +275,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)
  */
@@ -299,20 +292,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);