diff options
Diffstat (limited to 'libbcachefs/journal.c')
-rw-r--r-- | libbcachefs/journal.c | 28 |
1 files changed, 7 insertions, 21 deletions
diff --git a/libbcachefs/journal.c b/libbcachefs/journal.c index d092dc0b..3ec80437 100644 --- a/libbcachefs/journal.c +++ b/libbcachefs/journal.c @@ -55,19 +55,6 @@ static void bch2_journal_buf_init(struct journal *j) buf->data->u64s = 0; } -static inline bool journal_entry_empty(struct jset *j) -{ - struct jset_entry *i; - - if (j->seq != j->last_seq) - return false; - - vstruct_for_each(j, i) - if (i->type || i->u64s) - return false; - return true; -} - void bch2_journal_halt(struct journal *j) { union journal_res_state old, new; @@ -1001,9 +988,9 @@ int bch2_fs_journal_start(struct journal *j, u64 cur_seq, u64 last_seq = cur_seq, nr, seq; if (!list_empty(journal_entries)) - last_seq = le64_to_cpu(list_last_entry(journal_entries, - struct journal_replay, - list)->j.last_seq); + last_seq = le64_to_cpu(list_first_entry(journal_entries, + struct journal_replay, + list)->j.seq); nr = cur_seq - last_seq; @@ -1016,6 +1003,8 @@ int bch2_fs_journal_start(struct journal *j, u64 cur_seq, } } + j->replay_journal_seq = last_seq; + j->replay_journal_seq_end = cur_seq; j->last_seq_ondisk = last_seq; j->pin.front = last_seq; j->pin.back = cur_seq; @@ -1024,7 +1013,7 @@ int bch2_fs_journal_start(struct journal *j, u64 cur_seq, fifo_for_each_entry_ptr(p, &j->pin, seq) { INIT_LIST_HEAD(&p->list); INIT_LIST_HEAD(&p->flushed); - atomic_set(&p->count, 0); + atomic_set(&p->count, 1); p->devs.nr = 0; } @@ -1033,10 +1022,7 @@ int bch2_fs_journal_start(struct journal *j, u64 cur_seq, BUG_ON(seq < last_seq || seq >= cur_seq); - p = journal_seq_pin(j, seq); - - atomic_set(&p->count, 1); - p->devs = i->devs; + journal_seq_pin(j, seq)->devs = i->devs; } spin_lock(&j->lock); |