Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

bcachefs: move: convert to bbpos

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>

+38 -31
+1 -13
fs/bcachefs/bbpos.h
··· 2 2 #ifndef _BCACHEFS_BBPOS_H 3 3 #define _BCACHEFS_BBPOS_H 4 4 5 + #include "bbpos_types.h" 5 6 #include "bkey_methods.h" 6 7 #include "btree_cache.h" 7 - 8 - struct bbpos { 9 - enum btree_id btree; 10 - struct bpos pos; 11 - }; 12 - 13 - static inline struct bbpos BBPOS(enum btree_id btree, struct bpos pos) 14 - { 15 - return (struct bbpos) { btree, pos }; 16 - } 17 - 18 - #define BBPOS_MIN BBPOS(0, POS_MIN) 19 - #define BBPOS_MAX BBPOS(BTREE_ID_NR - 1, POS_MAX) 20 8 21 9 static inline int bbpos_cmp(struct bbpos l, struct bbpos r) 22 10 {
+18
fs/bcachefs/bbpos_types.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0 */ 2 + #ifndef _BCACHEFS_BBPOS_TYPES_H 3 + #define _BCACHEFS_BBPOS_TYPES_H 4 + 5 + struct bbpos { 6 + enum btree_id btree; 7 + struct bpos pos; 8 + }; 9 + 10 + static inline struct bbpos BBPOS(enum btree_id btree, struct bpos pos) 11 + { 12 + return (struct bbpos) { btree, pos }; 13 + } 14 + 15 + #define BBPOS_MIN BBPOS(0, POS_MIN) 16 + #define BBPOS_MAX BBPOS(BTREE_ID_NR - 1, POS_MAX) 17 + 18 + #endif /* _BCACHEFS_BBPOS_TYPES_H */
+2 -2
fs/bcachefs/chardev.c
··· 332 332 struct bch_ioctl_data_event e = { 333 333 .type = BCH_DATA_EVENT_PROGRESS, 334 334 .p.data_type = ctx->stats.data_type, 335 - .p.btree_id = ctx->stats.btree_id, 336 - .p.pos = ctx->stats.pos, 335 + .p.btree_id = ctx->stats.pos.btree, 336 + .p.pos = ctx->stats.pos.pos, 337 337 .p.sectors_done = atomic64_read(&ctx->stats.sectors_seen), 338 338 .p.sectors_total = bch2_fs_usage_read_short(c).used, 339 339 };
+5 -3
fs/bcachefs/data_update.c
··· 281 281 } 282 282 continue; 283 283 nowork: 284 - if (m->ctxt && m->ctxt->stats) { 284 + if (m->stats && m->stats) { 285 285 BUG_ON(k.k->p.offset <= iter.pos.offset); 286 - atomic64_inc(&m->ctxt->stats->keys_raced); 286 + atomic64_inc(&m->stats->keys_raced); 287 287 atomic64_add(k.k->p.offset - iter.pos.offset, 288 - &m->ctxt->stats->sectors_raced); 288 + &m->stats->sectors_raced); 289 289 } 290 290 291 291 this_cpu_inc(c->counters[BCH_COUNTER_move_extent_fail]); ··· 439 439 bch2_bkey_buf_reassemble(&m->k, c, k); 440 440 m->btree_id = btree_id; 441 441 m->data_opts = data_opts; 442 + m->ctxt = ctxt; 443 + m->stats = ctxt->stats; 442 444 443 445 bch2_write_op_init(&m->op, c, io_opts); 444 446 m->op.pos = bkey_start_pos(k.k);
+1
fs/bcachefs/data_update.h
··· 23 23 struct bkey_buf k; 24 24 struct data_update_opts data_opts; 25 25 struct moving_context *ctxt; 26 + struct bch_move_stats *stats; 26 27 struct bch_write_op op; 27 28 }; 28 29
+8 -11
fs/bcachefs/move.c
··· 367 367 368 368 BUG_ON(ret); 369 369 370 - io->write.ctxt = ctxt; 371 370 io->write.op.end_io = move_write_done; 372 371 373 372 if (ctxt->rate) ··· 566 567 567 568 if (ctxt->stats) { 568 569 ctxt->stats->data_type = BCH_DATA_user; 569 - ctxt->stats->btree_id = btree_id; 570 - ctxt->stats->pos = start; 570 + ctxt->stats->pos = BBPOS(btree_id, start); 571 571 } 572 572 573 573 bch2_trans_iter_init(trans, &iter, btree_id, start, ··· 593 595 break; 594 596 595 597 if (ctxt->stats) 596 - ctxt->stats->pos = iter.pos; 598 + ctxt->stats->pos = BBPOS(iter.btree_id, iter.pos); 597 599 598 600 if (!bkey_extent_is_direct_data(k.k)) 599 601 goto next_nondata; ··· 654 656 for (id = start.btree; 655 657 id <= min_t(unsigned, end.btree, btree_id_nr_alive(c) - 1); 656 658 id++) { 657 - ctxt->stats->btree_id = id; 659 + ctxt->stats->pos = BBPOS(id, POS_MIN); 658 660 659 661 if (!btree_type_has_ptrs(id) || 660 662 !bch2_btree_id_root(c, id)->b) ··· 892 894 for (id = start_btree_id; 893 895 id <= min_t(unsigned, end_btree_id, btree_id_nr_alive(c) - 1); 894 896 id++) { 895 - stats->btree_id = id; 897 + stats->pos = BBPOS(id, POS_MIN); 896 898 897 899 if (!bch2_btree_id_root(c, id)->b) 898 900 continue; ··· 911 913 bpos_cmp(b->key.k.p, end_pos)) > 0) 912 914 break; 913 915 914 - stats->pos = iter.pos; 916 + stats->pos = BBPOS(iter.btree_id, iter.pos); 915 917 916 918 if (!pred(c, arg, b, &io_opts, &data_opts)) 917 919 goto next; ··· 1137 1139 prt_printf(out, "%s (%ps):", stats->name, ctxt->fn); 1138 1140 prt_newline(out); 1139 1141 1140 - prt_printf(out, " data type %s btree_id %s position: ", 1141 - bch2_data_types[stats->data_type], 1142 - bch2_btree_id_str(stats->btree_id)); 1143 - bch2_bpos_to_text(out, stats->pos); 1142 + prt_printf(out, " data type %s position: ", 1143 + bch2_data_types[stats->data_type]); 1144 + bch2_bbpos_to_text(out, stats->pos); 1144 1145 prt_newline(out); 1145 1146 printbuf_indent_add(out, 2); 1146 1147
+3 -2
fs/bcachefs/move_types.h
··· 2 2 #ifndef _BCACHEFS_MOVE_TYPES_H 3 3 #define _BCACHEFS_MOVE_TYPES_H 4 4 5 + #include "bbpos_types.h" 6 + 5 7 struct bch_move_stats { 6 8 enum bch_data_type data_type; 7 - enum btree_id btree_id; 8 - struct bpos pos; 9 + struct bbpos pos; 9 10 struct list_head list; 10 11 char name[32]; 11 12