diff options
| author | Chi Zhiling <chizhiling@kylinos.cn> | 2026-03-03 11:14:04 +0800 |
|---|---|---|
| committer | Namjae Jeon <linkinjeon@kernel.org> | 2026-03-05 21:08:21 +0900 |
| commit | 6ed88c9491d7693c87dd8bfb850c56770310828b (patch) | |
| tree | 086a27ab1892bd59adb0ea89bbd7937f9bffe5c0 /include/asm-arm/hardware/git@git.tavy.me:linux.git | |
| parent | bf1797960c20f3d4dc4e8b6f560ca39692abac56 (diff) | |
exfat: add block readahead in exfat_chain_cont_cluster
When a file cannot allocate contiguous clusters, exfat converts the file
from NO_FAT_CHAIN to FAT_CHAIN format. For large files, this conversion
process can take a significant amount of time.
Add simple readahead to read all the FAT blocks in advance, as these
blocks are consecutive, significantly improving the conversion performance.
Test in an empty exfat filesystem:
dd if=/dev/zero of=/mnt/file bs=1M count=30k
dd if=/dev/zero of=/mnt/file2 bs=1M count=1
time cat /mnt/file2 >> /mnt/file
| cluster size | before patch | after patch |
| ------------ | ------------ | ----------- |
| 512 | 47.667s | 4.316s |
| 4k | 6.436s | 0.541s |
| 32k | 0.758s | 0.071s |
| 256k | 0.117s | 0.011s |
Signed-off-by: Chi Zhiling <chizhiling@kylinos.cn>
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Diffstat (limited to 'include/asm-arm/hardware/git@git.tavy.me:linux.git')
0 files changed, 0 insertions, 0 deletions
