aboutsummaryrefslogtreecommitdiffstats
path: root/fs/bcachefs/btree_write_buffer.h
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2024-11-07 21:48:33 -0500
committerKent Overstreet <kent.overstreet@linux.dev>2024-11-07 23:31:11 -0500
commitca43f73cd1720e3b0b9c49deec1a13c89c0ca1e8 (patch)
treef0e13ae59746442fb545ccd3af6e4b025a008c43 /fs/bcachefs/btree_write_buffer.h
parentbcachefs: Fix UAF in __promote_alloc() error path (diff)
downloadlinux-ca43f73cd1720e3b0b9c49deec1a13c89c0ca1e8.tar.gz
linux-ca43f73cd1720e3b0b9c49deec1a13c89c0ca1e8.zip
bcachefs: bch2_btree_write_buffer_flush_going_ro()
The write buffer needs to be specifically flushed when going RO: keys in the journal that haven't yet been moved to the write buffer don't have a journal pin yet. This fixes numerous syzbot bugs, all with symptoms of still doing writes after we've got RO. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
Diffstat (limited to 'fs/bcachefs/btree_write_buffer.h')
-rw-r--r--fs/bcachefs/btree_write_buffer.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/bcachefs/btree_write_buffer.h b/fs/bcachefs/btree_write_buffer.h
index 725e79654216..d535cea28bde 100644
--- a/fs/bcachefs/btree_write_buffer.h
+++ b/fs/bcachefs/btree_write_buffer.h
@@ -21,6 +21,7 @@ static inline bool bch2_btree_write_buffer_must_wait(struct bch_fs *c)
struct btree_trans;
int bch2_btree_write_buffer_flush_sync(struct btree_trans *);
+bool bch2_btree_write_buffer_flush_going_ro(struct bch_fs *);
int bch2_btree_write_buffer_flush_nocheck_rw(struct btree_trans *);
int bch2_btree_write_buffer_tryflush(struct btree_trans *);