]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/ec.c
Update bcachefs sources to 841a95c29f4c bcachefs: fix userspace build errors
[bcachefs-tools-debian] / libbcachefs / ec.c
index bc8b556f19a90fbbd768f360b87b11e4bf7cf86b..76163c2ea3b3d2d747f0bc8a508c127263303679 100644 (file)
@@ -1005,7 +1005,7 @@ static int ec_stripe_update_extents(struct bch_fs *c, struct ec_stripe_buf *s)
        unsigned i, nr_data = v->nr_blocks - v->nr_redundant;
        int ret = 0;
 
-       ret = bch2_btree_write_buffer_flush_nocheck_rw(trans);
+       ret = bch2_btree_write_buffer_flush_sync(trans);
        if (ret)
                goto err;
 
@@ -1833,7 +1833,6 @@ void bch2_fs_ec_flush(struct bch_fs *c)
 
 int bch2_stripes_read(struct bch_fs *c)
 {
-       struct btree_trans *trans = bch2_trans_get(c);
        struct btree_iter iter;
        struct bkey_s_c k;
        const struct bch_stripe *s;
@@ -1841,36 +1840,33 @@ int bch2_stripes_read(struct bch_fs *c)
        unsigned i;
        int ret;
 
-       for_each_btree_key(trans, iter, BTREE_ID_stripes, POS_MIN,
-                          BTREE_ITER_PREFETCH, k, ret) {
-               if (k.k->type != KEY_TYPE_stripe)
-                       continue;
-
-               ret = __ec_stripe_mem_alloc(c, k.k->p.offset, GFP_KERNEL);
-               if (ret)
-                       break;
-
-               s = bkey_s_c_to_stripe(k).v;
+       ret = bch2_trans_run(c,
+               for_each_btree_key(trans, iter, BTREE_ID_stripes, POS_MIN,
+                                  BTREE_ITER_PREFETCH, k, ({
+                       if (k.k->type != KEY_TYPE_stripe)
+                               continue;
 
-               m = genradix_ptr(&c->stripes, k.k->p.offset);
-               m->sectors      = le16_to_cpu(s->sectors);
-               m->algorithm    = s->algorithm;
-               m->nr_blocks    = s->nr_blocks;
-               m->nr_redundant = s->nr_redundant;
-               m->blocks_nonempty = 0;
+                       ret = __ec_stripe_mem_alloc(c, k.k->p.offset, GFP_KERNEL);
+                       if (ret)
+                               break;
 
-               for (i = 0; i < s->nr_blocks; i++)
-                       m->blocks_nonempty += !!stripe_blockcount_get(s, i);
+                       s = bkey_s_c_to_stripe(k).v;
 
-               bch2_stripes_heap_insert(c, m, k.k->p.offset);
-       }
-       bch2_trans_iter_exit(trans, &iter);
+                       m = genradix_ptr(&c->stripes, k.k->p.offset);
+                       m->sectors      = le16_to_cpu(s->sectors);
+                       m->algorithm    = s->algorithm;
+                       m->nr_blocks    = s->nr_blocks;
+                       m->nr_redundant = s->nr_redundant;
+                       m->blocks_nonempty = 0;
 
-       bch2_trans_put(trans);
+                       for (i = 0; i < s->nr_blocks; i++)
+                               m->blocks_nonempty += !!stripe_blockcount_get(s, i);
 
-       if (ret)
-               bch_err_fn(c, ret);
+                       bch2_stripes_heap_insert(c, m, k.k->p.offset);
+                       0;
+               })));
 
+       bch_err_fn(c, ret);
        return ret;
 }