Commit ff56d68c authored by Kent Overstreet's avatar Kent Overstreet

bcachefs: Improve journal_read() logging

Print out the journal entries we read and will replay as soon as
possible - if we get an error walidating keys it's helpful to know where
it was in the journal.
Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent 96c2e010
...@@ -1106,7 +1106,6 @@ int bch2_journal_read(struct bch_fs *c, u64 *blacklist_seq, u64 *start_seq) ...@@ -1106,7 +1106,6 @@ int bch2_journal_read(struct bch_fs *c, u64 *blacklist_seq, u64 *start_seq)
struct bch_dev *ca; struct bch_dev *ca;
unsigned iter; unsigned iter;
struct printbuf buf = PRINTBUF; struct printbuf buf = PRINTBUF;
size_t keys = 0, entries = 0;
bool degraded = false; bool degraded = false;
u64 seq, last_seq = 0; u64 seq, last_seq = 0;
int ret = 0; int ret = 0;
...@@ -1137,7 +1136,8 @@ int bch2_journal_read(struct bch_fs *c, u64 *blacklist_seq, u64 *start_seq) ...@@ -1137,7 +1136,8 @@ int bch2_journal_read(struct bch_fs *c, u64 *blacklist_seq, u64 *start_seq)
if (jlist.ret) if (jlist.ret)
return jlist.ret; return jlist.ret;
*start_seq = 0; *start_seq = 0;
*blacklist_seq = 0;
/* /*
* Find most recent flush entry, and ignore newer non flush entries - * Find most recent flush entry, and ignore newer non flush entries -
...@@ -1150,7 +1150,7 @@ int bch2_journal_read(struct bch_fs *c, u64 *blacklist_seq, u64 *start_seq) ...@@ -1150,7 +1150,7 @@ int bch2_journal_read(struct bch_fs *c, u64 *blacklist_seq, u64 *start_seq)
continue; continue;
if (!*start_seq) if (!*start_seq)
*start_seq = le64_to_cpu(i->j.seq) + 1; *blacklist_seq = *start_seq = le64_to_cpu(i->j.seq) + 1;
if (!JSET_NO_FLUSH(&i->j)) { if (!JSET_NO_FLUSH(&i->j)) {
int write = READ; int write = READ;
...@@ -1180,6 +1180,13 @@ int bch2_journal_read(struct bch_fs *c, u64 *blacklist_seq, u64 *start_seq) ...@@ -1180,6 +1180,13 @@ int bch2_journal_read(struct bch_fs *c, u64 *blacklist_seq, u64 *start_seq)
goto err; goto err;
} }
bch_info(c, "journal read done, replaying entries %llu-%llu",
last_seq, *blacklist_seq - 1);
if (*start_seq != *blacklist_seq)
bch_info(c, "dropped unflushed entries %llu-%llu",
*blacklist_seq, *start_seq - 1);
/* Drop blacklisted entries and entries older than last_seq: */ /* Drop blacklisted entries and entries older than last_seq: */
genradix_for_each(&c->journal_entries, radix_iter, _i) { genradix_for_each(&c->journal_entries, radix_iter, _i) {
i = *_i; i = *_i;
...@@ -1252,8 +1259,6 @@ int bch2_journal_read(struct bch_fs *c, u64 *blacklist_seq, u64 *start_seq) ...@@ -1252,8 +1259,6 @@ int bch2_journal_read(struct bch_fs *c, u64 *blacklist_seq, u64 *start_seq)
} }
genradix_for_each(&c->journal_entries, radix_iter, _i) { genradix_for_each(&c->journal_entries, radix_iter, _i) {
struct jset_entry *entry;
struct bkey_i *k, *_n;
struct bch_replicas_padded replicas = { struct bch_replicas_padded replicas = {
.e.data_type = BCH_DATA_journal, .e.data_type = BCH_DATA_journal,
.e.nr_required = 1, .e.nr_required = 1,
...@@ -1303,18 +1308,7 @@ int bch2_journal_read(struct bch_fs *c, u64 *blacklist_seq, u64 *start_seq) ...@@ -1303,18 +1308,7 @@ int bch2_journal_read(struct bch_fs *c, u64 *blacklist_seq, u64 *start_seq)
if (ret) if (ret)
goto err; goto err;
} }
for_each_jset_key(k, _n, entry, &i->j)
keys++;
entries++;
} }
bch_info(c, "journal read done, %zu keys in %zu entries, seq %llu",
keys, entries, *start_seq);
if (*start_seq != *blacklist_seq)
bch_info(c, "dropped unflushed entries %llu-%llu",
*blacklist_seq, *start_seq - 1);
err: err:
fsck_err: fsck_err:
printbuf_exit(&buf); printbuf_exit(&buf);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment