]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/lru.c
Update bcachefs sources to 070ec8d07b bcachefs: Snapshot depth, skiplist fields
[bcachefs-tools-debian] / libbcachefs / lru.c
index c2dece27da2d3c856a46af66ae3c0579584d0011..07d1929535b87ce3c2996a88b64ec761d45c2863 100644 (file)
 
 /* KEY_TYPE_lru is obsolete: */
 int bch2_lru_invalid(const struct bch_fs *c, struct bkey_s_c k,
-                    unsigned flags, struct printbuf *err)
+                    enum bkey_invalid_flags flags,
+                    struct printbuf *err)
 {
-       const struct bch_lru *lru = bkey_s_c_to_lru(k).v;
-
-       if (bkey_val_bytes(k.k) < sizeof(*lru)) {
-               prt_printf(err, "incorrect value size (%zu < %zu)",
-                      bkey_val_bytes(k.k), sizeof(*lru));
-               return -BCH_ERR_invalid_bkey;
-       }
-
        if (!lru_pos_time(k.k->p)) {
                prt_printf(err, "lru entry at time=0");
                return -BCH_ERR_invalid_bkey;
@@ -122,8 +115,7 @@ static int bch2_check_lru_key(struct btree_trans *trans,
                        alloc_pos.inode, alloc_pos.offset))
                return bch2_btree_delete_at(trans, lru_iter, 0);
 
-       bch2_trans_iter_init(trans, &iter, BTREE_ID_alloc, alloc_pos, 0);
-       k = bch2_btree_iter_peek_slot(&iter);
+       k = bch2_bkey_get_iter(trans, &iter, BTREE_ID_alloc, alloc_pos, 0);
        ret = bkey_err(k);
        if (ret)
                goto err;
@@ -169,20 +161,18 @@ fsck_err:
 
 int bch2_check_lrus(struct bch_fs *c)
 {
-       struct btree_trans trans;
        struct btree_iter iter;
        struct bkey_s_c k;
        struct bpos last_flushed_pos = POS_MIN;
        int ret = 0;
 
-       bch2_trans_init(&trans, c, 0, 0);
-
-       ret = for_each_btree_key_commit(&trans, iter,
-                       BTREE_ID_lru, POS_MIN, BTREE_ITER_PREFETCH, k,
-                       NULL, NULL, BTREE_INSERT_NOFAIL|BTREE_INSERT_LAZY_RW,
-               bch2_check_lru_key(&trans, &iter, k, &last_flushed_pos));
-
-       bch2_trans_exit(&trans);
+       ret = bch2_trans_run(c,
+               for_each_btree_key_commit(&trans, iter,
+                               BTREE_ID_lru, POS_MIN, BTREE_ITER_PREFETCH, k,
+                               NULL, NULL, BTREE_INSERT_NOFAIL|BTREE_INSERT_LAZY_RW,
+                       bch2_check_lru_key(&trans, &iter, k, &last_flushed_pos)));
+       if (ret)
+               bch_err_fn(c, ret);
        return ret;
 
 }