Commit b05c0e93 authored by Kent Overstreet's avatar Kent Overstreet
Browse files

bcachefs: journal->buf_lock



Add a new lock for synchronizing between journal IO path and btree write
buffer flush.

Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent 0ba9375a
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1219,6 +1219,7 @@ int bch2_fs_journal_init(struct journal *j)
	static struct lock_class_key res_key;
	unsigned i;

	mutex_init(&j->buf_lock);
	spin_lock_init(&j->lock);
	spin_lock_init(&j->err_lock);
	init_waitqueue_head(&j->wait);
+2 −0
Original line number Diff line number Diff line
@@ -1885,9 +1885,11 @@ CLOSURE_CALLBACK(bch2_journal_write)
	if (ret)
		goto err;

	mutex_lock(&j->buf_lock);
	journal_buf_realloc(j, w);

	ret = bch2_journal_write_prep(j, w);
	mutex_unlock(&j->buf_lock);
	if (ret)
		goto err;

+6 −0
Original line number Diff line number Diff line
@@ -181,6 +181,12 @@ struct journal {
	 */
	darray_u64		early_journal_entries;

	/*
	 * Protects journal_buf->data, when accessing without a jorunal
	 * reservation: for synchronization between the btree write buffer code
	 * and the journal write path:
	 */
	struct mutex		buf_lock;
	/*
	 * Two journal entries -- one is currently open for new entries, the
	 * other is possibly being written out.