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 for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Thu, 2 Jul 2020 21:06:33 +0900
From:   "Sungjong Seo" <sj1557.seo@...sung.com>
To:     "'Tetsuhiro Kohada'" <kohada.t2@...il.com>
Cc:     <kohada.tetsuhiro@...mitsubishielectric.co.jp>,
        <mori.takahiro@...mitsubishielectric.co.jp>,
        <motai.hirotaka@...mitsubishielectric.co.jp>,
        "'Namjae Jeon'" <namjae.jeon@...sung.com>,
        <linux-fsdevel@...r.kernel.org>, <linux-kernel@...r.kernel.org>
Subject: RE: [PATCH v2] exfat: optimize exfat_zeroed_cluster()

> Replace part of exfat_zeroed_cluster() with exfat_update_bhs().
> And remove exfat_sync_bhs().
> 
> Signed-off-by: Tetsuhiro Kohada <kohada.t2@...il.com>

Reviewed-by: Sungjong Seo <sj1557.seo@...sung.com>

Looks good. Thanks.

> ---
> Changes in v2
>  - Rebase to latest exfat-dev
> 
>  fs/exfat/fatent.c | 53 +++++++++--------------------------------------
>  1 file changed, 10 insertions(+), 43 deletions(-)
> 
> diff --git a/fs/exfat/fatent.c b/fs/exfat/fatent.c index
> 82ee8246c080..c3c9afee7418 100644
> --- a/fs/exfat/fatent.c
> +++ b/fs/exfat/fatent.c
> @@ -229,21 +229,6 @@ int exfat_find_last_cluster(struct super_block *sb,
> struct exfat_chain *p_chain,
>  	return 0;
>  }
> 
> -static inline int exfat_sync_bhs(struct buffer_head **bhs, int nr_bhs) -{
> -	int i, err = 0;
> -
> -	for (i = 0; i < nr_bhs; i++)
> -		write_dirty_buffer(bhs[i], 0);
> -
> -	for (i = 0; i < nr_bhs; i++) {
> -		wait_on_buffer(bhs[i]);
> -		if (!err && !buffer_uptodate(bhs[i]))
> -			err = -EIO;
> -	}
> -	return err;
> -}
> -
>  int exfat_zeroed_cluster(struct inode *dir, unsigned int clu)  {
>  	struct super_block *sb = dir->i_sb;
> @@ -265,41 +250,23 @@ int exfat_zeroed_cluster(struct inode *dir, unsigned
> int clu)
>  	}
> 
>  	/* Zeroing the unused blocks on this cluster */
> -	n = 0;
>  	while (blknr < last_blknr) {
> -		bhs[n] = sb_getblk(sb, blknr);
> -		if (!bhs[n]) {
> -			err = -ENOMEM;
> -			goto release_bhs;
> -		}
> -		memset(bhs[n]->b_data, 0, sb->s_blocksize);
> -		exfat_update_bh(bhs[n], 0);
> -
> -		n++;
> -		blknr++;
> -
> -		if (n == nr_bhs) {
> -			if (IS_DIRSYNC(dir)) {
> -				err = exfat_sync_bhs(bhs, n);
> -				if (err)
> -					goto release_bhs;
> +		for (n = 0; n < nr_bhs && blknr < last_blknr; n++, blknr++)
> {
> +			bhs[n] = sb_getblk(sb, blknr);
> +			if (!bhs[n]) {
> +				err = -ENOMEM;
> +				goto release_bhs;
>  			}
> -
> -			for (i = 0; i < n; i++)
> -				brelse(bhs[i]);
> -			n = 0;
> +			memset(bhs[n]->b_data, 0, sb->s_blocksize);
>  		}
> -	}
> 
> -	if (IS_DIRSYNC(dir)) {
> -		err = exfat_sync_bhs(bhs, n);
> +		err = exfat_update_bhs(bhs, n, IS_DIRSYNC(dir));
>  		if (err)
>  			goto release_bhs;
> -	}
> -
> -	for (i = 0; i < n; i++)
> -		brelse(bhs[i]);
> 
> +		for (i = 0; i < n; i++)
> +			brelse(bhs[i]);
> +	}
>  	return 0;
> 
>  release_bhs:
> --
> 2.25.1


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ