mirror of
https://github.com/koverstreet/bcachefs-tools.git
synced 2025-02-23 00:00:02 +03:00
Update bcachefs sources to 4f69e2d39ad3 bcachefs: bch2_btree_insert() - add btree iter flags
This commit is contained in:
parent
0916d38664
commit
0d570e822b
@ -1 +1 @@
|
||||
f81dc88f0c80be08f1703852be83a9b75e626228
|
||||
4f69e2d39ad3d12f724e00fafb910f85af79a7cc
|
||||
|
@ -2,6 +2,8 @@
|
||||
#ifndef _BCACHEFS_BTREE_JOURNAL_ITER_H
|
||||
#define _BCACHEFS_BTREE_JOURNAL_ITER_H
|
||||
|
||||
#include "bkey.h"
|
||||
|
||||
struct journal_iter {
|
||||
struct list_head list;
|
||||
enum btree_id btree_id;
|
||||
|
@ -3,6 +3,7 @@
|
||||
#include "bcachefs.h"
|
||||
#include "bcachefs_ioctl.h"
|
||||
#include "btree_cache.h"
|
||||
#include "btree_journal_iter.h"
|
||||
#include "btree_update.h"
|
||||
#include "btree_write_buffer.h"
|
||||
#include "buckets.h"
|
||||
@ -182,7 +183,9 @@ static inline bool accounting_to_replicas(struct bch_replicas_entry_v1 *r, struc
|
||||
|
||||
switch (acc_k.type) {
|
||||
case BCH_DISK_ACCOUNTING_replicas:
|
||||
memcpy(r, &acc_k.replicas, replicas_entry_bytes(&acc_k.replicas));
|
||||
unsafe_memcpy(r, &acc_k.replicas,
|
||||
replicas_entry_bytes(&acc_k.replicas),
|
||||
"variable length struct");
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
@ -546,7 +549,9 @@ int bch2_accounting_read(struct bch_fs *c)
|
||||
goto err;
|
||||
|
||||
struct journal_keys *keys = &c->journal_keys;
|
||||
struct journal_key *dst = keys->data;
|
||||
move_gap(keys, keys->nr);
|
||||
|
||||
darray_for_each(*keys, i) {
|
||||
if (i->k->k.type == KEY_TYPE_accounting) {
|
||||
struct bkey_s_c k = bkey_i_to_s_c(i->k);
|
||||
@ -560,11 +565,26 @@ int bch2_accounting_read(struct bch_fs *c)
|
||||
if (applied)
|
||||
continue;
|
||||
|
||||
if (i + 1 < &darray_top(*keys) &&
|
||||
i[1].k->k.type == KEY_TYPE_accounting &&
|
||||
!journal_key_cmp(i, i + 1)) {
|
||||
BUG_ON(bversion_cmp(i[0].k->k.version, i[1].k->k.version) >= 0);
|
||||
|
||||
i[1].journal_seq = i[0].journal_seq;
|
||||
|
||||
bch2_accounting_accumulate(bkey_i_to_accounting(i[1].k),
|
||||
bkey_s_c_to_accounting(k));
|
||||
continue;
|
||||
}
|
||||
|
||||
ret = accounting_read_key(c, NULL, k);
|
||||
if (ret)
|
||||
goto err;
|
||||
}
|
||||
|
||||
*dst++ = *i;
|
||||
}
|
||||
keys->gap = keys->nr = dst - keys->data;
|
||||
|
||||
percpu_down_read(&c->mark_lock);
|
||||
preempt_disable();
|
||||
|
Loading…
Reference in New Issue
Block a user