diff options
| author | Chao Shi <coshi036@gmail.com> | 2026-08-06 12:58:38 -0400 |
|---|---|---|
| committer | Christian Brauner <brauner@kernel.org> | 2026-09-10 09:27:25 +0200 |
| commit | 8bf5c5a94a8707f879706fd42a8bf5604955d12c (patch) | |
| tree | 390b484812332911c096eb667b394a0e54066258 /tools/lib/python/kdoc/python_version.py | |
| parent | a186ae5716fab861104e746930c34812530ac8bd (diff) | |
| download | linux-next-8bf5c5a94a8707f879706fd42a8bf5604955d12c.tar.gz linux-next-8bf5c5a94a8707f879706fd42a8bf5604955d12c.zip | |
ocfs2: check for a stale write error before reusing a metadata buffer
__ocfs2_journal_access() refuses to journal a buffer whose previous write
failed, and turns the filesystem read-only rather than risk metadata
inconsistency. That check sits inside an if (!buffer_uptodate(bh)) block,
because until now a failed write also cleared BH_Uptodate.
This series stops clearing BH_Uptodate on write error, so that outer test
would never fire again and ocfs2 would silently start reusing buffers whose
last write failed. Hoist the check out of the debug block, where it does
not depend on BH_Uptodate any more, and drop the now dead second half of
its condition.
The mlog() pair keeps its own !buffer_uptodate() guard: it is a separate
"we can safely remove this assertion after testing" debug aid about being
handed a buffer with no valid contents, which is a different question from
whether the last write of that buffer failed.
The unlocked test followed by a locked retest is deliberate. BH_Write_EIO
is cleared under the buffer lock, so taking the lock and looking a second
time avoids turning the
filesystem read-only over an error that a concurrent rewrite has already
cleared, while keeping the common case lock-free.
The code in this patch is Jan's, from the review discussion linked in the
cover letter.
Suggested-by: Jan Kara <jack@suse.cz>
Acked-by: Weidong Zhu <weizhu@fiu.edu>
Signed-off-by: Chao Shi <coshi036@gmail.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Link: https://patch.msgid.link/ad75c40927060cafe5a8ac45ae71c02ae4dfba04.1785951556.git.coshi036@gmail.com
Signed-off-by: Christian Brauner (Amutable) <brauner@kernel.org>
Diffstat (limited to 'tools/lib/python/kdoc/python_version.py')
0 files changed, 0 insertions, 0 deletions
