On 5/29/26 10:29, Wenjie Qi wrote:
> prepare_write_begin() first gets the inode folio and builds a dnode,
> then checks the read extent cache. For an ordinary overwrite of a
> non-inline and non-compressed file, an extent-cache hit already gives the
> data block address and the following path does not need to allocate or
> update any node state.
> 
> Check the read extent cache before fetching the inode folio for that
> narrow case. Keep the existing paths for inline data, compressed files,
> and writes that may extend past EOF, where the helper may need inline
> conversion, compression preparation, or block reservation.
> 
> This avoids a node-folio lookup in the buffered overwrite fast path when
> the mapping is already cached.
> 
> In a QEMU/KASAN x86_64 VM, using a small buffered overwrite workload on
> an existing 1MiB file, median time improved as follows:
> 
>   64-byte overwrites:  1724.93 ns/write -> 1560.24 ns/write
>   256-byte overwrites: 1713.38 ns/write -> 1577.85 ns/write
> 
> Function profiling of 20k 64-byte overwrites showed
> f2fs_get_inode_folio() calls drop from 20004 to 4.
> 
> Signed-off-by: Wenjie Qi <[email protected]>

Reviewed-by: Chao Yu <[email protected]>

Thanks,


_______________________________________________
Linux-f2fs-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to