]> git.sesse.net Git - bcachefs-tools-debian/commitdiff
Update bcachefs sources to d9d1235f3c bcachefs: Handle transaction restarts in bch2_b...
authorKent Overstreet <kent.overstreet@gmail.com>
Wed, 20 Oct 2021 16:33:59 +0000 (12:33 -0400)
committerKent Overstreet <kent.overstreet@gmail.com>
Wed, 20 Oct 2021 16:36:50 +0000 (12:36 -0400)
21 files changed:
.bcachefs_revision
cmd_debug.c
libbcachefs/btree_gc.c
libbcachefs/btree_iter.c
libbcachefs/btree_iter.h
libbcachefs/btree_types.h
libbcachefs/btree_update.h
libbcachefs/btree_update_interior.c
libbcachefs/debug.c
libbcachefs/dirent.c
libbcachefs/ec.c
libbcachefs/fs-io.c
libbcachefs/fs.c
libbcachefs/fsck.c
libbcachefs/journal_seq_blacklist.c
libbcachefs/migrate.c
libbcachefs/move.c
libbcachefs/quota.c
libbcachefs/reflink.c
libbcachefs/sysfs.c
libbcachefs/xattr.c

index 7ae58f9f22c4f05d234c4b7bd297de8ee8d84d67..cd1097b57c3b9d23501341540afd33af477a8b0b 100644 (file)
@@ -1 +1 @@
-720f644e63e0f5b24bb69f2ffb70cdc2dd162810
+d9d1235f3c568a47b3547c0b0adad0d7948f18aa
index aee19fbf48b4ea6c80550b9814d2f215de43a1b3..7cbeb9052b411f1568f659c39b6a649707177418 100644 (file)
@@ -37,6 +37,7 @@ static void dump_one_device(struct bch_fs *c, struct bch_dev *ca, int fd)
        struct bch_sb *sb = ca->disk_sb.sb;
        ranges data;
        unsigned i;
+       int ret;
 
        darray_init(data);
 
@@ -69,7 +70,7 @@ static void dump_one_device(struct bch_fs *c, struct bch_dev *ca, int fd)
 
                bch2_trans_init(&trans, c, 0, 0);
 
-               __for_each_btree_node(&trans, iter, i, POS_MIN, 0, 1, 0, b) {
+               __for_each_btree_node(&trans, iter, i, POS_MIN, 0, 1, 0, b, ret) {
                        struct btree_node_iter iter;
                        struct bkey u;
                        struct bkey_s_c k;
@@ -85,6 +86,9 @@ static void dump_one_device(struct bch_fs *c, struct bch_dev *ca, int fd)
                        }
                }
 
+               if (ret)
+                       die("error %s walking btree nodes", strerror(-ret));
+
                b = c->btree_roots[i].b;
                if (!btree_node_fake(b)) {
                        ptrs = bch2_bkey_ptrs_c(bkey_i_to_s_c(&b->key));
@@ -211,10 +215,11 @@ static void list_btree_formats(struct bch_fs *c, enum btree_id btree_id, unsigne
        struct btree_iter iter;
        struct btree *b;
        char buf[4096];
+       int ret;
 
        bch2_trans_init(&trans, c, 0, 0);
 
-       __for_each_btree_node(&trans, iter, btree_id, start, 0, level, 0, b) {
+       __for_each_btree_node(&trans, iter, btree_id, start, 0, level, 0, b, ret) {
                if (bkey_cmp(b->key.k.p, end) > 0)
                        break;
 
@@ -223,6 +228,9 @@ static void list_btree_formats(struct bch_fs *c, enum btree_id btree_id, unsigne
        }
        bch2_trans_iter_exit(&trans, &iter);
 
+       if (ret)
+               die("error %s walking btree nodes", strerror(-ret));
+
        bch2_trans_exit(&trans);
 }
 
@@ -233,10 +241,11 @@ static void list_nodes(struct bch_fs *c, enum btree_id btree_id, unsigned level,
        struct btree_iter iter;
        struct btree *b;
        char buf[4096];
+       int ret;
 
        bch2_trans_init(&trans, c, 0, 0);
 
-       __for_each_btree_node(&trans, iter, btree_id, start, 0, level, 0, b) {
+       __for_each_btree_node(&trans, iter, btree_id, start, 0, level, 0, b, ret) {
                if (bkey_cmp(b->key.k.p, end) > 0)
                        break;
 
@@ -246,6 +255,9 @@ static void list_nodes(struct bch_fs *c, enum btree_id btree_id, unsigned level,
        }
        bch2_trans_iter_exit(&trans, &iter);
 
+       if (ret)
+               die("error %s walking btree nodes", strerror(-ret));
+
        bch2_trans_exit(&trans);
 }
 
@@ -352,10 +364,11 @@ static void list_nodes_ondisk(struct bch_fs *c, enum btree_id btree_id, unsigned
        struct btree_iter iter;
        struct btree *b;
        char buf[4096];
+       int ret;
 
        bch2_trans_init(&trans, c, 0, 0);
 
-       __for_each_btree_node(&trans, iter, btree_id, start, 0, level, 0, b) {
+       __for_each_btree_node(&trans, iter, btree_id, start, 0, level, 0, b, ret) {
                if (bkey_cmp(b->key.k.p, end) > 0)
                        break;
 
@@ -367,6 +380,9 @@ static void list_nodes_ondisk(struct bch_fs *c, enum btree_id btree_id, unsigned
        }
        bch2_trans_iter_exit(&trans, &iter);
 
+       if (ret)
+               die("error %s walking btree nodes", strerror(-ret));
+
        bch2_trans_exit(&trans);
 }
 
@@ -380,10 +396,11 @@ static void list_nodes_keys(struct bch_fs *c, enum btree_id btree_id, unsigned l
        struct bkey_s_c k;
        struct btree *b;
        char buf[4096];
+       int ret;
 
        bch2_trans_init(&trans, c, 0, 0);
 
-       __for_each_btree_node(&trans, iter, btree_id, start, 0, level, 0, b) {
+       __for_each_btree_node(&trans, iter, btree_id, start, 0, level, 0, b, ret) {
                if (bkey_cmp(b->key.k.p, end) > 0)
                        break;
 
@@ -398,6 +415,9 @@ static void list_nodes_keys(struct bch_fs *c, enum btree_id btree_id, unsigned l
        }
        bch2_trans_iter_exit(&trans, &iter);
 
+       if (ret)
+               die("error %s walking btree nodes", strerror(-ret));
+
        bch2_trans_exit(&trans);
 }
 
index 8f6e73b1e260d7e81a556c7fb6260adb3644ee6d..dcbde49f07c462e46c17860a117a8b5e8a664eec 100644 (file)
@@ -806,7 +806,7 @@ static int bch2_gc_btree(struct bch_fs *c, enum btree_id btree_id,
        gc_pos_set(c, gc_pos_btree(btree_id, POS_MIN, 0));
 
        __for_each_btree_node(&trans, iter, btree_id, POS_MIN,
-                             0, depth, BTREE_ITER_PREFETCH, b) {
+                             0, depth, BTREE_ITER_PREFETCH, b, ret) {
                bch2_verify_btree_nr_keys(b);
 
                gc_pos_set(c, gc_pos_btree_node(b));
@@ -833,7 +833,7 @@ static int bch2_gc_btree(struct bch_fs *c, enum btree_id btree_id,
        }
        bch2_trans_iter_exit(&trans, &iter);
 
-       ret = bch2_trans_exit(&trans) ?: ret;
+       bch2_trans_exit(&trans);
        if (ret)
                return ret;
 
index 14fb1ad89517a3c8b41142cdabbad4778c675e89..343587e810eaf118885f547b57b91c87dc460a62 100644 (file)
@@ -1341,10 +1341,8 @@ retry_all:
                } while (ret);
        }
 
-       if (unlikely(ret == -EIO)) {
-               trans->error = true;
+       if (unlikely(ret == -EIO))
                goto out;
-       }
 
        BUG_ON(ret && ret != -EINTR);
 
@@ -1891,7 +1889,7 @@ struct btree *bch2_btree_iter_peek_node(struct btree_iter *iter)
 
        ret = bch2_btree_path_traverse(trans, iter->path, iter->flags);
        if (ret)
-               goto out;
+               goto err;
 
        b = btree_path_node(iter->path, iter->path->level);
        if (!b)
@@ -1911,6 +1909,9 @@ out:
        bch2_btree_iter_verify(iter);
 
        return b;
+err:
+       b = ERR_PTR(ret);
+       goto out;
 }
 
 struct btree *bch2_btree_iter_next_node(struct btree_iter *iter)
@@ -1927,7 +1928,9 @@ struct btree *bch2_btree_iter_next_node(struct btree_iter *iter)
        if (!btree_path_node(path, path->level))
                goto out;
 
-       bch2_trans_cond_resched(trans);
+       ret = bch2_trans_cond_resched(trans);
+       if (ret)
+               goto err;
 
        btree_node_unlock(path, path->level);
        path->l[path->level].b = BTREE_ITER_NO_NODE_UP;
@@ -1936,7 +1939,7 @@ struct btree *bch2_btree_iter_next_node(struct btree_iter *iter)
        btree_path_set_dirty(path, BTREE_ITER_NEED_TRAVERSE);
        ret = bch2_btree_path_traverse(trans, path, iter->flags);
        if (ret)
-               goto out;
+               goto err;
 
        /* got to end? */
        b = btree_path_node(path, path->level);
@@ -1960,10 +1963,8 @@ struct btree *bch2_btree_iter_next_node(struct btree_iter *iter)
                bch2_btree_iter_verify(iter);
 
                ret = bch2_btree_path_traverse(trans, path, iter->flags);
-               if (ret) {
-                       b = NULL;
-                       goto out;
-               }
+               if (ret)
+                       goto err;
 
                b = path->l[path->level].b;
        }
@@ -1980,6 +1981,9 @@ out:
        bch2_btree_iter_verify(iter);
 
        return b;
+err:
+       b = ERR_PTR(ret);
+       goto out;
 }
 
 /* Iterate across keys (in leaf nodes only) */
@@ -2727,7 +2731,7 @@ leaked:
 #endif
 }
 
-int bch2_trans_exit(struct btree_trans *trans)
+void bch2_trans_exit(struct btree_trans *trans)
        __releases(&c->btree_trans_barrier)
 {
        struct btree_insert_entry *i;
@@ -2777,8 +2781,6 @@ int bch2_trans_exit(struct btree_trans *trans)
 
        trans->mem      = (void *) 0x1;
        trans->paths    = (void *) 0x1;
-
-       return trans->error ? -EIO : 0;
 }
 
 static void __maybe_unused
index 19ca73f5ea2265ad8dee726c1a1c97c7c6584687..72aff955493bcde2e2a735774ae3c0d7f1a4331c 100644 (file)
@@ -258,18 +258,18 @@ static inline int bch2_trans_cond_resched(struct btree_trans *trans)
        }
 }
 
-#define __for_each_btree_node(_trans, _iter, _btree_id, _start,        \
-                             _locks_want, _depth, _flags, _b)          \
+#define __for_each_btree_node(_trans, _iter, _btree_id, _start,                \
+                             _locks_want, _depth, _flags, _b, _ret)    \
        for (bch2_trans_node_iter_init((_trans), &(_iter), (_btree_id), \
                                _start, _locks_want, _depth, _flags),   \
             _b = bch2_btree_iter_peek_node(&(_iter));                  \
-            (_b);                                                      \
+            !((_ret) = PTR_ERR_OR_ZERO(_b)) && (_b);                   \
             (_b) = bch2_btree_iter_next_node(&(_iter)))
 
 #define for_each_btree_node(_trans, _iter, _btree_id, _start,          \
-                           _flags, _b)                                 \
+                           _flags, _b, _ret)                           \
        __for_each_btree_node(_trans, _iter, _btree_id, _start,         \
-                             0, 0, _flags, _b)
+                             0, 0, _flags, _b, _ret)
 
 static inline struct bkey_s_c __bch2_btree_iter_peek(struct btree_iter *iter,
                                                     unsigned flags)
@@ -325,7 +325,7 @@ static inline void set_btree_iter_dontneed(struct btree_iter *iter)
 void *bch2_trans_kmalloc(struct btree_trans *, size_t);
 void bch2_trans_begin(struct btree_trans *);
 void bch2_trans_init(struct btree_trans *, struct bch_fs *, unsigned, size_t);
-int bch2_trans_exit(struct btree_trans *);
+void bch2_trans_exit(struct btree_trans *);
 
 void bch2_btree_trans_to_text(struct printbuf *, struct bch_fs *);
 
index 7fcd2ceb51e93a4f9e119776f91c7afcf3b003dc..26aa3cd182d59c3666806d8b4aec1923b161dfcb 100644 (file)
@@ -377,7 +377,6 @@ struct btree_trans {
        u8                      nr_sorted;
        u8                      nr_updates;
        bool                    used_mempool:1;
-       bool                    error:1;
        bool                    in_traverse_all:1;
        bool                    restarted:1;
        /*
index 4d0ece342cf6270c24864dc08fe54c388617f510..155643da35be9d279e15f4a0f68ac8ab4cb1d6bb 100644 (file)
@@ -120,14 +120,14 @@ static inline int bch2_trans_commit(struct btree_trans *trans,
 #define bch2_trans_do(_c, _disk_res, _journal_seq, _flags, _do)                \
 ({                                                                     \
        struct btree_trans trans;                                       \
-       int _ret, _ret2;                                                \
+       int _ret;                                                       \
                                                                        \
        bch2_trans_init(&trans, (_c), 0, 0);                            \
        _ret = __bch2_trans_do(&trans, _disk_res, _journal_seq, _flags, \
                               _do);                                    \
-       _ret2 = bch2_trans_exit(&trans);                                \
+       bch2_trans_exit(&trans);                                        \
                                                                        \
-       _ret ?: _ret2;                                                  \
+       _ret;                                                           \
 })
 
 #define trans_for_each_update(_trans, _i)                              \
index 98c05bb032a93c75e366cbed6501a6fbddb80646..591a2fedb89d63e0134d2f5098f189ebc865c948 100644 (file)
@@ -1736,6 +1736,10 @@ retry:
                goto out;
 
        b = bch2_btree_iter_peek_node(iter);
+       ret = PTR_ERR_OR_ZERO(b);
+       if (ret)
+               goto out;
+
        if (!b || b->data->keys.seq != seq)
                goto out;
 
index 9f14bf4cb49ae7e902fc2b4eb4e8516da4bad075..294e4baf4deb55820e51cfc8dfa69de1b10f9690 100644 (file)
@@ -318,7 +318,7 @@ static ssize_t bch2_read_btree_formats(struct file *file, char __user *buf,
 
        bch2_trans_init(&trans, i->c, 0, 0);
 
-       for_each_btree_node(&trans, iter, i->id, i->from, 0, b) {
+       for_each_btree_node(&trans, iter, i->id, i->from, 0, b, err) {
                bch2_btree_node_to_text(&PBUF(i->buf), i->c, b);
                i->bytes = strlen(i->buf);
                err = flush_buf(i);
index cd5468b15ba26956a2072c0257e57f5a03093099..26df20ad090cd91956803e03ebcf163c3196b977 100644 (file)
@@ -491,7 +491,7 @@ err:
        if (ret == -EINTR)
                goto retry;
 
-       ret = bch2_trans_exit(&trans) ?: ret;
+       bch2_trans_exit(&trans);
 
        return ret;
 }
index f0bdbdb2673d899956c1613c4fb4ffd9afe7db70..9f87e2bc44688416270f012a369d8f49c60fcf31 100644 (file)
@@ -1670,11 +1670,12 @@ int bch2_ec_mem_alloc(struct bch_fs *c, bool gc)
        bch2_trans_iter_init(&trans, &iter, BTREE_ID_stripes, POS(0, U64_MAX), 0);
 
        k = bch2_btree_iter_prev(&iter);
-       if (!IS_ERR_OR_NULL(k.k))
+       ret = bkey_err(k);
+       if (!ret && k.k)
                idx = k.k->p.offset + 1;
 
        bch2_trans_iter_exit(&trans, &iter);
-       ret = bch2_trans_exit(&trans);
+       bch2_trans_exit(&trans);
        if (ret)
                return ret;
 
index c07755c6916d2a6b010679e55b13cd35f8bc4713..900a0c3e631c75c5559cdcbdd4bbeaccfadab516 100644 (file)
@@ -2228,7 +2228,8 @@ err:
        if (ret == -EINTR)
                goto retry;
 
-       return bch2_trans_exit(&trans) ?: ret;
+       bch2_trans_exit(&trans);
+       return ret;
 }
 
 static int __bch2_truncate_page(struct bch_inode_info *inode,
@@ -3132,7 +3133,7 @@ err:
        if (ret == -EINTR)
                goto retry;
 
-       ret = bch2_trans_exit(&trans) ?: ret;
+       bch2_trans_exit(&trans);
        if (ret)
                return ret;
 
@@ -3247,7 +3248,7 @@ err:
        if (ret == -EINTR)
                goto retry;
 
-       ret = bch2_trans_exit(&trans) ?: ret;
+       bch2_trans_exit(&trans);
        if (ret)
                return ret;
 
index 2094c18cd87412a9c6307910aecc419537f305d8..45a2af3f59cabe85ec6ad647fa5bc0e62c6c2470 100644 (file)
@@ -1014,7 +1014,7 @@ err:
                ret = bch2_fill_extent(c, info, bkey_i_to_s_c(prev.k),
                                       FIEMAP_EXTENT_LAST);
 
-       ret = bch2_trans_exit(&trans) ?: ret;
+       bch2_trans_exit(&trans);
        bch2_bkey_buf_exit(&cur, c);
        bch2_bkey_buf_exit(&prev, c);
        return ret < 0 ? ret : 0;
index 826a3577ee9318c115b1a7751eddf6b1e528af04..a36bc840a62c56e2828b2b3152647f299a9d8b60 100644 (file)
@@ -981,7 +981,8 @@ static int check_inodes(struct bch_fs *c, bool full)
 
        BUG_ON(ret == -EINTR);
 
-       return bch2_trans_exit(&trans) ?: ret;
+       bch2_trans_exit(&trans);
+       return ret;
 }
 
 noinline_for_stack
@@ -1659,7 +1660,8 @@ fsck_err:
                goto retry;
 
        bch2_trans_iter_exit(&trans, &iter);
-       return bch2_trans_exit(&trans) ?: ret;
+       bch2_trans_exit(&trans);
+       return ret;
 }
 
 /* Get root directory, create if it doesn't exist: */
@@ -1876,7 +1878,8 @@ static int check_directory_structure(struct bch_fs *c)
 
        kfree(path.entries);
 
-       return bch2_trans_exit(&trans) ?: ret;
+       bch2_trans_exit(&trans);
+       return ret;
 }
 
 struct nlink_table {
index 68fb2ebd91ac14dc5988d972e99d213e7ba5c2bc..79bc0e49389b021343a6f38ee64869d58ca7f72a 100644 (file)
@@ -253,16 +253,25 @@ void bch2_blacklist_entries_gc(struct work_struct *work)
                struct btree_iter iter;
                struct btree *b;
 
-               for_each_btree_node(&trans, iter, i, POS_MIN,
-                                   BTREE_ITER_PREFETCH, b)
-                       if (test_bit(BCH_FS_STOPPING, &c->flags)) {
-                               bch2_trans_exit(&trans);
-                               return;
-                       }
+               bch2_trans_node_iter_init(&trans, &iter, i, POS_MIN,
+                                         0, 0, BTREE_ITER_PREFETCH);
+retry:
+               bch2_trans_begin(&trans);
+
+               b = bch2_btree_iter_peek_node(&iter);
+
+               while (!(ret = PTR_ERR_OR_ZERO(b)) &&
+                      b &&
+                      !test_bit(BCH_FS_STOPPING, &c->flags))
+                       b = bch2_btree_iter_next_node(&iter);
+
+               if (ret == -EINTR)
+                       goto retry;
+
                bch2_trans_iter_exit(&trans, &iter);
        }
 
-       ret = bch2_trans_exit(&trans);
+       bch2_trans_exit(&trans);
        if (ret)
                return;
 
index 94d5d99ffd2a4634398af0faae7acfd3f90c78d6..6defc33322b3b24bd5f9a076165accce6f204aa0 100644 (file)
@@ -100,7 +100,7 @@ static int __bch2_dev_usrdata_drop(struct bch_fs *c, unsigned dev_idx, int flags
        }
        bch2_trans_iter_exit(&trans, &iter);
 
-       ret = bch2_trans_exit(&trans) ?: ret;
+       bch2_trans_exit(&trans);
        bch2_bkey_buf_exit(&sk, c);
 
        BUG_ON(ret == -EINTR);
@@ -135,9 +135,11 @@ static int bch2_dev_metadata_drop(struct bch_fs *c, unsigned dev_idx, int flags)
        for (id = 0; id < BTREE_ID_NR; id++) {
                bch2_trans_node_iter_init(&trans, &iter, id, POS_MIN, 0, 0,
                                          BTREE_ITER_PREFETCH);
-
+retry:
+               ret = 0;
                while (bch2_trans_begin(&trans),
-                      (b = bch2_btree_iter_peek_node(&iter))) {
+                      (b = bch2_btree_iter_peek_node(&iter)) &&
+                      !(ret = PTR_ERR_OR_ZERO(b))) {
                        if (!bch2_bkey_has_device(bkey_i_to_s_c(&b->key),
                                                  dev_idx))
                                goto next;
@@ -164,6 +166,9 @@ static int bch2_dev_metadata_drop(struct bch_fs *c, unsigned dev_idx, int flags)
 next:
                        bch2_btree_iter_next_node(&iter);
                }
+               if (ret == -EINTR)
+                       goto retry;
+
                bch2_trans_iter_exit(&trans, &iter);
 
                if (ret)
@@ -176,7 +181,7 @@ next:
 
        ret = 0;
 err:
-       ret = bch2_trans_exit(&trans) ?: ret;
+       bch2_trans_exit(&trans);
        bch2_bkey_buf_exit(&k, c);
 
        BUG_ON(ret == -EINTR);
index 790389d485a46c04e18840ef2743aff5b736b155..20396820bbb36bdd06ebdd09edb0cce123453b7c 100644 (file)
@@ -773,7 +773,7 @@ next_nondata:
 out:
 
        bch2_trans_iter_exit(&trans, &iter);
-       ret = bch2_trans_exit(&trans) ?: ret;
+       bch2_trans_exit(&trans);
        bch2_bkey_buf_exit(&sk, c);
 
        return ret;
@@ -885,9 +885,11 @@ static int bch2_move_btree(struct bch_fs *c,
 
                bch2_trans_node_iter_init(&trans, &iter, id, POS_MIN, 0, 0,
                                          BTREE_ITER_PREFETCH);
-
+retry:
+               ret = 0;
                while (bch2_trans_begin(&trans),
-                      (b = bch2_btree_iter_peek_node(&iter))) {
+                      (b = bch2_btree_iter_peek_node(&iter)) &&
+                      !(ret = PTR_ERR_OR_ZERO(b))) {
                        if (kthread && kthread_should_stop())
                                break;
 
@@ -915,6 +917,9 @@ next:
                        bch2_trans_cond_resched(&trans);
                        bch2_btree_iter_next_node(&iter);
                }
+               if (ret == -EINTR)
+                       goto retry;
+
                bch2_trans_iter_exit(&trans, &iter);
 
                if (kthread && kthread_should_stop())
index 9b0f4d3f176d5fcbd7c0e0e189679c40416abefd..17fd5bf107bbdddfda284ce1b7a13d2d3526bbec 100644 (file)
@@ -374,7 +374,8 @@ static int bch2_quota_init_type(struct bch_fs *c, enum quota_types type)
        }
        bch2_trans_iter_exit(&trans, &iter);
 
-       return bch2_trans_exit(&trans) ?: ret;
+       bch2_trans_exit(&trans);
+       return ret;
 }
 
 void bch2_fs_quota_exit(struct bch_fs *c)
@@ -452,7 +453,8 @@ int bch2_fs_quota_read(struct bch_fs *c)
        }
        bch2_trans_iter_exit(&trans, &iter);
 
-       return bch2_trans_exit(&trans) ?: ret;
+       bch2_trans_exit(&trans);
+       return ret;
 }
 
 /* Enable/disable/delete quotas for an entire filesystem: */
index c63c95fc49b1aefb689fd76e8bf783f88ca72b8b..9bcf4216a286bd63abe96d0f6d6f08b22ab43aa3 100644 (file)
@@ -349,7 +349,7 @@ s64 bch2_remap_range(struct bch_fs *c,
                bch2_trans_iter_exit(&trans, &inode_iter);
        } while (ret2 == -EINTR);
 
-       ret = bch2_trans_exit(&trans) ?: ret;
+       bch2_trans_exit(&trans);
        bch2_bkey_buf_exit(&new_src, c);
        bch2_bkey_buf_exit(&new_dst, c);
 
index 92e58f5c6bbfabb078cefd292b214cff5883d0e8..51eb19b84a282b2fe4a25e3dc4d0f4c928a979f1 100644 (file)
@@ -327,7 +327,7 @@ static int bch2_compression_stats_to_text(struct printbuf *out, struct bch_fs *c
                }
        bch2_trans_iter_exit(&trans, &iter);
 
-       ret = bch2_trans_exit(&trans) ?: ret;
+       bch2_trans_exit(&trans);
        if (ret)
                return ret;
 
index a182e242a0e817ec3cd9af31081c46a3d05911ce..fe572b2375eb6d19b4ab872670cb9448a495601b 100644 (file)
@@ -316,7 +316,7 @@ err:
        if (ret == -EINTR)
                goto retry;
 
-       ret = bch2_trans_exit(&trans) ?: ret;
+       bch2_trans_exit(&trans);
 
        if (ret)
                return ret;