bcachefs: logged ops only use inum 0 of logged ops btree
authorKent Overstreet <kent.overstreet@linux.dev>
Mon, 2 Dec 2024 02:35:11 +0000 (21:35 -0500)
committerKent Overstreet <kent.overstreet@linux.dev>
Sat, 21 Dec 2024 06:36:21 +0000 (01:36 -0500)
we wish to use the logged ops btree for other items that aren't strictly
logged ops: cursors for inode allocation

There's no reason to create another cached btree for inode allocator
cursors - so reserve different parts of the keyspace for different
purposes.

Older versions will ignore or delete the cursors.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
fs/bcachefs/logged_ops.c
fs/bcachefs/logged_ops_format.h

index 60e00702d1a46e41dc3cc0b5818fd108b8487ca6..1ac51af16299f3d4ac74de43495b8b01df83a50e 100644 (file)
@@ -63,8 +63,9 @@ fsck_err:
 int bch2_resume_logged_ops(struct bch_fs *c)
 {
        int ret = bch2_trans_run(c,
-               for_each_btree_key(trans, iter,
-                                  BTREE_ID_logged_ops, POS_MIN,
+               for_each_btree_key_max(trans, iter,
+                                  BTREE_ID_logged_ops,
+                                  POS(LOGGED_OPS_INUM, 0), POS(LOGGED_OPS_INUM, U64_MAX),
                                   BTREE_ITER_prefetch, k,
                        resume_logged_op(trans, &iter, k)));
        bch_err_fn(c, ret);
@@ -74,9 +75,8 @@ int bch2_resume_logged_ops(struct bch_fs *c)
 static int __bch2_logged_op_start(struct btree_trans *trans, struct bkey_i *k)
 {
        struct btree_iter iter;
-       int ret;
-
-       ret = bch2_bkey_get_empty_slot(trans, &iter, BTREE_ID_logged_ops, POS_MAX);
+       int ret = bch2_bkey_get_empty_slot(trans, &iter,
+                                BTREE_ID_logged_ops, POS(LOGGED_OPS_INUM, U64_MAX));
        if (ret)
                return ret;
 
index 6a4bf7129dba236c7d3b456f901e38fd9cda57c0..0b370a963ac609ce814fb030cd87b775d11d95b4 100644 (file)
@@ -2,6 +2,8 @@
 #ifndef _BCACHEFS_LOGGED_OPS_FORMAT_H
 #define _BCACHEFS_LOGGED_OPS_FORMAT_H
 
+#define LOGGED_OPS_INUM                0
+
 struct bch_logged_op_truncate {
        struct bch_val          v;
        __le32                  subvol;