]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/buckets.h
Update bcachefs sources to bdf6d7c135 fixup! bcachefs: Kill journal buf bloom filter
[bcachefs-tools-debian] / libbcachefs / buckets.h
index 85e86ded86af4b70fe6f58b7770a0359f415b6c1..3469327d6c9d73724df8b6a8c85abc3a363a1e42 100644 (file)
@@ -121,12 +121,10 @@ static inline u8 ptr_stale(struct bch_dev *ca,
 /* Device usage: */
 
 struct bch_dev_usage bch2_dev_usage_read(struct bch_dev *);
+void bch2_dev_usage_init(struct bch_dev *);
 
-static inline u64 __dev_buckets_available(struct bch_dev *ca,
-                                         struct bch_dev_usage stats,
-                                         enum alloc_reserve reserve)
+static inline u64 bch2_dev_buckets_reserved(struct bch_dev *ca, enum alloc_reserve reserve)
 {
-       s64 total = ca->mi.nbuckets - ca->mi.first_bucket;
        s64 reserved = 0;
 
        switch (reserve) {
@@ -141,20 +139,19 @@ static inline u64 __dev_buckets_available(struct bch_dev *ca,
                fallthrough;
        case RESERVE_btree_movinggc:
                break;
-       default:
-               BUG();
        }
 
-       if (WARN_ONCE(stats.buckets_unavailable > total,
-                     "buckets_unavailable overflow (%llu > %llu)\n",
-                     stats.buckets_unavailable, total))
-               return 0;
+       return reserved;
+}
 
+static inline u64 __dev_buckets_available(struct bch_dev *ca,
+                                         struct bch_dev_usage usage,
+                                         enum alloc_reserve reserve)
+{
        return max_t(s64, 0,
-                    total -
-                    stats.buckets_unavailable -
+                    usage.d[BCH_DATA_free].buckets -
                     ca->nr_open_buckets -
-                    reserved);
+                    bch2_dev_buckets_reserved(ca, reserve));
 }
 
 static inline u64 dev_buckets_available(struct bch_dev *ca,
@@ -205,41 +202,14 @@ int bch2_mark_inode(struct btree_trans *, struct bkey_s_c, struct bkey_s_c, unsi
 int bch2_mark_reservation(struct btree_trans *, struct bkey_s_c, struct bkey_s_c, unsigned);
 int bch2_mark_reflink_p(struct btree_trans *, struct bkey_s_c, struct bkey_s_c, unsigned);
 
-int bch2_trans_mark_extent(struct btree_trans *, struct bkey_s_c, struct bkey_i *, unsigned);
-int bch2_trans_mark_stripe(struct btree_trans *, struct bkey_s_c, struct bkey_i *, unsigned);
-int bch2_trans_mark_inode(struct btree_trans *, struct bkey_s_c, struct bkey_i *, unsigned);
-int bch2_trans_mark_reservation(struct btree_trans *, struct bkey_s_c, struct bkey_i *, unsigned);
-int bch2_trans_mark_reflink_p(struct btree_trans *, struct bkey_s_c, struct bkey_i *, unsigned);
+int bch2_trans_mark_extent(struct btree_trans *, enum btree_id, unsigned, struct bkey_s_c, struct bkey_i *, unsigned);
+int bch2_trans_mark_stripe(struct btree_trans *, enum btree_id, unsigned, struct bkey_s_c, struct bkey_i *, unsigned);
+int bch2_trans_mark_inode(struct btree_trans *, enum btree_id, unsigned, struct bkey_s_c, struct bkey_i *, unsigned);
+int bch2_trans_mark_reservation(struct btree_trans *, enum btree_id, unsigned, struct bkey_s_c, struct bkey_i *, unsigned);
+int bch2_trans_mark_reflink_p(struct btree_trans *, enum btree_id, unsigned, struct bkey_s_c, struct bkey_i *, unsigned);
 
 int bch2_mark_key(struct btree_trans *, struct bkey_s_c, struct bkey_s_c, unsigned);
 
-int bch2_trans_mark_key(struct btree_trans *, struct bkey_s_c,
-                       struct bkey_i *, unsigned);
-
-static inline int bch2_trans_mark_old(struct btree_trans *trans,
-                                     struct bkey_s_c old, unsigned flags)
-{
-       struct bkey_i deleted;
-
-       bkey_init(&deleted.k);
-       deleted.k.p = old.k->p;
-
-       return bch2_trans_mark_key(trans, old, &deleted,
-                                  BTREE_TRIGGER_OVERWRITE|flags);
-}
-
-static inline int bch2_trans_mark_new(struct btree_trans *trans,
-                                     struct bkey_i *new, unsigned flags)
-{
-       struct bkey_i deleted;
-
-       bkey_init(&deleted.k);
-       deleted.k.p = new->k.p;
-
-       return bch2_trans_mark_key(trans, bkey_i_to_s_c(&deleted), new,
-                                  BTREE_TRIGGER_INSERT|flags);
-}
-
 int bch2_trans_fs_usage_apply(struct btree_trans *, struct replicas_delta_list *);
 
 int bch2_trans_mark_metadata_bucket(struct btree_trans *, struct bch_dev *,