Lines Matching full:acc

74 	struct bkey_i_accounting *acc = bkey_accounting_init(k);  in accounting_key_init()  local
76 acc->k.p = disk_accounting_pos_to_bpos(pos); in accounting_key_init()
77 set_bkey_val_u64s(&acc->k, sizeof(struct bch_accounting) / sizeof(u64) + nr); in accounting_key_init()
79 memcpy_u64s_small(acc->v.d, d, nr); in accounting_key_init()
108 struct disk_accounting_pos acc = { in bch2_mod_dev_cached_sectors() local
112 bch2_replicas_entry_cached(&acc.replicas, dev); in bch2_mod_dev_cached_sectors()
114 return bch2_disk_accounting_mod(trans, &acc, &sectors, 1, gc); in bch2_mod_dev_cached_sectors()
227 struct bkey_s_c_accounting acc = bkey_s_c_to_accounting(k); in bch2_accounting_to_text() local
234 prt_printf(out, " %lli", acc.v->d[i]); in bch2_accounting_to_text()
246 struct disk_accounting_pos acc) in __accounting_to_replicas() argument
248 unsafe_memcpy(r, &acc.replicas, in __accounting_to_replicas()
249 replicas_entry_bytes(&acc.replicas), in __accounting_to_replicas()
295 struct bch_accounting_mem *acc = &c->accounting; in __bch2_accounting_mem_insert() local
298 if (eytzinger0_find(acc->k.data, acc->k.nr, sizeof(acc->k.data[0]), in __bch2_accounting_mem_insert()
299 accounting_pos_cmp, &a.k->p) < acc->k.nr) in __bch2_accounting_mem_insert()
313 if (acc->gc_running) { in __bch2_accounting_mem_insert()
320 if (darray_push(&acc->k, n)) in __bch2_accounting_mem_insert()
323 eytzinger0_sort(acc->k.data, acc->k.nr, sizeof(acc->k.data[0]), in __bch2_accounting_mem_insert()
362 struct bch_accounting_mem *acc = &c->accounting; in bch2_accounting_mem_gc() local
365 struct accounting_mem_entry *dst = acc->k.data; in bch2_accounting_mem_gc()
367 darray_for_each(acc->k, src) { in bch2_accounting_mem_gc()
376 acc->k.nr = dst - acc->k.data; in bch2_accounting_mem_gc()
377 eytzinger0_sort(acc->k.data, acc->k.nr, sizeof(acc->k.data[0]), in bch2_accounting_mem_gc()
392 struct bch_accounting_mem *acc = &c->accounting; in bch2_fs_replicas_usage_read() local
398 darray_for_each(acc->k, i) { in bch2_fs_replicas_usage_read()
408 bch2_accounting_mem_read_counters(acc, i - acc->k.data, &sectors, 1, false); in bch2_fs_replicas_usage_read()
428 struct bch_accounting_mem *acc = &c->accounting; in bch2_fs_accounting_read() local
434 darray_for_each(acc->k, i) { in bch2_fs_accounting_read()
450 bch2_accounting_mem_read_counters(acc, i - acc->k.data, in bch2_fs_accounting_read()
466 struct bch_accounting_mem *acc = &c->accounting; in bch2_fs_accounting_to_text() local
471 eytzinger0_for_each(i, acc->k.nr) { in bch2_fs_accounting_to_text()
473 bpos_to_disk_accounting_pos(&acc_k, acc->k.data[i].pos); in bch2_fs_accounting_to_text()
478 bch2_accounting_mem_read_counters(acc, i, v, ARRAY_SIZE(v), false); in bch2_fs_accounting_to_text()
481 for (unsigned j = 0; j < acc->k.data[i].nr_counters; j++) in bch2_fs_accounting_to_text()
490 static void bch2_accounting_free_counters(struct bch_accounting_mem *acc, bool gc) in bch2_accounting_free_counters() argument
492 darray_for_each(acc->k, e) { in bch2_accounting_free_counters()
500 struct bch_accounting_mem *acc = &c->accounting; in bch2_gc_accounting_start() local
504 darray_for_each(acc->k, e) { in bch2_gc_accounting_start()
508 bch2_accounting_free_counters(acc, true); in bch2_gc_accounting_start()
514 acc->gc_running = !ret; in bch2_gc_accounting_start()
522 struct bch_accounting_mem *acc = &c->accounting; in bch2_gc_accounting_done() local
530 unsigned idx = eytzinger0_find_ge(acc->k.data, acc->k.nr, sizeof(acc->k.data[0]), in bch2_gc_accounting_done()
533 if (idx >= acc->k.nr) in bch2_gc_accounting_done()
536 struct accounting_mem_entry *e = acc->k.data + idx; in bch2_gc_accounting_done()
549 bch2_accounting_mem_read_counters(acc, idx, dst_v, nr, false); in bch2_gc_accounting_done()
550 bch2_accounting_mem_read_counters(acc, idx, src_v, nr, true); in bch2_gc_accounting_done()
618 struct disk_accounting_pos acc, in bch2_disk_accounting_validate_late() argument
625 switch (acc.type) { in bch2_disk_accounting_validate_late()
628 __accounting_to_replicas(&r.e, acc); in bch2_disk_accounting_validate_late()
647 bch2_accounting_key_to_text(&buf, &acc), in bch2_disk_accounting_validate_late()
663 if (!bch2_dev_exists(c, acc.dev_data_type.dev)) { in bch2_disk_accounting_validate_late()
664 invalid_dev = acc.dev_data_type.dev; in bch2_disk_accounting_validate_late()
678 bch2_accounting_key_to_text(&buf, &acc), in bch2_disk_accounting_validate_late()
684 bch2_disk_accounting_mod(trans, &acc, v, nr, false)) ?: in bch2_disk_accounting_validate_late()
698 struct bch_accounting_mem *acc = &c->accounting; in bch2_accounting_read() local
719 unsigned idx = eytzinger0_find(acc->k.data, acc->k.nr, in bch2_accounting_read()
720 sizeof(acc->k.data[0]), in bch2_accounting_read()
723 bool applied = idx < acc->k.nr && in bch2_accounting_read()
724 bversion_cmp(acc->k.data[idx].bversion, k.k->bversion) >= 0; in bch2_accounting_read()
752 while (i < acc->k.nr) { in bch2_accounting_read()
753 unsigned idx = inorder_to_eytzinger0(i, acc->k.nr); in bch2_accounting_read()
756 bpos_to_disk_accounting_pos(&acc_k, acc->k.data[idx].pos); in bch2_accounting_read()
759 bch2_accounting_mem_read_counters(acc, idx, v, ARRAY_SIZE(v), false); in bch2_accounting_read()
768 ret = bch2_is_zero(v, sizeof(v[0]) * acc->k.data[idx].nr_counters) in bch2_accounting_read()
771 v, acc->k.data[idx].nr_counters); in bch2_accounting_read()
774 free_percpu(acc->k.data[idx].v[0]); in bch2_accounting_read()
775 free_percpu(acc->k.data[idx].v[1]); in bch2_accounting_read()
776 darray_remove_item(&acc->k, &acc->k.data[idx]); in bch2_accounting_read()
777 eytzinger0_sort(acc->k.data, acc->k.nr, sizeof(acc->k.data[0]), in bch2_accounting_read()
791 for (unsigned i = 0; i < acc->k.nr; i++) { in bch2_accounting_read()
793 bpos_to_disk_accounting_pos(&k, acc->k.data[i].pos); in bch2_accounting_read()
796 bch2_accounting_mem_read_counters(acc, i, v, ARRAY_SIZE(v), false); in bch2_accounting_read()
838 struct disk_accounting_pos acc; in bch2_dev_usage_remove()
839 bpos_to_disk_accounting_pos(&acc, k.k->p); in bch2_dev_usage_remove()
841 acc.type == BCH_DISK_ACCOUNTING_dev_data_type && in bch2_dev_usage_remove()
842 acc.dev_data_type.dev == dev in bch2_dev_usage_remove()
852 struct disk_accounting_pos acc = { in bch2_dev_usage_init() local
860 bch2_disk_accounting_mod(trans, &acc, v, ARRAY_SIZE(v), gc) ?: in bch2_dev_usage_init()
964 struct bch_accounting_mem *acc = &c->accounting; in bch2_accounting_gc_free() local
966 bch2_accounting_free_counters(acc, true); in bch2_accounting_gc_free()
967 acc->gc_running = false; in bch2_accounting_gc_free()
972 struct bch_accounting_mem *acc = &c->accounting; in bch2_fs_accounting_exit() local
974 bch2_accounting_free_counters(acc, false); in bch2_fs_accounting_exit()
975 darray_exit(&acc->k); in bch2_fs_accounting_exit()