[PATCH v6] ubifs: introduce UBIFS_ATIME_SUPPORT to ubifs

Richard Weinberger richard at nod.at
Sat Oct 3 11:34:45 PDT 2015


Am 21.08.2015 um 05:10 schrieb Dongsheng Yang:
> To make ubifs support atime flexily, this commit introduces
> a Kconfig option named as UBIFS_ATIME_SUPPORT.
> 
> With UBIFS_ATIME_SUPPORT=n:
> 	ubifs keeps the full compatibility to no_atime from
> the start of ubifs.
> =================UBIFS_ATIME_SUPPORT=n=======================
> -o - no atime
> -o atime - no atime
> -o noatime - no atime
> -o relatime - no atime
> -o strictatime - no atime
> -o lazyatime - no atime
> 
> With UBIFS_ATIME_SUPPORT=y:
> 	ubifs supports the atime same with other main stream
> file systems.
> =================UBIFS_ATIME_SUPPORT=y=======================
> -o - default behavior (relatime currently)
> -o atime - atime support
> -o noatime - no atime support
> -o relatime - relative atime support
> -o strictatime - strict atime support
> -o lazyatime - lazy atime support
> 
> Signed-off-by: Dongsheng Yang <yangds.fnst at cn.fujitsu.com>
> ---
> 	-v2:
> 		implement update_time for ubifs
> 	-v3:
> 		Oops, forgot to assign update_time for
> 		ubifs_dir_inode_operations.
> 	-v4:
> 		drop the patch to change 'Y' to 'N' in
> 		Kconfig
> 	-v5:
> 		simplify the warning in atime supporting
> 	-v6:
> 		* replace ubifs_warn with ubifs_msg
> 		* rewrite the messages in Kconfig as Artem suggested
> 		* remove S_VERSION related code
>  fs/ubifs/Kconfig | 15 +++++++++++++++
>  fs/ubifs/dir.c   |  3 +++
>  fs/ubifs/file.c  | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
>  fs/ubifs/super.c | 12 ++++++++++--
>  fs/ubifs/ubifs.h |  1 +
>  5 files changed, 77 insertions(+), 2 deletions(-)
> 
> diff --git a/fs/ubifs/Kconfig b/fs/ubifs/Kconfig
> index ba66d50..7ff7712 100644
> --- a/fs/ubifs/Kconfig
> +++ b/fs/ubifs/Kconfig
> @@ -35,3 +35,18 @@ config UBIFS_FS_ZLIB
>  	default y
>  	help
>  	  Zlib compresses better than LZO but it is slower. Say 'Y' if unsure.
> +
> +config UBIFS_ATIME_SUPPORT
> +	bool "Access time support" if UBIFS_FS
> +	depends on UBIFS_FS
> +	default n
> +	help
> +	  Originally UBIFS did not support atime, because it looked like a bad idea due
> +	  increased flash wear. This option adds atime support and it is disabled by default
> +	  to preserve the old behavior. If you enable this option, UBIFS starts updating atime,
> +	  which means that file-system read operations will cause writes (inode atime
> +	  updates). This may affect file-system performance and increase flash device wear,
> +	  so be careful. How often atime is updated depends on the selected strategy:
> +	  strictatime is the "heavy", relatime is "lighter", etc.
> +
> +	  If unsure, say 'N'
> diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c
> index 27060fc..8d93427 100644
> --- a/fs/ubifs/dir.c
> +++ b/fs/ubifs/dir.c
> @@ -1187,6 +1187,9 @@ const struct inode_operations ubifs_dir_inode_operations = {
>  	.getxattr    = ubifs_getxattr,
>  	.listxattr   = ubifs_listxattr,
>  	.removexattr = ubifs_removexattr,
> +#ifdef CONFIG_UBIFS_ATIME_SUPPORT
> +	.update_time = ubifs_update_time,
> +#endif
>  };
>  
>  const struct file_operations ubifs_dir_operations = {
> diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c
> index 35efc10..423ce6b 100644
> --- a/fs/ubifs/file.c
> +++ b/fs/ubifs/file.c
> @@ -1364,6 +1364,45 @@ static inline int mctime_update_needed(const struct inode *inode,
>  }
>  
>  /**
> + * ubifs_update_time - update time of inode.
> + * @inode: inode to update
> + *
> + * This function updates time of the inode.
> + */
> +int ubifs_update_time(struct inode *inode, struct timespec *time,
> +			     int flags)

This function should be under an "#ifdef CONFIG_UBIFS_ATIME_SUPPORT".

Beside of that,
Reviewed-by: Richard Weinberger <richard at nod.at>

I think we can queue it for v4.4. Artem, what do you think?

Thanks,
//richard



More information about the linux-mtd mailing list