Commit 2e92d26b authored by Kent Overstreet's avatar Kent Overstreet
Browse files

bcachefs: Fix lost wakeup on journal shutdown



We need to check for journal shutdown first in __journal_res_get() -
after the journal is shutdown, j->watermark won't be changing anymore.

Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent c502b5b8
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -511,18 +511,18 @@ static int __journal_res_get(struct journal *j, struct journal_res *res,
	if (journal_res_get_fast(j, res, flags))
		return 0;

	if (bch2_journal_error(j))
		return -BCH_ERR_erofs_journal_err;

	if (j->blocked)
		return -BCH_ERR_journal_res_get_blocked;

	if ((flags & BCH_WATERMARK_MASK) < j->watermark) {
		ret = JOURNAL_ERR_journal_full;
		can_discard = j->can_discard;
		goto out;
	}

	if (j->blocked)
		return -BCH_ERR_journal_res_get_blocked;

	if (bch2_journal_error(j))
		return -BCH_ERR_erofs_journal_err;

	if (nr_unwritten_journal_entries(j) == ARRAY_SIZE(j->buf) && !journal_entry_is_open(j)) {
		ret = JOURNAL_ERR_max_in_flight;
		goto out;