RE: [PATCH v2] exfat: optimize exfat_zeroed_cluster()

2020-07-02 Thread Namjae Jeon
> > Replace part of exfat_zeroed_cluster() with exfat_update_bhs().
> > And remove exfat_sync_bhs().
> >
> > Signed-off-by: Tetsuhiro Kohada 
> 
> Reviewed-by: Sungjong Seo 
> 
> Looks good. Thanks.
Pushed it into exfat #dev.
Thanks!



RE: [PATCH v2] exfat: optimize exfat_zeroed_cluster()

2020-07-02 Thread Sungjong Seo
> Replace part of exfat_zeroed_cluster() with exfat_update_bhs().
> And remove exfat_sync_bhs().
> 
> Signed-off-by: Tetsuhiro Kohada 

Reviewed-by: Sungjong Seo 

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