platform_kernel-5.15/fs/exfat
liujinbao1 124ff5de44 UPSTREAM: exfat: reduce block requests when zeroing a cluster
If 'dirsync' is enabled, when zeroing a cluster, submitting
sector by sector will generate many block requests, will
cause the block device to not fully perform its performance.

This commit makes the sectors in a cluster to be submitted in
once, it will reduce the number of block requests. This will
make the block device to give full play to its performance.

Test create 1000 directories on SD card with:

$ time (for ((i=0;i<1000;i++)); do mkdir dir${i}; done)

Performance has been improved by more than 73% on imx6q-sabrelite.

Cluster size       Before         After       Improvement
64  KBytes         3m34.036s      0m56.052s   73.8%
128 KBytes         6m2.644s       1m13.354s   79.8%
256 KBytes         11m22.202s     1m39.451s   85.4%

imx6q-sabrelite:
  - CPU: 792 MHz x4
  - Memory: 1GB DDR3
  - SD Card: SanDisk 8GB Class 4

Bug: 239500767

Signed-off-by: Yuezhang Mo <Yuezhang.Mo@sony.com>
Reviewed-by: Andy Wu <Andy.Wu@sony.com>
Reviewed-by: Aoyama Wataru <wataru.aoyama@sony.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Acked-by: Sungjong Seo <sj1557.seo@samsung.com>
(cherry picked from commit 1b6138385499507147e8f654840f4c39afe6adbf)
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>

Signed-off-by: liujinbao1 <liujinbao1@xiaomi.com>
Change-Id: Ie9ed20fb90caed2fce2692f7fb81272cf647faa7
(cherry picked from commit 1f44e4411f9e914fac45dd1a232ccabcc05811b3)
2022-07-28 15:37:26 +00:00
..
Kconfig exfat: Improve wording of EXFAT_DEFAULT_IOCHARSET config option 2020-06-09 16:48:39 +09:00
Makefile exfat: add Kconfig and Makefile 2020-03-05 21:00:40 -05:00
balloc.c exfat: improve write performance when dirsync enabled 2021-04-27 20:45:06 +09:00
cache.c exfat: fix use of uninitialized spinlock on error path 2020-10-07 14:27:13 +09:00
dir.c exfat: handle wrong stream entry size in exfat_readdir() 2021-07-04 09:33:00 +09:00
exfat_fs.h exfat: speed up iterate/lookup by fixing start point of traversing cluster chain 2021-04-27 20:45:07 +09:00
exfat_raw.h exfat: fix shift-out-of-bounds in exfat_fill_super() 2021-02-22 09:55:13 +09:00
fatent.c UPSTREAM: exfat: reduce block requests when zeroing a cluster 2022-07-28 15:37:26 +00:00
file.c exfat: fix i_blocks for files truncated over 4 GiB 2022-03-08 19:12:32 +01:00
inode.c exfat: fix i_blocks for files truncated over 4 GiB 2022-03-08 19:12:32 +01:00
misc.c exfat: write multiple sectors at once 2020-08-12 08:31:11 +09:00
namei.c exfat: reuse exfat_inode_info variable instead of calling EXFAT_I() 2022-03-08 19:12:31 +01:00
nls.c exfat: Avoid allocating upcase table using kcalloc() 2020-12-22 12:31:17 +09:00
super.c ANDROID: GKI: set vfs-only exports into their own namespace 2022-04-07 15:14:24 +02:00