summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@linux.dev>2023-12-16 21:01:40 -0500
committerKent Overstreet <kent.overstreet@linux.dev>2025-04-29 13:44:31 -0400
commite2bb7d2012b794b70b4aec9e8f0feaaa124594ee (patch)
tree5ff86b46b7a1d0b6f4e89524f1f16212338f33c2
parent13b8a3bdd92d87484af8f1673157f3dcd679ad20 (diff)
bcachefs: Kill BTREE_ITER_with_updates
nice API cleanup, forgetting BTREE_ITER_with_updates when it's needed is a painful bug. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
-rw-r--r--fs/bcachefs/alloc_background.c4
-rw-r--r--fs/bcachefs/backpointers.c3
-rw-r--r--fs/bcachefs/btree_iter.c9
-rw-r--r--fs/bcachefs/btree_types.h1
-rw-r--r--fs/bcachefs/btree_update.c1
-rw-r--r--fs/bcachefs/buckets.c3
-rw-r--r--fs/bcachefs/fsck.c3
-rw-r--r--fs/bcachefs/inode.c5
-rw-r--r--fs/bcachefs/snapshot.c7
-rw-r--r--fs/bcachefs/subvolume.c3
10 files changed, 13 insertions, 26 deletions
diff --git a/fs/bcachefs/alloc_background.c b/fs/bcachefs/alloc_background.c
index 1cd331f97dee..04335c16f467 100644
--- a/fs/bcachefs/alloc_background.c
+++ b/fs/bcachefs/alloc_background.c
@@ -457,7 +457,6 @@ bch2_trans_start_alloc_update_noupdate(struct btree_trans *trans, struct btree_i
struct bpos pos)
{
struct bkey_s_c k = bch2_bkey_get_iter(trans, iter, BTREE_ID_alloc, pos,
- BTREE_ITER_with_updates|
BTREE_ITER_cached|
BTREE_ITER_intent);
int ret = bkey_err(k);
@@ -756,8 +755,7 @@ static noinline int bch2_bucket_gen_update(struct btree_trans *trans,
return ret;
k = bch2_bkey_get_iter(trans, &iter, BTREE_ID_bucket_gens, pos,
- BTREE_ITER_intent|
- BTREE_ITER_with_updates);
+ BTREE_ITER_intent);
ret = bkey_err(k);
if (ret)
return ret;
diff --git a/fs/bcachefs/backpointers.c b/fs/bcachefs/backpointers.c
index 65208f8288f6..93e3cba27f46 100644
--- a/fs/bcachefs/backpointers.c
+++ b/fs/bcachefs/backpointers.c
@@ -155,8 +155,7 @@ int bch2_bucket_backpointer_mod_nowritebuffer(struct btree_trans *trans,
struct bkey_s_c k = bch2_bkey_get_iter(trans, &bp_iter, BTREE_ID_backpointers,
bp->k.p,
BTREE_ITER_intent|
- BTREE_ITER_slots|
- BTREE_ITER_with_updates);
+ BTREE_ITER_slots);
int ret = bkey_err(k);
if (ret)
return ret;
diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c
index b3b93e4e67c2..6bdf24d7b429 100644
--- a/fs/bcachefs/btree_iter.c
+++ b/fs/bcachefs/btree_iter.c
@@ -2275,8 +2275,7 @@ static struct bkey_s_c __bch2_btree_iter_peek(struct btree_trans *trans, struct
if (unlikely(iter->flags & BTREE_ITER_with_journal))
btree_trans_peek_journal(trans, iter, &k);
- if (unlikely((iter->flags & BTREE_ITER_with_updates) &&
- trans->nr_updates))
+ if (unlikely(trans->nr_updates))
bch2_btree_trans_peek_updates(trans, iter, &k);
if (k.k && bkey_deleted(k.k)) {
@@ -2541,8 +2540,7 @@ static struct bkey_s_c __bch2_btree_iter_peek_prev(struct btree_trans *trans, st
if (unlikely(iter->flags & BTREE_ITER_with_journal))
btree_trans_peek_prev_journal(trans, iter, &k);
- if (unlikely((iter->flags & BTREE_ITER_with_updates) &&
- trans->nr_updates))
+ if (unlikely(trans->nr_updates))
bch2_btree_trans_peek_prev_updates(trans, iter, &k);
if (likely(k.k && !bkey_deleted(k.k))) {
@@ -2774,8 +2772,7 @@ struct bkey_s_c bch2_btree_iter_peek_slot(struct btree_trans *trans, struct btre
!(iter->flags & (BTREE_ITER_is_extents|BTREE_ITER_filter_snapshots))) {
k = bkey_s_c_null;
- if (unlikely((iter->flags & BTREE_ITER_with_updates) &&
- trans->nr_updates)) {
+ if (unlikely(trans->nr_updates)) {
bch2_btree_trans_peek_slot_updates(trans, iter, &k);
if (k.k)
goto out;
diff --git a/fs/bcachefs/btree_types.h b/fs/bcachefs/btree_types.h
index 09c960b4e788..bb088d438ad3 100644
--- a/fs/bcachefs/btree_types.h
+++ b/fs/bcachefs/btree_types.h
@@ -225,7 +225,6 @@ struct btree_node_iter {
x(not_extents) \
x(cached) \
x(with_key_cache) \
- x(with_updates) \
x(with_journal) \
x(snapshot_field) \
x(all_snapshots) \
diff --git a/fs/bcachefs/btree_update.c b/fs/bcachefs/btree_update.c
index 690f2dfb833e..e4482d76574d 100644
--- a/fs/bcachefs/btree_update.c
+++ b/fs/bcachefs/btree_update.c
@@ -296,7 +296,6 @@ static int bch2_trans_update_extent(struct btree_trans *trans,
bch2_trans_iter_init(trans, &iter, btree_id, bkey_start_pos(&insert->k),
BTREE_ITER_intent|
- BTREE_ITER_with_updates|
BTREE_ITER_not_extents);
k = bch2_btree_iter_peek_max(trans, &iter, POS(insert->k.p.inode, U64_MAX));
if ((ret = bkey_err(k)))
diff --git a/fs/bcachefs/buckets.c b/fs/bcachefs/buckets.c
index 9a6aa4714c48..19cafdbe454b 100644
--- a/fs/bcachefs/buckets.c
+++ b/fs/bcachefs/buckets.c
@@ -679,8 +679,7 @@ static int bch2_trigger_stripe_ptr(struct btree_trans *trans,
if (flags & BTREE_TRIGGER_transactional) {
struct btree_iter iter;
struct bkey_i_stripe *s = bch2_bkey_get_mut_typed(trans, &iter,
- BTREE_ID_stripes, POS(0, p.ec.idx),
- BTREE_ITER_with_updates, stripe);
+ BTREE_ID_stripes, POS(0, p.ec.idx), 0, stripe);
int ret = PTR_ERR_OR_ZERO(s);
if (unlikely(ret)) {
bch2_trans_inconsistent_on(bch2_err_matches(ret, ENOENT), trans,
diff --git a/fs/bcachefs/fsck.c b/fs/bcachefs/fsck.c
index bb142db61f04..a6c0cf4d6b98 100644
--- a/fs/bcachefs/fsck.c
+++ b/fs/bcachefs/fsck.c
@@ -354,8 +354,7 @@ static int maybe_delete_dirent(struct btree_trans *trans, struct bpos d_pos, u32
struct btree_iter iter;
struct bkey_s_c k = bch2_bkey_get_iter(trans, &iter, BTREE_ID_dirents,
SPOS(d_pos.inode, d_pos.offset, snapshot),
- BTREE_ITER_intent|
- BTREE_ITER_with_updates);
+ BTREE_ITER_intent);
int ret = bkey_err(k);
if (ret)
return ret;
diff --git a/fs/bcachefs/inode.c b/fs/bcachefs/inode.c
index b51d98cf8a80..eb943879b798 100644
--- a/fs/bcachefs/inode.c
+++ b/fs/bcachefs/inode.c
@@ -655,8 +655,7 @@ int __bch2_inode_has_child_snapshots(struct btree_trans *trans, struct bpos pos)
for_each_btree_key_max_norestart(trans, iter,
BTREE_ID_inodes, POS(0, pos.offset), bpos_predecessor(pos),
- BTREE_ITER_all_snapshots|
- BTREE_ITER_with_updates, k, ret)
+ BTREE_ITER_all_snapshots, k, ret)
if (bch2_snapshot_is_ancestor(c, k.k->p.snapshot, pos.snapshot) &&
bkey_is_inode(k.k)) {
ret = 1;
@@ -688,7 +687,7 @@ static int update_parent_inode_has_children(struct btree_trans *trans, struct bp
{
struct btree_iter iter;
struct bkey_s_c k = bch2_inode_get_iter_snapshot_parent(trans,
- &iter, pos, BTREE_ITER_with_updates);
+ &iter, pos, 0);
int ret = bkey_err(k);
if (ret)
return ret;
diff --git a/fs/bcachefs/snapshot.c b/fs/bcachefs/snapshot.c
index 38cc20caf26f..88f3ad2d8ac7 100644
--- a/fs/bcachefs/snapshot.c
+++ b/fs/bcachefs/snapshot.c
@@ -50,7 +50,7 @@ int bch2_snapshot_tree_lookup(struct btree_trans *trans, u32 id,
struct bch_snapshot_tree *s)
{
int ret = bch2_bkey_get_val_typed(trans, BTREE_ID_snapshot_trees, POS(0, id),
- BTREE_ITER_with_updates, snapshot_tree, s);
+ 0, snapshot_tree, s);
if (bch2_err_matches(ret, ENOENT))
ret = -BCH_ERR_ENOENT_snapshot_tree;
@@ -362,8 +362,7 @@ int bch2_mark_snapshot(struct btree_trans *trans,
int bch2_snapshot_lookup(struct btree_trans *trans, u32 id,
struct bch_snapshot *s)
{
- return bch2_bkey_get_val_typed(trans, BTREE_ID_snapshots, POS(0, id),
- BTREE_ITER_with_updates, snapshot, s);
+ return bch2_bkey_get_val_typed(trans, BTREE_ID_snapshots, POS(0, id), 0, snapshot, s);
}
/* fsck: */
@@ -650,7 +649,7 @@ static int snapshot_tree_ptr_repair(struct btree_trans *trans,
root = bch2_bkey_get_iter_typed(trans, &root_iter,
BTREE_ID_snapshots, POS(0, root_id),
- BTREE_ITER_with_updates, snapshot);
+ 0, snapshot);
ret = bkey_err(root);
if (ret)
goto err;
diff --git a/fs/bcachefs/subvolume.c b/fs/bcachefs/subvolume.c
index 51ab2ee10706..17404e68c31a 100644
--- a/fs/bcachefs/subvolume.c
+++ b/fs/bcachefs/subvolume.c
@@ -356,8 +356,7 @@ int __bch2_subvolume_get_snapshot(struct btree_trans *trans, u32 subvolid,
subvol = bch2_bkey_get_iter_typed(trans, &iter,
BTREE_ID_subvolumes, POS(0, subvolid),
- BTREE_ITER_cached|BTREE_ITER_with_updates,
- subvolume);
+ BTREE_ITER_cached, subvolume);
ret = bkey_err(subvol);
if (bch2_err_matches(ret, ENOENT))