exfat: reduce block requests when zeroing a cluster
authorYuezhang Mo <Yuezhang.Mo@sony.com>
Tue, 12 Apr 2022 03:26:47 +0000 (12:26 +0900)
committerNamjae Jeon <linkinjeon@kernel.org>
Mon, 23 May 2022 02:17:30 +0000 (11:17 +0900)
commit1b6138385499507147e8f654840f4c39afe6adbf
treefb61d13418e087b7faf7d7818e210d3ff5499e91
parent97d6fb1b48f5e6f6d58028593defe8a23641b0b4
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

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>
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
fs/exfat/fatent.c