]> git.ipfire.org Git - thirdparty/linux.git/commit
ext4: don't order data when zeroing unwritten or delayed block
authorZhang Yi <yi.zhang@huawei.com>
Tue, 23 Dec 2025 01:19:27 +0000 (09:19 +0800)
committerTheodore Ts'o <tytso@mit.edu>
Tue, 20 Jan 2026 03:22:32 +0000 (22:22 -0500)
commit154922b34da9770223d9883ac6976635a786b5ba
treeff22bc78d9534b7b3ebd3c298f0994b00e80d825
parent26f260ce5828fc7897a70629884916301f5825d0
ext4: don't order data when zeroing unwritten or delayed block

When zeroing out a written partial block, it is necessary to order the
data to prevent exposing stale data on disk. However, if the buffer is
unwritten or delayed, it is not allocated as written, so ordering the
data is not required. This can prevent strange and unnecessary ordered
writes when appending data across a region within a block.

Assume we have a 2K unwritten file on a filesystem with 4K blocksize,
and buffered write from 3K to 4K. Before this patch,
__ext4_block_zero_page_range() would add the range [2k,3k) to the
ordered range, and then the JBD2 commit process would write back this
block. However, it does nothing since the block is not mapped as
written, this folio will be redirtied and written back agian through the
normal write back process.

Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Reviewed-by: Baokun Li <libaokun1@huawei.com>
Link: https://patch.msgid.link/20251223011927.34042-1-yi.zhang@huaweicloud.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/ext4/inode.c