]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/journal.c
Update bcachefs sources to 62de7539dc bcachefs: Make bkey types globally unique
[bcachefs-tools-debian] / libbcachefs / journal.c
index ac1219fc6b66b78f75a89da867c157a249a67fe8..47cfd50d444ee01a629dc9a6032614f392dbe2db 100644 (file)
@@ -462,7 +462,7 @@ u64 bch2_journal_last_unwritten_seq(struct journal *j)
 int bch2_journal_open_seq_async(struct journal *j, u64 seq, struct closure *cl)
 {
        struct bch_fs *c = container_of(j, struct bch_fs, journal);
-       bool need_reclaim = false;
+       int ret;
 retry:
        spin_lock(&j->lock);
 
@@ -490,14 +490,11 @@ retry:
 
        BUG_ON(journal_cur_seq(j) < seq);
 
-       if (!journal_entry_open(j)) {
-               need_reclaim = true;
-               goto blocked;
+       ret = journal_entry_open(j);
+       if (ret) {
+               spin_unlock(&j->lock);
+               return ret < 0 ? ret : 0;
        }
-
-       spin_unlock(&j->lock);
-
-       return 0;
 blocked:
        if (!j->res_get_blocked_start)
                j->res_get_blocked_start = local_clock() ?: 1;
@@ -505,8 +502,7 @@ blocked:
        closure_wait(&j->async_wait, cl);
        spin_unlock(&j->lock);
 
-       if (need_reclaim)
-               bch2_journal_reclaim_work(&j->reclaim_work.work);
+       bch2_journal_reclaim_work(&j->reclaim_work.work);
        return -EAGAIN;
 }