summaryrefslogtreecommitdiff
path: root/libbcachefs/journal.c
diff options
context:
space:
mode:
Diffstat (limited to 'libbcachefs/journal.c')
-rw-r--r--libbcachefs/journal.c28
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);