bcachefs: Improve journal_read() logging
authorKent Overstreet <kent.overstreet@linux.dev>
Sun, 20 Nov 2022 02:20:58 +0000 (21:20 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:46 +0000 (17:09 -0400)
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: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/journal_io.c

index 6b9bd1f55fe343790a77b9c3e7c54ea8d0cbd7e3..485fd6f3003bf32afc9952f89cd3992197df862c 100644 (file)
@@ -1106,7 +1106,6 @@ int bch2_journal_read(struct bch_fs *c, u64 *blacklist_seq, u64 *start_seq)
        struct bch_dev *ca;
        unsigned iter;
        struct printbuf buf = PRINTBUF;
-       size_t keys = 0, entries = 0;
        bool degraded = false;
        u64 seq, last_seq = 0;
        int ret = 0;
@@ -1137,7 +1136,8 @@ int bch2_journal_read(struct bch_fs *c, u64 *blacklist_seq, u64 *start_seq)
        if (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 -
@@ -1150,7 +1150,7 @@ int bch2_journal_read(struct bch_fs *c, u64 *blacklist_seq, u64 *start_seq)
                        continue;
 
                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)) {
                        int write = READ;
@@ -1180,6 +1180,13 @@ int bch2_journal_read(struct bch_fs *c, u64 *blacklist_seq, u64 *start_seq)
                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: */
        genradix_for_each(&c->journal_entries, radix_iter, _i) {
                i = *_i;
@@ -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) {
-               struct jset_entry *entry;
-               struct bkey_i *k, *_n;
                struct bch_replicas_padded replicas = {
                        .e.data_type = BCH_DATA_journal,
                        .e.nr_required = 1,
@@ -1303,18 +1308,7 @@ int bch2_journal_read(struct bch_fs *c, u64 *blacklist_seq, u64 *start_seq)
                        if (ret)
                                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:
 fsck_err:
        printbuf_exit(&buf);