From: Kent Overstreet <kent.overstreet@gmail.com>
Date: Fri, 23 Oct 2020 22:40:30 +0000 (-0400)
Subject: bcachefs: Fix bch2_mark_stripe()
X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=5b088c1dd005ec0fbddfa3664d3095caef6ae52e;p=linux.git

bcachefs: Fix bch2_mark_stripe()

There's no reason not to always recalculate these fields

Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
---

diff --git a/fs/bcachefs/buckets.c b/fs/bcachefs/buckets.c
index 7558e2bffbdd3..aacc20f71729c 100644
--- a/fs/bcachefs/buckets.c
+++ b/fs/bcachefs/buckets.c
@@ -1264,6 +1264,13 @@ static int bch2_mark_stripe(struct bch_fs *c,
 		m->algorithm	= new_s->algorithm;
 		m->nr_blocks	= new_s->nr_blocks;
 		m->nr_redundant	= new_s->nr_redundant;
+		m->blocks_nonempty = 0;
+
+		for (i = 0; i < new_s->nr_blocks; i++) {
+			m->block_sectors[i] =
+				stripe_blockcount_get(new_s, i);
+			m->blocks_nonempty += !!m->block_sectors[i];
+		}
 
 		if (gc && old_s)
 			update_replicas(c, fs_usage, &m->r.e,
@@ -1275,17 +1282,6 @@ static int bch2_mark_stripe(struct bch_fs *c,
 			update_replicas(c, fs_usage, &m->r.e,
 					((s64) m->sectors * m->nr_redundant));
 
-		/* gc recalculates these fields: */
-		if (!(flags & BTREE_TRIGGER_GC)) {
-			m->blocks_nonempty = 0;
-
-			for (i = 0; i < new_s->nr_blocks; i++) {
-				m->block_sectors[i] =
-					stripe_blockcount_get(new_s, i);
-				m->blocks_nonempty += !!m->block_sectors[i];
-			}
-		}
-
 		if (!gc) {
 			spin_lock(&c->ec_stripes_heap_lock);
 			bch2_stripes_heap_update(c, m, idx);