diff options
Diffstat (limited to 'cmd_debug.c')
-rw-r--r-- | cmd_debug.c | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/cmd_debug.c b/cmd_debug.c index aee19fb..7cbeb90 100644 --- a/cmd_debug.c +++ b/cmd_debug.c @@ -37,6 +37,7 @@ static void dump_one_device(struct bch_fs *c, struct bch_dev *ca, int fd) struct bch_sb *sb = ca->disk_sb.sb; ranges data; unsigned i; + int ret; darray_init(data); @@ -69,7 +70,7 @@ static void dump_one_device(struct bch_fs *c, struct bch_dev *ca, int fd) bch2_trans_init(&trans, c, 0, 0); - __for_each_btree_node(&trans, iter, i, POS_MIN, 0, 1, 0, b) { + __for_each_btree_node(&trans, iter, i, POS_MIN, 0, 1, 0, b, ret) { struct btree_node_iter iter; struct bkey u; struct bkey_s_c k; @@ -85,6 +86,9 @@ static void dump_one_device(struct bch_fs *c, struct bch_dev *ca, int fd) } } + if (ret) + die("error %s walking btree nodes", strerror(-ret)); + b = c->btree_roots[i].b; if (!btree_node_fake(b)) { ptrs = bch2_bkey_ptrs_c(bkey_i_to_s_c(&b->key)); @@ -211,10 +215,11 @@ static void list_btree_formats(struct bch_fs *c, enum btree_id btree_id, unsigne struct btree_iter iter; struct btree *b; char buf[4096]; + int ret; bch2_trans_init(&trans, c, 0, 0); - __for_each_btree_node(&trans, iter, btree_id, start, 0, level, 0, b) { + __for_each_btree_node(&trans, iter, btree_id, start, 0, level, 0, b, ret) { if (bkey_cmp(b->key.k.p, end) > 0) break; @@ -223,6 +228,9 @@ static void list_btree_formats(struct bch_fs *c, enum btree_id btree_id, unsigne } bch2_trans_iter_exit(&trans, &iter); + if (ret) + die("error %s walking btree nodes", strerror(-ret)); + bch2_trans_exit(&trans); } @@ -233,10 +241,11 @@ static void list_nodes(struct bch_fs *c, enum btree_id btree_id, unsigned level, struct btree_iter iter; struct btree *b; char buf[4096]; + int ret; bch2_trans_init(&trans, c, 0, 0); - __for_each_btree_node(&trans, iter, btree_id, start, 0, level, 0, b) { + __for_each_btree_node(&trans, iter, btree_id, start, 0, level, 0, b, ret) { if (bkey_cmp(b->key.k.p, end) > 0) break; @@ -246,6 +255,9 @@ static void list_nodes(struct bch_fs *c, enum btree_id btree_id, unsigned level, } bch2_trans_iter_exit(&trans, &iter); + if (ret) + die("error %s walking btree nodes", strerror(-ret)); + bch2_trans_exit(&trans); } @@ -352,10 +364,11 @@ static void list_nodes_ondisk(struct bch_fs *c, enum btree_id btree_id, unsigned struct btree_iter iter; struct btree *b; char buf[4096]; + int ret; bch2_trans_init(&trans, c, 0, 0); - __for_each_btree_node(&trans, iter, btree_id, start, 0, level, 0, b) { + __for_each_btree_node(&trans, iter, btree_id, start, 0, level, 0, b, ret) { if (bkey_cmp(b->key.k.p, end) > 0) break; @@ -367,6 +380,9 @@ static void list_nodes_ondisk(struct bch_fs *c, enum btree_id btree_id, unsigned } bch2_trans_iter_exit(&trans, &iter); + if (ret) + die("error %s walking btree nodes", strerror(-ret)); + bch2_trans_exit(&trans); } @@ -380,10 +396,11 @@ static void list_nodes_keys(struct bch_fs *c, enum btree_id btree_id, unsigned l struct bkey_s_c k; struct btree *b; char buf[4096]; + int ret; bch2_trans_init(&trans, c, 0, 0); - __for_each_btree_node(&trans, iter, btree_id, start, 0, level, 0, b) { + __for_each_btree_node(&trans, iter, btree_id, start, 0, level, 0, b, ret) { if (bkey_cmp(b->key.k.p, end) > 0) break; @@ -398,6 +415,9 @@ static void list_nodes_keys(struct bch_fs *c, enum btree_id btree_id, unsigned l } bch2_trans_iter_exit(&trans, &iter); + if (ret) + die("error %s walking btree nodes", strerror(-ret)); + bch2_trans_exit(&trans); } |