]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - cmd_list_journal.c
cmd_mount: Use noxcl for opening block devices
[bcachefs-tools-debian] / cmd_list_journal.c
index 4c77bf3fe0c0b105473d54a26408e9b40ab3c4a6..279afa79a37e3cf906a98d455e557aad22c81cb3 100644 (file)
@@ -55,20 +55,17 @@ typedef DARRAY(enum btree_id) d_btree_id;
 
 static bool bkey_matches_filter(d_bbpos filter, struct jset_entry *entry, struct bkey_i *k)
 {
-       struct bbpos *i;
-
        darray_for_each(filter, i) {
                if (i->btree != entry->btree_id)
                        continue;
 
-               if (!btree_node_type_is_extents(i->btree)) {
-                       if (bkey_eq(i->pos, k->k.p))
-                               return true;
-               } else {
-                       if (bkey_ge(i->pos, bkey_start_pos(&k->k)) &&
-                           bkey_lt(i->pos, k->k.p))
-                               return true;
-               }
+               if (bkey_eq(i->pos, k->k.p))
+                       return true;
+
+               if (btree_node_type_is_extents(i->btree) &&
+                   bkey_ge(i->pos, bkey_start_pos(&k->k)) &&
+                   bkey_lt(i->pos, k->k.p))
+                       return true;
        }
        return false;
 }
@@ -81,7 +78,7 @@ static bool entry_matches_transaction_filter(struct jset_entry *entry,
            entry->type == BCH_JSET_ENTRY_overwrite) {
                struct bkey_i *k;
 
-               vstruct_for_each(entry, k)
+               jset_entry_for_each_key(entry, k)
                        if (bkey_matches_filter(filter, entry, k))
                                return true;
        }
@@ -107,7 +104,6 @@ static bool should_print_transaction(struct jset_entry *entry, struct jset_entry
 static bool should_print_entry(struct jset_entry *entry, d_btree_id filter)
 {
        struct bkey_i *k;
-       enum btree_id *id;
 
        if (!filter.nr)
                return true;
@@ -117,7 +113,7 @@ static bool should_print_entry(struct jset_entry *entry, d_btree_id filter)
            entry->type != BCH_JSET_ENTRY_overwrite)
                return true;
 
-       vstruct_for_each(entry, k)
+       jset_entry_for_each_key(entry, k)
                darray_for_each(filter, id)
                        if (entry->btree_id == *id)
                                return true;
@@ -141,7 +137,7 @@ static void journal_entries_print(struct bch_fs *c, unsigned nr_entries,
                if (le64_to_cpu(p->j.seq) + nr_entries < atomic64_read(&c->journal.seq))
                        continue;
 
-               bool blacklisted =
+               bool blacklisted = p->ignore ||
                        bch2_journal_seq_is_blacklisted(c,
                                        le64_to_cpu(p->j.seq), false);
 
@@ -232,9 +228,10 @@ int cmd_list_journal(int argc, char *argv[])
 
        opt_set(opts, nochanges,        true);
        opt_set(opts, norecovery,       true);
+       opt_set(opts, read_only,        true);
        opt_set(opts, degraded,         true);
        opt_set(opts, errors,           BCH_ON_ERROR_continue);
-       opt_set(opts, fix_errors,       FSCK_OPT_YES);
+       opt_set(opts, fix_errors,       FSCK_FIX_yes);
        opt_set(opts, keep_journal,     true);
        opt_set(opts, read_journal_only,true);
 
@@ -253,7 +250,7 @@ int cmd_list_journal(int argc, char *argv[])
                        darray_push(&transaction_filter, bbpos_parse(optarg));
                        break;
                case 'k':
-                       darray_push(&key_filter, read_string_list_or_die(optarg, bch2_btree_ids, "btree id"));
+                       darray_push(&key_filter, read_string_list_or_die(optarg, __bch2_btree_ids, "btree id"));
                        break;
                case 'v':
                        opt_set(opts, verbose, true);
@@ -267,7 +264,9 @@ int cmd_list_journal(int argc, char *argv[])
        if (!argc)
                die("Please supply device(s) to open");
 
-       struct bch_fs *c = bch2_fs_open(argv, argc, opts);
+       darray_str devs = get_or_split_cmdline_devs(argc, argv);
+
+       struct bch_fs *c = bch2_fs_open(devs.data, devs.nr, opts);
        if (IS_ERR(c))
                die("error opening %s: %s", argv[0], bch2_err_str(PTR_ERR(c)));