diff options
Diffstat (limited to 'fs/bcachefs/buckets.c')
-rw-r--r-- | fs/bcachefs/buckets.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/fs/bcachefs/buckets.c b/fs/bcachefs/buckets.c index 99e928f77999..021f5cb7998d 100644 --- a/fs/bcachefs/buckets.c +++ b/fs/bcachefs/buckets.c @@ -749,7 +749,6 @@ static int __trigger_extent(struct btree_trans *trans, enum btree_iter_update_trigger_flags flags) { bool gc = flags & BTREE_TRIGGER_gc; - bool insert = !(flags & BTREE_TRIGGER_overwrite); struct bkey_ptrs_c ptrs = bch2_bkey_ptrs_c(k); const union bch_extent_entry *entry; struct extent_ptr_decoded p; @@ -803,7 +802,7 @@ static int __trigger_extent(struct btree_trans *trans, if (cur_compression_type && cur_compression_type != p.crc.compression_type) { - if (!insert) + if (flags & BTREE_TRIGGER_overwrite) bch2_u64s_neg(compression_acct, ARRAY_SIZE(compression_acct)); ret = bch2_disk_accounting_mod2(trans, gc, compression_acct, @@ -836,7 +835,7 @@ static int __trigger_extent(struct btree_trans *trans, } if (cur_compression_type) { - if (!insert) + if (flags & BTREE_TRIGGER_overwrite) bch2_u64s_neg(compression_acct, ARRAY_SIZE(compression_acct)); ret = bch2_disk_accounting_mod2(trans, gc, compression_acct, @@ -846,17 +845,12 @@ static int __trigger_extent(struct btree_trans *trans, } if (level) { - const bool leaf_node = level == 1; - s64 v[3] = { - replicas_sectors, - insert ? 1 : -1, - !leaf_node ? (insert ? 1 : -1) : 0, - }; - - ret = bch2_disk_accounting_mod2(trans, gc, v, btree, btree_id); + ret = bch2_disk_accounting_mod2_nr(trans, gc, &replicas_sectors, 1, btree, btree_id); if (ret) return ret; } else { + bool insert = !(flags & BTREE_TRIGGER_overwrite); + s64 v[3] = { insert ? 1 : -1, insert ? k.k->size : -((s64) k.k->size), |