]> www.infradead.org Git - users/jedix/linux-maple.git/commit
jbd2: fix off-by-one while erasing journal
authorZhang Yi <yi.zhang@huawei.com>
Mon, 17 Feb 2025 06:59:55 +0000 (14:59 +0800)
committerTheodore Ts'o <tytso@mit.edu>
Tue, 18 Mar 2025 04:15:25 +0000 (00:15 -0400)
commit18aba2adb3e2a676fff0d81e51f5045f3c636666
tree96a617fef375252735424cc3ee6146d7c81832d1
parent08be56fec0588972f6fd4a3ce4ced3265de43dd8
jbd2: fix off-by-one while erasing journal

In __jbd2_journal_erase(), the block_stop parameter includes the last
block of a contiguous region; however, the calculation of byte_stop is
incorrect, as it does not account for the bytes in that last block.
Consequently, the page cache is not cleared properly, which occasionally
causes the ext4/050 test to fail.

Since block_stop operates on inclusion semantics, it involves repeated
increments and decrements by 1, significantly increasing the complexity
of the calculations. Optimize the calculation and fix the incorrect
byte_stop by make both block_stop and byte_stop to use exclusion
semantics.

This fixes a failure in fstests ext4/050.

Fixes: 01d5d96542fd ("ext4: add discard/zeroout flags to journal flush")
Signed-off-by: Zhang Yi <yi.zhang@huawei.com>
Reviewed-by: Baokun Li <libaokun1@huawei.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Link: https://patch.msgid.link/20250217065955.3829229-1-yi.zhang@huaweicloud.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/jbd2/journal.c