@@ -740,8 +740,7 @@ static int bch2_trigger_stripe_ptr(struct btree_trans *trans,
740
740
static int __trigger_extent (struct btree_trans * trans ,
741
741
enum btree_id btree_id , unsigned level ,
742
742
struct bkey_s_c k ,
743
- enum btree_iter_update_trigger_flags flags ,
744
- s64 * replicas_sectors )
743
+ enum btree_iter_update_trigger_flags flags )
745
744
{
746
745
bool gc = flags & BTREE_TRIGGER_gc ;
747
746
struct bkey_ptrs_c ptrs = bch2_bkey_ptrs_c (k );
@@ -752,6 +751,8 @@ static int __trigger_extent(struct btree_trans *trans,
752
751
: BCH_DATA_user ;
753
752
int ret = 0 ;
754
753
754
+ s64 replicas_sectors = 0 ;
755
+
755
756
struct disk_accounting_pos acc_replicas_key ;
756
757
memset (& acc_replicas_key , 0 , sizeof (acc_replicas_key ));
757
758
acc_replicas_key .type = BCH_DISK_ACCOUNTING_replicas ;
@@ -778,7 +779,7 @@ static int __trigger_extent(struct btree_trans *trans,
778
779
if (ret )
779
780
return ret ;
780
781
} else if (!p .has_ec ) {
781
- * replicas_sectors += disk_sectors ;
782
+ replicas_sectors += disk_sectors ;
782
783
replicas_entry_add_dev (& acc_replicas_key .replicas , p .ptr .dev );
783
784
} else {
784
785
ret = bch2_trigger_stripe_ptr (trans , k , p , data_type , disk_sectors , flags );
@@ -816,13 +817,13 @@ static int __trigger_extent(struct btree_trans *trans,
816
817
}
817
818
818
819
if (acc_replicas_key .replicas .nr_devs ) {
819
- ret = bch2_disk_accounting_mod (trans , & acc_replicas_key , replicas_sectors , 1 , gc );
820
+ ret = bch2_disk_accounting_mod (trans , & acc_replicas_key , & replicas_sectors , 1 , gc );
820
821
if (ret )
821
822
return ret ;
822
823
}
823
824
824
825
if (acc_replicas_key .replicas .nr_devs && !level && k .k -> p .snapshot ) {
825
- ret = bch2_disk_accounting_mod2_nr (trans , gc , replicas_sectors , 1 , snapshot , k .k -> p .snapshot );
826
+ ret = bch2_disk_accounting_mod2_nr (trans , gc , & replicas_sectors , 1 , snapshot , k .k -> p .snapshot );
826
827
if (ret )
827
828
return ret ;
828
829
}
@@ -838,7 +839,7 @@ static int __trigger_extent(struct btree_trans *trans,
838
839
}
839
840
840
841
if (level ) {
841
- ret = bch2_disk_accounting_mod2_nr (trans , gc , replicas_sectors , 1 , btree , btree_id );
842
+ ret = bch2_disk_accounting_mod2_nr (trans , gc , & replicas_sectors , 1 , btree , btree_id );
842
843
if (ret )
843
844
return ret ;
844
845
} else {
@@ -847,7 +848,7 @@ static int __trigger_extent(struct btree_trans *trans,
847
848
s64 v [3 ] = {
848
849
insert ? 1 : -1 ,
849
850
insert ? k .k -> size : - ((s64 ) k .k -> size ),
850
- * replicas_sectors ,
851
+ replicas_sectors ,
851
852
};
852
853
ret = bch2_disk_accounting_mod2 (trans , gc , v , inum , k .k -> p .inode );
853
854
if (ret )
@@ -879,20 +880,16 @@ int bch2_trigger_extent(struct btree_trans *trans,
879
880
return 0 ;
880
881
881
882
if (flags & (BTREE_TRIGGER_transactional |BTREE_TRIGGER_gc )) {
882
- s64 old_replicas_sectors = 0 , new_replicas_sectors = 0 ;
883
-
884
883
if (old .k -> type ) {
885
884
int ret = __trigger_extent (trans , btree , level , old ,
886
- flags & ~BTREE_TRIGGER_insert ,
887
- & old_replicas_sectors );
885
+ flags & ~BTREE_TRIGGER_insert );
888
886
if (ret )
889
887
return ret ;
890
888
}
891
889
892
890
if (new .k -> type ) {
893
891
int ret = __trigger_extent (trans , btree , level , new .s_c ,
894
- flags & ~BTREE_TRIGGER_overwrite ,
895
- & new_replicas_sectors );
892
+ flags & ~BTREE_TRIGGER_overwrite );
896
893
if (ret )
897
894
return ret ;
898
895
}
0 commit comments