On Mon, Aug 12, 2024 at 08:11:59PM +0800, Zhang Yi wrote: > @@ -866,9 +899,8 @@ static bool __iomap_write_end(struct inode *inode, loff_t pos, size_t len, > */ > if (unlikely(copied < len && !folio_test_uptodate(folio))) > return false; > - iomap_set_range_uptodate(folio, offset_in_folio(folio, pos), len); > - iomap_set_range_dirty(folio, offset_in_folio(folio, pos), copied); > - filemap_dirty_folio(inode->i_mapping, folio); > + > + iomap_set_range_dirty_uptodate(folio, from, copied); > return true; I wonder how often we overwrite a completely uptodate folio rather than writing new data to a fresh folio? iow, would this be a measurable optimisation? if (folio_test_uptodate(folio)) iomap_set_range_dirty(folio, from, copied); else iomap_set_range_dirty_uptodate(folio, from, copied);