History

bcachefs: Fix write buffer flushing from open journal entry

When flushing the btree write buffer, we pull write buffer keys directly from the journal instead of letting the journal write path copy them to the write buffer. When flushing from the currently open journal buffer, we have to block new reservations and wait for outstanding reservations to complete. Recheck the reservation state after blocking new reservations: previously, we were checking the reservation count from before calling __journal_block().

Kent Overstreet committed 1 year ago

Commit 18318401 parent eef91701 file · +1 −0Browse files

Unified · Split

fs/bcachefs/journal.c+1−0
@@ -1082,6 +1082,7 @@ static struct journal_buf *__bch2_next_write_buffer_flush_journal_buf(struct jou · 1081 unmodified lines
1082 1082
1083 if (open && !*blocked) {1083 if (open && !*blocked) {
1084 __bch2_journal_block(j);1084 __bch2_journal_block(j);
1085 s.v = atomic64_read_acquire(&j->reservations.counter);
1085 *blocked = true;1086 *blocked = true;
1086 }1087 }
1087 1088