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()
117 struct disk_accounting_pos acc; in bch2_mod_dev_cached_sectors() local
118 memset(&acc, 0, sizeof(acc)); in bch2_mod_dev_cached_sectors()
119 acc.type = BCH_DISK_ACCOUNTING_replicas; in bch2_mod_dev_cached_sectors()
120 bch2_replicas_entry_cached(&acc.replicas, dev); in bch2_mod_dev_cached_sectors()
122 return bch2_disk_accounting_mod(trans, &acc, §ors, 1, gc); in bch2_mod_dev_cached_sectors()
248 struct bkey_s_c_accounting acc = bkey_s_c_to_accounting(k); in bch2_accounting_to_text() local
255 prt_printf(out, " %lli", acc.v->d[i]); in bch2_accounting_to_text()
267 struct disk_accounting_pos *acc) in __accounting_to_replicas() argument
269 unsafe_memcpy(r, &acc->replicas, in __accounting_to_replicas()
270 replicas_entry_bytes(&acc->replicas), in __accounting_to_replicas()
316 struct bch_accounting_mem *acc = &c->accounting; in __bch2_accounting_mem_insert() local
319 if (eytzinger0_find(acc->k.data, acc->k.nr, sizeof(acc->k.data[0]), in __bch2_accounting_mem_insert()
320 accounting_pos_cmp, &a.k->p) < acc->k.nr) in __bch2_accounting_mem_insert()
334 if (acc->gc_running) { in __bch2_accounting_mem_insert()
341 if (darray_push(&acc->k, n)) in __bch2_accounting_mem_insert()
344 eytzinger0_sort(acc->k.data, acc->k.nr, sizeof(acc->k.data[0]), in __bch2_accounting_mem_insert()
404 struct bch_accounting_mem *acc = &c->accounting; in bch2_accounting_mem_gc() local
407 struct accounting_mem_entry *dst = acc->k.data; in bch2_accounting_mem_gc()
409 darray_for_each(acc->k, src) { in bch2_accounting_mem_gc()
418 acc->k.nr = dst - acc->k.data; in bch2_accounting_mem_gc()
419 eytzinger0_sort(acc->k.data, acc->k.nr, sizeof(acc->k.data[0]), in bch2_accounting_mem_gc()
434 struct bch_accounting_mem *acc = &c->accounting; in bch2_fs_replicas_usage_read() local
440 darray_for_each(acc->k, i) { in bch2_fs_replicas_usage_read()
450 bch2_accounting_mem_read_counters(acc, i - acc->k.data, §ors, 1, false); in bch2_fs_replicas_usage_read()
470 struct bch_accounting_mem *acc = &c->accounting; in bch2_fs_accounting_read() local
476 darray_for_each(acc->k, i) { in bch2_fs_accounting_read()
492 bch2_accounting_mem_read_counters(acc, i - acc->k.data, in bch2_fs_accounting_read()
506 static void bch2_accounting_free_counters(struct bch_accounting_mem *acc, bool gc) in bch2_accounting_free_counters() argument
508 darray_for_each(acc->k, e) { in bch2_accounting_free_counters()
516 struct bch_accounting_mem *acc = &c->accounting; in bch2_gc_accounting_start() local
520 darray_for_each(acc->k, e) { in bch2_gc_accounting_start()
524 bch2_accounting_free_counters(acc, true); in bch2_gc_accounting_start()
530 acc->gc_running = !ret; in bch2_gc_accounting_start()
538 struct bch_accounting_mem *acc = &c->accounting; in bch2_gc_accounting_done() local
546 unsigned idx = eytzinger0_find_ge(acc->k.data, acc->k.nr, sizeof(acc->k.data[0]), in bch2_gc_accounting_done()
549 if (idx >= acc->k.nr) in bch2_gc_accounting_done()
552 struct accounting_mem_entry *e = acc->k.data + idx; in bch2_gc_accounting_done()
565 bch2_accounting_mem_read_counters(acc, idx, dst_v, nr, false); in bch2_gc_accounting_done()
566 bch2_accounting_mem_read_counters(acc, idx, src_v, nr, true); in bch2_gc_accounting_done()
634 struct disk_accounting_pos acc, in bch2_disk_accounting_validate_late() argument
641 switch (acc.type) { in bch2_disk_accounting_validate_late()
644 __accounting_to_replicas(&r.e, &acc); in bch2_disk_accounting_validate_late()
663 bch2_accounting_key_to_text(&buf, &acc), in bch2_disk_accounting_validate_late()
679 if (!bch2_dev_exists(c, acc.dev_data_type.dev)) { in bch2_disk_accounting_validate_late()
680 invalid_dev = acc.dev_data_type.dev; in bch2_disk_accounting_validate_late()
694 bch2_accounting_key_to_text(&buf, &acc), in bch2_disk_accounting_validate_late()
700 bch2_disk_accounting_mod(trans, &acc, v, nr, false)) ?: in bch2_disk_accounting_validate_late()
714 struct bch_accounting_mem *acc = &c->accounting; in bch2_accounting_read() local
726 darray_for_each(acc->k, e) in bch2_accounting_read()
777 unsigned idx = eytzinger0_find(acc->k.data, acc->k.nr, in bch2_accounting_read()
778 sizeof(acc->k.data[0]), in bch2_accounting_read()
781 bool applied = idx < acc->k.nr && in bch2_accounting_read()
782 bversion_cmp(acc->k.data[idx].bversion, k.k->bversion) >= 0; in bch2_accounting_read()
810 darray_for_each_reverse(acc->k, i) { in bch2_accounting_read()
834 darray_remove_item(&acc->k, i); in bch2_accounting_read()
843 eytzinger0_sort(acc->k.data, acc->k.nr, sizeof(acc->k.data[0]), in bch2_accounting_read()
849 for (unsigned i = 0; i < acc->k.nr; i++) { in bch2_accounting_read()
851 bpos_to_disk_accounting_pos(&k, acc->k.data[i].pos); in bch2_accounting_read()
854 bch2_accounting_mem_read_counters(acc, i, v, ARRAY_SIZE(v), false); in bch2_accounting_read()
896 struct disk_accounting_pos acc; in bch2_dev_usage_remove()
897 bpos_to_disk_accounting_pos(&acc, k.k->p); in bch2_dev_usage_remove()
899 acc.type == BCH_DISK_ACCOUNTING_dev_data_type && in bch2_dev_usage_remove()
900 acc.dev_data_type.dev == dev in bch2_dev_usage_remove()
1025 struct bch_accounting_mem *acc = &c->accounting; in bch2_accounting_gc_free() local
1027 bch2_accounting_free_counters(acc, true); in bch2_accounting_gc_free()
1028 acc->gc_running = false; in bch2_accounting_gc_free()
1033 struct bch_accounting_mem *acc = &c->accounting; in bch2_fs_accounting_exit() local
1035 bch2_accounting_free_counters(acc, false); in bch2_fs_accounting_exit()
1036 darray_exit(&acc->k); in bch2_fs_accounting_exit()