]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/journal.c
Update bcachefs sources to fe72e70682 bcachefs: Fix for btree_gc repairing interior...
[bcachefs-tools-debian] / libbcachefs / journal.c
index b901be5ba9c0878402e208c3df256fee103c87ae..1b49a1c3b669d77f4bfec2e44c452546162aec75 100644 (file)
@@ -787,7 +787,7 @@ static int __bch2_set_nr_journal_buckets(struct bch_dev *ca, unsigned nr,
         * We may be called from the device add path, before the new device has
         * actually been added to the running filesystem:
         */
-       if (c)
+       if (!new_fs)
                spin_lock(&c->journal.lock);
 
        memcpy(new_buckets,     ja->buckets,    ja->nr * sizeof(u64));
@@ -795,17 +795,17 @@ static int __bch2_set_nr_journal_buckets(struct bch_dev *ca, unsigned nr,
        swap(new_buckets,       ja->buckets);
        swap(new_bucket_seq,    ja->bucket_seq);
 
-       if (c)
+       if (!new_fs)
                spin_unlock(&c->journal.lock);
 
        while (ja->nr < nr) {
                struct open_bucket *ob = NULL;
                unsigned pos;
-               long bucket;
+               long b;
 
                if (new_fs) {
-                       bucket = bch2_bucket_alloc_new_fs(ca);
-                       if (bucket < 0) {
+                       b = bch2_bucket_alloc_new_fs(ca);
+                       if (b < 0) {
                                ret = -ENOSPC;
                                goto err;
                        }
@@ -819,10 +819,8 @@ static int __bch2_set_nr_journal_buckets(struct bch_dev *ca, unsigned nr,
                                goto err;
                        }
 
-                       bucket = sector_to_bucket(ca, ob->ptr.offset);
-               }
+                       b = sector_to_bucket(ca, ob->ptr.offset);
 
-               if (c) {
                        percpu_down_read(&c->mark_lock);
                        spin_lock(&c->journal.lock);
                }
@@ -839,9 +837,9 @@ static int __bch2_set_nr_journal_buckets(struct bch_dev *ca, unsigned nr,
                __array_insert_item(journal_buckets->buckets,   ja->nr, pos);
                ja->nr++;
 
-               ja->buckets[pos] = bucket;
+               ja->buckets[pos] = b;
                ja->bucket_seq[pos] = 0;
-               journal_buckets->buckets[pos] = cpu_to_le64(bucket);
+               journal_buckets->buckets[pos] = cpu_to_le64(b);
 
                if (pos <= ja->discard_idx)
                        ja->discard_idx = (ja->discard_idx + 1) % ja->nr;
@@ -852,28 +850,25 @@ static int __bch2_set_nr_journal_buckets(struct bch_dev *ca, unsigned nr,
                if (pos <= ja->cur_idx)
                        ja->cur_idx = (ja->cur_idx + 1) % ja->nr;
 
-               if (!c || new_fs)
-                       bch2_mark_metadata_bucket(c, ca, bucket, BCH_DATA_journal,
+               if (new_fs) {
+                       bch2_mark_metadata_bucket(c, ca, b, BCH_DATA_journal,
                                                  ca->mi.bucket_size,
                                                  gc_phase(GC_PHASE_SB),
                                                  0);
-
-               if (c) {
+               } else {
                        spin_unlock(&c->journal.lock);
                        percpu_up_read(&c->mark_lock);
-               }
 
-               if (c && !new_fs)
                        ret = bch2_trans_do(c, NULL, NULL, BTREE_INSERT_NOFAIL,
-                               bch2_trans_mark_metadata_bucket(&trans, NULL, ca,
-                                               bucket, BCH_DATA_journal,
+                               bch2_trans_mark_metadata_bucket(&trans, ca,
+                                               b, BCH_DATA_journal,
                                                ca->mi.bucket_size));
 
-               if (!new_fs)
                        bch2_open_bucket_put(c, ob);
 
-               if (ret)
-                       goto err;
+                       if (ret)
+                               goto err;
+               }
        }
 err:
        bch2_sb_resize_journal(&ca->disk_sb,