Following yesterday’s F2FS pull request, the exFAT file-system updates were sent out and since merged for the ongoing 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 the patch:
“Test: androbench by default setting, use 64GB sdcard. the random write speed:
without this patch 3.5MB/s
with this patch 7MB/sAfter 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. 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 merged for Linux 6.17 and will likely be back-ported too for prior kernel stable series.