exFAT Fixes Significant Random Write Performance Regression With Linux 6.17
([Linux Storage] 61 Minutes Ago
exFAT)
- Reference: 0001566895
- News link: https://www.phoronix.com/news/Linux-6.17-exFAT
- Source link:
Following yesterday's [1]F2FS pull request , the exFAT file-system updates were sent out and since merged for the ongoing [2]Linux 6.17 kernel merge window.
There are only two patches for exFAT during the Linux 6.17 merge window but they are significant.
First up, is a patch for proper handling of the "fdatasync" flag to fix a performance regression previously introduced for this exFAT file-system driver in the Linux kernel. In fixing the issue, the random write performance on an SD card doubled from 3.5MB/s to 7MB/s. Zhengxu Zhang of Unisoc explained with [3]the patch :
"Test: androbench by default setting, use 64GB sdcard. the random write speed:
without this patch 3.5MB/s
with this patch 7MB/s
After patch "11a347fb6cef", the random write speed decreased significantly. the .write_iter() interface had been modified, and check the differences with generic_file_write_iter(), when calling generic_write_sync() and exfat_file_write_iter() to call vfs_fsync_range(), the fdatasync flag is wrong, and make not use the fdatasync mode, and make random write speed decreased. So use generic_write_sync() instead of vfs_fsync_range()."
The other patch is for addressing an infinite loop situation that may occur due to file-system corruption on exFAT. [4]That patch explains the situations by which the exFAT driver could get stuck in an infinite loop currently when encountering exFAT corruption.
Both fixes are now [5]merged for Linux 6.17 and will likely be back-ported too for prior kernel stable series.
[1] https://www.phoronix.com/news/Linux-6.17-F2FS
[2] https://www.phoronix.com/search/Linux+6.17
[3] https://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/exfat.git/commit/?h=dev&id=2f2d42a17b5a6711378d39df74f1f69a831c5d4e
[4] https://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/exfat.git/commit/?h=dev&id=99f9a97dce39ad413c39b92c90393bbd6778f3fd
[5] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5998f2bca43e071e9c5a26cc7e7e00f9a78791c4
There are only two patches for exFAT during the Linux 6.17 merge window but they are significant.
First up, is a patch for proper handling of the "fdatasync" flag to fix a performance regression previously introduced for this exFAT file-system driver in the Linux kernel. In fixing the issue, the random write performance on an SD card doubled from 3.5MB/s to 7MB/s. Zhengxu Zhang of Unisoc explained with [3]the patch :
"Test: androbench by default setting, use 64GB sdcard. the random write speed:
without this patch 3.5MB/s
with this patch 7MB/s
After patch "11a347fb6cef", the random write speed decreased significantly. the .write_iter() interface had been modified, and check the differences with generic_file_write_iter(), when calling generic_write_sync() and exfat_file_write_iter() to call vfs_fsync_range(), the fdatasync flag is wrong, and make not use the fdatasync mode, and make random write speed decreased. So use generic_write_sync() instead of vfs_fsync_range()."
The other patch is for addressing an infinite loop situation that may occur due to file-system corruption on exFAT. [4]That patch explains the situations by which the exFAT driver could get stuck in an infinite loop currently when encountering exFAT corruption.
Both fixes are now [5]merged for Linux 6.17 and will likely be back-ported too for prior kernel stable series.
[1] https://www.phoronix.com/news/Linux-6.17-F2FS
[2] https://www.phoronix.com/search/Linux+6.17
[3] https://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/exfat.git/commit/?h=dev&id=2f2d42a17b5a6711378d39df74f1f69a831c5d4e
[4] https://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/exfat.git/commit/?h=dev&id=99f9a97dce39ad413c39b92c90393bbd6778f3fd
[5] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5998f2bca43e071e9c5a26cc7e7e00f9a78791c4
phoronix