]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/btree_update_leaf.c
Update bcachefs sources to ed4aea2ad4 bcachefs: fix gcc warning
[bcachefs-tools-debian] / libbcachefs / btree_update_leaf.c
index 53b39de52c6bb3e052aff5f3823d6d8f387407b1..92fb5f61ff14acf2b859576f86a4320b76d4e2d6 100644 (file)
@@ -8,6 +8,7 @@
 #include "debug.h"
 #include "extents.h"
 #include "journal.h"
+#include "journal_reclaim.h"
 #include "keylist.h"
 
 #include <linux/sort.h>
@@ -137,7 +138,7 @@ void bch2_btree_journal_key(struct btree_insert *trans,
        EBUG_ON(trans->journal_res.ref !=
                !(trans->flags & BTREE_INSERT_JOURNAL_REPLAY));
 
-       if (likely(trans->journal_res.ref)) {
+       if (likely(!(trans->flags & BTREE_INSERT_JOURNAL_REPLAY))) {
                u64 seq = trans->journal_res.seq;
                bool needs_whiteout = insert->k.needs_whiteout;
 
@@ -155,12 +156,16 @@ void bch2_btree_journal_key(struct btree_insert *trans,
                btree_bset_last(b)->journal_seq = cpu_to_le64(seq);
        }
 
-       if (unlikely(!journal_pin_active(&w->journal)))
-               bch2_journal_pin_add(j, &trans->journal_res,
-                                    &w->journal,
+       if (unlikely(!journal_pin_active(&w->journal))) {
+               u64 seq = likely(!(trans->flags & BTREE_INSERT_JOURNAL_REPLAY))
+                       ? trans->journal_res.seq
+                       : j->replay_journal_seq;
+
+               bch2_journal_pin_add(j, seq, &w->journal,
                                     btree_node_write_idx(b) == 0
                                     ? btree_node_flush0
                                     : btree_node_flush1);
+       }
 
        if (unlikely(!btree_node_dirty(b)))
                set_btree_node_dirty(b);