lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <Zh6tC-fTZZlP5Dk2@google.com>
Date: Tue, 16 Apr 2024 16:53:31 +0000
From: Jaegeuk Kim <jaegeuk@...nel.org>
To: Liao Yuanhong <liaoyuanhong@...o.com>
Cc: chao@...nel.org, linux-f2fs-devel@...ts.sourceforge.net,
	linux-kernel@...r.kernel.org
Subject: Re: [f2fs-dev] [PATCH] f2fs:add zone device priority option to the
 mount options

I don't see any point why we need this.

On 04/15, Liao Yuanhong wrote:
> Add a zone device priority option in the mount options. When enabled, the 
> file system will prioritize using zone devices free space instead of 
> conventional devices when writing to the end of the storage space.
> 
> Signed-off-by: Liao Yuanhong <liaoyuanhong@...o.com>
> ---
>  fs/f2fs/f2fs.h    |  1 +
>  fs/f2fs/segment.c | 13 ++++++++++++-
>  fs/f2fs/super.c   | 20 ++++++++++++++++++++
>  3 files changed, 33 insertions(+), 1 deletion(-)
> 
> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
> index fced2b7652f4..e2438f7d2e13 100644
> --- a/fs/f2fs/f2fs.h
> +++ b/fs/f2fs/f2fs.h
> @@ -116,6 +116,7 @@ extern const char *f2fs_fault_name[FAULT_MAX];
>  #define	F2FS_MOUNT_GC_MERGE		0x02000000
>  #define F2FS_MOUNT_COMPRESS_CACHE	0x04000000
>  #define F2FS_MOUNT_AGE_EXTENT_CACHE	0x08000000
> +#define F2FS_MOUNT_PRIORITY_ZONED	0x10000000
>  
>  #define F2FS_OPTION(sbi)	((sbi)->mount_opt)
>  #define clear_opt(sbi, option)	(F2FS_OPTION(sbi).opt &= ~F2FS_MOUNT_##option)
> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
> index 4fd76e867e0a..adbe68a11fa5 100644
> --- a/fs/f2fs/segment.c
> +++ b/fs/f2fs/segment.c
> @@ -2697,7 +2697,18 @@ static int get_new_segment(struct f2fs_sb_info *sbi,
>  find_other_zone:
>  	secno = find_next_zero_bit(free_i->free_secmap, MAIN_SECS(sbi), hint);
>  	if (secno >= MAIN_SECS(sbi)) {
> -		secno = find_first_zero_bit(free_i->free_secmap,
> +		/* set hint to get section from zone device first */
> +		if (test_opt(sbi, PRIORITY_ZONED)) {
> +			hint = GET_SEC_FROM_SEG(sbi, first_zoned_segno(sbi));
> +			secno = find_next_zero_bit(free_i->free_secmap,
> +						MAIN_SECS(sbi), hint);
> +
> +			/* get section from clu if exceeding the size limit */
> +			if (secno >= MAIN_SECS(sbi))
> +				secno = find_first_zero_bit(free_i->free_secmap,
> +							MAIN_SECS(sbi));
> +		} else
> +			secno = find_first_zero_bit(free_i->free_secmap,
>  							MAIN_SECS(sbi));
>  		if (secno >= MAIN_SECS(sbi)) {
>  			ret = -ENOSPC;
> diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c
> index a4bc26dfdb1a..2742978a100a 100644
> --- a/fs/f2fs/super.c
> +++ b/fs/f2fs/super.c
> @@ -126,6 +126,8 @@ enum {
>  	Opt_inline_data,
>  	Opt_inline_dentry,
>  	Opt_noinline_dentry,
> +	Opt_priority_zoned,
> +	Opt_nopriority_zoned,
>  	Opt_flush_merge,
>  	Opt_noflush_merge,
>  	Opt_barrier,
> @@ -204,6 +206,8 @@ static match_table_t f2fs_tokens = {
>  	{Opt_inline_data, "inline_data"},
>  	{Opt_inline_dentry, "inline_dentry"},
>  	{Opt_noinline_dentry, "noinline_dentry"},
> +	{Opt_priority_zoned, "priority_zoned"},
> +	{Opt_nopriority_zoned, "nopriority_zoned"},
>  	{Opt_flush_merge, "flush_merge"},
>  	{Opt_noflush_merge, "noflush_merge"},
>  	{Opt_barrier, "barrier"},
> @@ -805,6 +809,16 @@ static int parse_options(struct super_block *sb, char *options, bool is_remount)
>  		case Opt_noinline_dentry:
>  			clear_opt(sbi, INLINE_DENTRY);
>  			break;
> +#ifdef CONFIG_BLK_DEV_ZONED
> +		case Opt_priority_zoned:
> +			if (f2fs_sb_has_blkzoned(sbi))
> +				set_opt(sbi, PRIORITY_ZONED);
> +			break;
> +		case Opt_nopriority_zoned:
> +			if (f2fs_sb_has_blkzoned(sbi))
> +				clear_opt(sbi, PRIORITY_ZONED);
> +			break;
> +#endif
>  		case Opt_flush_merge:
>  			set_opt(sbi, FLUSH_MERGE);
>  			break;
> @@ -1990,6 +2004,12 @@ static int f2fs_show_options(struct seq_file *seq, struct dentry *root)
>  		seq_puts(seq, ",inline_dentry");
>  	else
>  		seq_puts(seq, ",noinline_dentry");
> +#ifdef CONFIG_BLK_DEV_ZONED
> +	if (test_opt(sbi, PRIORITY_ZONED))
> +		seq_puts(seq, ",priority_zoned");
> +	else
> +		seq_puts(seq, ",nopriority_zoned");
> +#endif
>  	if (test_opt(sbi, FLUSH_MERGE))
>  		seq_puts(seq, ",flush_merge");
>  	else
> -- 
> 2.25.1

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ