The F2FS file-system enhancements have been merged for the Linux 6.18 kernel and include some new performance optimizations.
F2FS enables hash-based file-name lookups by default for improving performance. The second optimization focused on Android use is resolving a persistent issue with the checkpoint feature.
F2FS in Linux 6.18 also boosts performance via pre-fetching node blocks, more efficient merging of FUA writes, and optimizing block allocation policies. There is also the notion now of reserved nodes for privileged users. Plus various bug fixes in the F2FS code.
Enhancement:
– add mount option and sysfs entry to tune the lookup mode
– dump more information and add a timeout when enabling/disabling checkpoints
– readahead node blocks in F2FS_GET_BLOCK_PRECACHE mode
– merge FUA command with the existing writes
– allocate HOT_DATA for IPU writes
– Use allocate_section_policy to control write priority in multi-devices setups
– add reserved nodes for privileged users
– Add bggc_io_aware to adjust the priority of BG_GC when issuing IO
– show the list of donation filesBug fix:
– add missing dput() when printing the donation list
– fix UAF issue in f2fs_merge_page_bio()
– add sanity check on ei.len in __update_extent_tree_range()
– fix infinite loop in __insert_extent_tree()
– fix zero-sized extent for precache extents
– fix to mitigate overhead of f2fs_zero_post_eof_page()
– fix to avoid migrating empty section
– fix to truncate first page in error path of f2fs_truncate()
– fix to update map->m_next_extent correctly in f2fs_map_blocks()
– fix wrong layout information on 16KB page
– fix to do sanity check on node footer for non inode dnode
– fix to avoid NULL pointer dereference in f2fs_check_quota_consistency()
– fix to detect potential corrupted nid in free_nid_list
– fix to clear unusable_cap for checkpoint=enable
– fix to zero data after EOF for compressed file correctly
– fix to avoid overflow while left shift operation
– fix condition in __allow_reserved_blocks()
More details on these F2FS enhancements in Linux 6.18 via this pull request.