bcachefs: fix __dev_available().
authorDaniel Hill <daniel@gluo.nz>
Wed, 22 Jun 2022 22:28:30 +0000 (10:28 +1200)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:34 +0000 (17:09 -0400)
__dev_available() now calculates available buckets correctly. Previously
it would almost always return 0 when we have cached data.

Signed-off-by: Daniel Hill <daniel@gluo.nz>
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/buckets.h

index 080bcb20a5b0296d4f224b7c181bd817702692c0..b4cf10a47c52e2d6f9543cfd946e018cafd419f9 100644 (file)
@@ -159,12 +159,12 @@ static inline u64 __dev_buckets_available(struct bch_dev *ca,
                                          enum alloc_reserve reserve)
 {
        return max_t(s64, 0,
-                    usage.d[BCH_DATA_free].buckets -
-                    usage.d[BCH_DATA_cached].buckets -
-                    usage.d[BCH_DATA_need_gc_gens].buckets -
-                    usage.d[BCH_DATA_need_discard].buckets -
-                    ca->nr_open_buckets -
-                    bch2_dev_buckets_reserved(ca, reserve));
+                      usage.d[BCH_DATA_free].buckets
+                    + usage.d[BCH_DATA_cached].buckets
+                    + usage.d[BCH_DATA_need_gc_gens].buckets
+                    + usage.d[BCH_DATA_need_discard].buckets
+                    - ca->nr_open_buckets
+                    bch2_dev_buckets_reserved(ca, reserve));
 }
 
 static inline u64 dev_buckets_available(struct bch_dev *ca,