bcachefs: Fix bch2_trans_reset_updates()
authorKent Overstreet <kent.overstreet@linux.dev>
Sun, 5 Feb 2023 19:07:34 +0000 (14:07 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:50 +0000 (17:09 -0400)
This should have been resetting trans->fs_usage_deltas as well.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/btree_iter.c
fs/bcachefs/btree_types.h
fs/bcachefs/btree_update.h
fs/bcachefs/btree_update_leaf.c
fs/bcachefs/replicas.h
fs/bcachefs/replicas_types.h

index 3774ee8577a99cd277e696a3d091c6b133e5886e..1a71e8af52d0db83cd0f842b5dee5f02d1695a93 100644 (file)
@@ -2792,14 +2792,6 @@ u32 bch2_trans_begin(struct btree_trans *trans)
        trans->restart_count++;
        trans->mem_top                  = 0;
 
-       if (trans->fs_usage_deltas) {
-               trans->fs_usage_deltas->used = 0;
-               memset((void *) trans->fs_usage_deltas +
-                      offsetof(struct replicas_delta_list, memset_start), 0,
-                      (void *) &trans->fs_usage_deltas->memset_end -
-                      (void *) &trans->fs_usage_deltas->memset_start);
-       }
-
        trans_for_each_path(trans, path) {
                path->should_be_locked = false;
 
index 7c664186f3c327c17bf79fee18b226d6cc894c2c..5cf03ec52051e80a92215d1f35512a227dedab09 100644 (file)
@@ -9,6 +9,7 @@
 #include "buckets_types.h"
 #include "darray.h"
 #include "journal_types.h"
+#include "replicas_types.h"
 #include "six.h"
 
 struct open_bucket;
index 7e9f1f170d5f6bdcedd0585f7263cc053e69b78b..9a3c859ea5723388720a8a6ea55656b42291fabc 100644 (file)
@@ -154,6 +154,14 @@ static inline void bch2_trans_reset_updates(struct btree_trans *trans)
        trans->nr_updates               = 0;
        trans->hooks                    = NULL;
        trans->extra_journal_entries.nr = 0;
+
+       if (trans->fs_usage_deltas) {
+               trans->fs_usage_deltas->used = 0;
+               memset((void *) trans->fs_usage_deltas +
+                      offsetof(struct replicas_delta_list, memset_start), 0,
+                      (void *) &trans->fs_usage_deltas->memset_end -
+                      (void *) &trans->fs_usage_deltas->memset_start);
+       }
 }
 
 #endif /* _BCACHEFS_BTREE_UPDATE_H */
index 61b61acef7a88e16c86dcd20328096cfc1edf929..1dc86ac6f83753e7a4e23f31e3edcdaa43115dbb 100644 (file)
@@ -1118,14 +1118,6 @@ out:
 out_reset:
        bch2_trans_reset_updates(trans);
 
-       if (trans->fs_usage_deltas) {
-               trans->fs_usage_deltas->used = 0;
-               memset((void *) trans->fs_usage_deltas +
-                      offsetof(struct replicas_delta_list, memset_start), 0,
-                      (void *) &trans->fs_usage_deltas->memset_end -
-                      (void *) &trans->fs_usage_deltas->memset_start);
-       }
-
        return ret;
 err:
        ret = bch2_trans_commit_error(trans, i, ret, _RET_IP_);
index cc34b3809206fb1f5666ba41ad42b7958a39e307..4887675a86f09c7a3942f3eae33d76179fe3c7bc 100644 (file)
@@ -27,22 +27,6 @@ bool bch2_replicas_marked(struct bch_fs *, struct bch_replicas_entry *);
 int bch2_mark_replicas(struct bch_fs *,
                       struct bch_replicas_entry *);
 
-struct replicas_delta {
-       s64                     delta;
-       struct bch_replicas_entry r;
-} __packed;
-
-struct replicas_delta_list {
-       unsigned                size;
-       unsigned                used;
-
-       struct                  {} memset_start;
-       u64                     nr_inodes;
-       u64                     persistent_reserved[BCH_REPLICAS_MAX];
-       struct                  {} memset_end;
-       struct replicas_delta   d[0];
-};
-
 static inline struct replicas_delta *
 replicas_delta_next(struct replicas_delta *d)
 {
index f12a35b3dbcf3b170dd66760e5b7944fad7fb88f..5cfff489bbc34860e9e2a833617f9298653b255a 100644 (file)
@@ -8,4 +8,20 @@ struct bch_replicas_cpu {
        struct bch_replicas_entry *entries;
 };
 
+struct replicas_delta {
+       s64                     delta;
+       struct bch_replicas_entry r;
+} __packed;
+
+struct replicas_delta_list {
+       unsigned                size;
+       unsigned                used;
+
+       struct                  {} memset_start;
+       u64                     nr_inodes;
+       u64                     persistent_reserved[BCH_REPLICAS_MAX];
+       struct                  {} memset_end;
+       struct replicas_delta   d[0];
+};
+
 #endif /* _BCACHEFS_REPLICAS_TYPES_H */