]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/backpointers.h
Update bcachefs sources to 7250b2ee5574 bcachefs: Fix deleted inodes btree in snapsho...
[bcachefs-tools-debian] / libbcachefs / backpointers.h
index 9c03709ade50420ee7e694ca8b04ed90871599c7..4ab9f3562912de16a3e41f3baefa8645e9b2323c 100644 (file)
@@ -7,8 +7,8 @@
 #include "buckets.h"
 #include "super.h"
 
-int bch2_backpointer_invalid(const struct bch_fs *, struct bkey_s_c k,
-                            unsigned, struct printbuf *);
+int bch2_backpointer_invalid(struct bch_fs *, struct bkey_s_c k,
+                            enum bkey_invalid_flags, struct printbuf *);
 void bch2_backpointer_to_text(struct printbuf *, const struct bch_backpointer *);
 void bch2_backpointer_k_to_text(struct printbuf *, struct bch_fs *, struct bkey_s_c);
 void bch2_backpointer_swab(struct bkey_s);
@@ -17,6 +17,7 @@ void bch2_backpointer_swab(struct bkey_s);
        .key_invalid    = bch2_backpointer_invalid,     \
        .val_to_text    = bch2_backpointer_k_to_text,   \
        .swab           = bch2_backpointer_swab,        \
+       .min_val_size   = 32,                           \
 })
 
 #define MAX_EXTENT_COMPRESS_RATIO_SHIFT                10
@@ -53,7 +54,7 @@ static inline struct bpos bucket_pos_to_bp(const struct bch_fs *c,
        return ret;
 }
 
-int bch2_bucket_backpointer_mod_nowritebuffer(struct btree_trans *, struct bpos,
+int bch2_bucket_backpointer_mod_nowritebuffer(struct btree_trans *, struct bkey_i_backpointer *,
                                struct bch_backpointer, struct bkey_s_c, bool);
 
 static inline int bch2_bucket_backpointer_mod(struct btree_trans *trans,
@@ -66,9 +67,6 @@ static inline int bch2_bucket_backpointer_mod(struct btree_trans *trans,
        struct bkey_i_backpointer *bp_k;
        int ret;
 
-       if (unlikely(bch2_backpointers_no_use_write_buffer))
-               return bch2_bucket_backpointer_mod_nowritebuffer(trans, bucket, bp, orig_k, insert);
-
        bp_k = bch2_trans_kmalloc_nomemzero(trans, sizeof(struct bkey_i_backpointer));
        ret = PTR_ERR_OR_ZERO(bp_k);
        if (ret)
@@ -83,6 +81,9 @@ static inline int bch2_bucket_backpointer_mod(struct btree_trans *trans,
                set_bkey_val_u64s(&bp_k->k, 0);
        }
 
+       if (unlikely(bch2_backpointers_no_use_write_buffer))
+               return bch2_bucket_backpointer_mod_nowritebuffer(trans, bp_k, bp, orig_k, insert);
+
        return bch2_trans_update_buffered(trans, BTREE_ID_backpointers, &bp_k->k_i);
 }