Commit a4f7f98e authored by Zhang Yi's avatar Zhang Yi Committed by Zhihao Cheng
Browse files

iomap: optimize setting uptodate bit

hulk inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I9DN5Z


CVE: NA

--------------------------------

When overwriting an already uptodate folio, we don't need to set the
range uptodate again. This could save a barrier and some bit operations
if block size < folio size.

Suggested-by: default avatarMatthew Wilcox <willy@infradead.org>
Signed-off-by: default avatarZhang Yi <yi.zhang@huawei.com>
Conflicts:
	fs/iomap/buffered-io.c
[ 15d09f86("iomap: export __iomap_write_{begin|end}") is applied. ]
Signed-off-by: default avatarZhihao Cheng <chengzhihao1@huawei.com>
Signed-off-by: default avatarZhihao Cheng <chengzhihao@huaweicloud.com>
parent b4cf4792
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -916,7 +916,12 @@ bool __iomap_write_end(struct inode *inode, loff_t pos, size_t len,
	if (unlikely(copied < len && !folio_test_uptodate(folio)))
		return false;

	if (folio_test_uptodate(folio)) {
		iomap_set_range_dirty(folio, from, copied);
		filemap_dirty_folio(folio->mapping, folio);
	} else {
		iomap_set_range_dirty_uptodate(folio, from, copied);
	}
	return true;
}
EXPORT_SYMBOL_GPL(__iomap_write_end);