* [PATCH 0/4] bcachefs: Random cleanup
@ 2025-04-15 5:33 Alan Huang
2025-04-15 5:33 ` [PATCH 1/4] bcachefs: Kill bch2_trans_unlock_noassert Alan Huang
` (3 more replies)
0 siblings, 4 replies; 11+ messages in thread
From: Alan Huang @ 2025-04-15 5:33 UTC (permalink / raw)
To: kent.overstreet; +Cc: linux-bcachefs, Alan Huang
Alan Huang (4):
bcachefs: Kill bch2_trans_unlock_noassert
bcachefs: mark_btree_node_locked_noreset ->
mark_btree_node_locked_reset
bcachefs: Remove spurious +1/-1 operation
bcachefs: Simplify logic
fs/bcachefs/btree_cache.c | 2 +-
fs/bcachefs/btree_io.c | 8 ++------
fs/bcachefs/btree_key_cache.c | 6 +++---
fs/bcachefs/btree_locking.c | 13 +++----------
fs/bcachefs/btree_locking.h | 11 +++++------
fs/bcachefs/btree_types.h | 4 ++--
fs/bcachefs/btree_update_interior.c | 4 ++--
7 files changed, 18 insertions(+), 30 deletions(-)
--
2.48.1
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH 1/4] bcachefs: Kill bch2_trans_unlock_noassert
2025-04-15 5:33 [PATCH 0/4] bcachefs: Random cleanup Alan Huang
@ 2025-04-15 5:33 ` Alan Huang
2025-04-15 14:34 ` Kent Overstreet
2025-04-15 5:33 ` [PATCH 2/4] bcachefs: mark_btree_node_locked_noreset -> mark_btree_node_locked_reset Alan Huang
` (2 subsequent siblings)
3 siblings, 1 reply; 11+ messages in thread
From: Alan Huang @ 2025-04-15 5:33 UTC (permalink / raw)
To: kent.overstreet; +Cc: linux-bcachefs, Alan Huang
Signed-off-by: Alan Huang <mmpgouride@gmail.com>
---
fs/bcachefs/btree_cache.c | 2 +-
fs/bcachefs/btree_locking.c | 7 -------
fs/bcachefs/btree_locking.h | 1 -
3 files changed, 1 insertion(+), 9 deletions(-)
diff --git a/fs/bcachefs/btree_cache.c b/fs/bcachefs/btree_cache.c
index 9b80201c7982..153980a9a1cc 100644
--- a/fs/bcachefs/btree_cache.c
+++ b/fs/bcachefs/btree_cache.c
@@ -978,7 +978,7 @@ static noinline struct btree *bch2_btree_node_fill(struct btree_trans *trans,
/* Unlock before doing IO: */
six_unlock_intent(&b->c.lock);
- bch2_trans_unlock_noassert(trans);
+ bch2_trans_unlock(trans);
bch2_btree_node_read(trans, b, sync);
diff --git a/fs/bcachefs/btree_locking.c b/fs/bcachefs/btree_locking.c
index 94eb2b73a843..f4f563944340 100644
--- a/fs/bcachefs/btree_locking.c
+++ b/fs/bcachefs/btree_locking.c
@@ -799,13 +799,6 @@ int bch2_trans_relock_notrace(struct btree_trans *trans)
return __bch2_trans_relock(trans, false);
}
-void bch2_trans_unlock_noassert(struct btree_trans *trans)
-{
- __bch2_trans_unlock(trans);
-
- trans_set_unlocked(trans);
-}
-
void bch2_trans_unlock(struct btree_trans *trans)
{
__bch2_trans_unlock(trans);
diff --git a/fs/bcachefs/btree_locking.h b/fs/bcachefs/btree_locking.h
index b33ab7af8440..66b27c0853a5 100644
--- a/fs/bcachefs/btree_locking.h
+++ b/fs/bcachefs/btree_locking.h
@@ -15,7 +15,6 @@
void bch2_btree_lock_init(struct btree_bkey_cached_common *, enum six_lock_init_flags, gfp_t gfp);
-void bch2_trans_unlock_noassert(struct btree_trans *);
void bch2_trans_unlock_write(struct btree_trans *);
static inline bool is_btree_node(struct btree_path *path, unsigned l)
--
2.48.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 2/4] bcachefs: mark_btree_node_locked_noreset -> mark_btree_node_locked_reset
2025-04-15 5:33 [PATCH 0/4] bcachefs: Random cleanup Alan Huang
2025-04-15 5:33 ` [PATCH 1/4] bcachefs: Kill bch2_trans_unlock_noassert Alan Huang
@ 2025-04-15 5:33 ` Alan Huang
2025-04-15 14:34 ` Kent Overstreet
2025-04-15 5:33 ` [PATCH 3/4] bcachefs: Remove spurious +1/-1 operation Alan Huang
2025-04-15 5:33 ` [PATCH 4/4] bcachefs: Simplify logic Alan Huang
3 siblings, 1 reply; 11+ messages in thread
From: Alan Huang @ 2025-04-15 5:33 UTC (permalink / raw)
To: kent.overstreet; +Cc: linux-bcachefs, Alan Huang
The semantic is reset now, rename the function to reflect that.
Signed-off-by: Alan Huang <mmpgouride@gmail.com>
---
fs/bcachefs/btree_key_cache.c | 6 +++---
fs/bcachefs/btree_locking.c | 6 +++---
fs/bcachefs/btree_locking.h | 10 +++++-----
fs/bcachefs/btree_update_interior.c | 4 ++--
4 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/fs/bcachefs/btree_key_cache.c b/fs/bcachefs/btree_key_cache.c
index 2b186584a291..c7ad01c1355c 100644
--- a/fs/bcachefs/btree_key_cache.c
+++ b/fs/bcachefs/btree_key_cache.c
@@ -240,7 +240,7 @@ static int btree_key_cache_create(struct btree_trans *trans,
ck->flags = 1U << BKEY_CACHED_ACCESSED;
if (unlikely(key_u64s > ck->u64s)) {
- mark_btree_node_locked_noreset(ck_path, 0, BTREE_NODE_UNLOCKED);
+ mark_btree_node_locked_reset(ck_path, 0, BTREE_NODE_UNLOCKED);
struct bkey_i *new_k = allocate_dropping_locks(trans, ret,
kmalloc(key_u64s * sizeof(u64), _gfp));
@@ -282,7 +282,7 @@ static int btree_key_cache_create(struct btree_trans *trans,
return 0;
err:
bkey_cached_free(bc, ck);
- mark_btree_node_locked_noreset(ck_path, 0, BTREE_NODE_UNLOCKED);
+ mark_btree_node_locked_reset(ck_path, 0, BTREE_NODE_UNLOCKED);
return ret;
}
@@ -500,7 +500,7 @@ static int btree_key_cache_flush_pos(struct btree_trans *trans,
atomic_long_dec(&c->btree_key_cache.nr_dirty);
}
- mark_btree_node_locked_noreset(path, 0, BTREE_NODE_UNLOCKED);
+ mark_btree_node_locked_reset(path, 0, BTREE_NODE_UNLOCKED);
if (bkey_cached_evict(&c->btree_key_cache, ck)) {
bkey_cached_free(&c->btree_key_cache, ck);
} else {
diff --git a/fs/bcachefs/btree_locking.c b/fs/bcachefs/btree_locking.c
index f4f563944340..71dbac0bcd58 100644
--- a/fs/bcachefs/btree_locking.c
+++ b/fs/bcachefs/btree_locking.c
@@ -435,7 +435,7 @@ int __bch2_btree_node_lock_write(struct btree_trans *trans, struct btree_path *p
six_lock_readers_add(&b->lock, readers);
if (ret)
- mark_btree_node_locked_noreset(path, b->level, BTREE_NODE_INTENT_LOCKED);
+ mark_btree_node_locked_reset(path, b->level, BTREE_NODE_INTENT_LOCKED);
return ret;
}
@@ -564,7 +564,7 @@ bool bch2_btree_node_upgrade(struct btree_trans *trans,
trace_and_count(trans->c, btree_path_upgrade_fail, trans, _RET_IP_, path, level);
return false;
success:
- mark_btree_node_locked_noreset(path, level, BTREE_NODE_INTENT_LOCKED);
+ mark_btree_node_locked_reset(path, level, BTREE_NODE_INTENT_LOCKED);
return true;
}
@@ -693,7 +693,7 @@ void __bch2_btree_path_downgrade(struct btree_trans *trans,
} else {
if (btree_node_intent_locked(path, l)) {
six_lock_downgrade(&path->l[l].b->c.lock);
- mark_btree_node_locked_noreset(path, l, BTREE_NODE_READ_LOCKED);
+ mark_btree_node_locked_reset(path, l, BTREE_NODE_READ_LOCKED);
}
break;
}
diff --git a/fs/bcachefs/btree_locking.h b/fs/bcachefs/btree_locking.h
index 66b27c0853a5..8978f7969bef 100644
--- a/fs/bcachefs/btree_locking.h
+++ b/fs/bcachefs/btree_locking.h
@@ -63,7 +63,7 @@ static inline bool btree_node_locked(struct btree_path *path, unsigned level)
return btree_node_locked_type(path, level) != BTREE_NODE_UNLOCKED;
}
-static inline void mark_btree_node_locked_noreset(struct btree_path *path,
+static inline void mark_btree_node_locked_reset(struct btree_path *path,
unsigned level,
enum btree_node_locked_type type)
{
@@ -80,7 +80,7 @@ static inline void mark_btree_node_locked(struct btree_trans *trans,
unsigned level,
enum btree_node_locked_type type)
{
- mark_btree_node_locked_noreset(path, level, (enum btree_node_locked_type) type);
+ mark_btree_node_locked_reset(path, level, (enum btree_node_locked_type) type);
#ifdef CONFIG_BCACHEFS_LOCK_TIME_STATS
path->l[level].lock_taken_time = local_clock();
#endif
@@ -134,7 +134,7 @@ static inline void btree_node_unlock(struct btree_trans *trans,
}
six_unlock_type(&path->l[level].b->c.lock, lock_type);
btree_trans_lock_hold_time_update(trans, path, level);
- mark_btree_node_locked_noreset(path, level, BTREE_NODE_UNLOCKED);
+ mark_btree_node_locked_reset(path, level, BTREE_NODE_UNLOCKED);
}
}
@@ -183,7 +183,7 @@ bch2_btree_node_unlock_write_inlined(struct btree_trans *trans, struct btree_pat
EBUG_ON(path->l[b->c.level].lock_seq != six_lock_seq(&b->c.lock));
EBUG_ON(btree_node_locked_type(path, b->c.level) != SIX_LOCK_write);
- mark_btree_node_locked_noreset(path, b->c.level, BTREE_NODE_INTENT_LOCKED);
+ mark_btree_node_locked_reset(path, b->c.level, BTREE_NODE_INTENT_LOCKED);
__bch2_btree_node_unlock_write(trans, b);
}
@@ -315,7 +315,7 @@ static inline int __btree_node_lock_write(struct btree_trans *trans,
* write lock: thus, we need to tell the cycle detector we have a write
* lock _before_ taking the lock:
*/
- mark_btree_node_locked_noreset(path, b->level, BTREE_NODE_WRITE_LOCKED);
+ mark_btree_node_locked_reset(path, b->level, BTREE_NODE_WRITE_LOCKED);
return likely(six_trylock_write(&b->lock))
? 0
diff --git a/fs/bcachefs/btree_update_interior.c b/fs/bcachefs/btree_update_interior.c
index 55fbeeb8eaaa..29e03408a019 100644
--- a/fs/bcachefs/btree_update_interior.c
+++ b/fs/bcachefs/btree_update_interior.c
@@ -245,7 +245,7 @@ static void bch2_btree_node_free_inmem(struct btree_trans *trans,
mutex_unlock(&c->btree_cache.lock);
six_unlock_write(&b->c.lock);
- mark_btree_node_locked_noreset(path, b->c.level, BTREE_NODE_INTENT_LOCKED);
+ mark_btree_node_locked_reset(path, b->c.level, BTREE_NODE_INTENT_LOCKED);
bch2_trans_node_drop(trans, b);
}
@@ -788,7 +788,7 @@ static void btree_update_nodes_written(struct btree_update *as)
mutex_unlock(&c->btree_interior_update_lock);
- mark_btree_node_locked_noreset(path, b->c.level, BTREE_NODE_INTENT_LOCKED);
+ mark_btree_node_locked_reset(path, b->c.level, BTREE_NODE_INTENT_LOCKED);
six_unlock_write(&b->c.lock);
btree_node_write_if_need(trans, b, SIX_LOCK_intent);
--
2.48.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 3/4] bcachefs: Remove spurious +1/-1 operation
2025-04-15 5:33 [PATCH 0/4] bcachefs: Random cleanup Alan Huang
2025-04-15 5:33 ` [PATCH 1/4] bcachefs: Kill bch2_trans_unlock_noassert Alan Huang
2025-04-15 5:33 ` [PATCH 2/4] bcachefs: mark_btree_node_locked_noreset -> mark_btree_node_locked_reset Alan Huang
@ 2025-04-15 5:33 ` Alan Huang
2025-04-15 14:35 ` Kent Overstreet
2025-04-15 5:33 ` [PATCH 4/4] bcachefs: Simplify logic Alan Huang
3 siblings, 1 reply; 11+ messages in thread
From: Alan Huang @ 2025-04-15 5:33 UTC (permalink / raw)
To: kent.overstreet; +Cc: linux-bcachefs, Alan Huang
Signed-off-by: Alan Huang <mmpgouride@gmail.com>
---
fs/bcachefs/btree_types.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/fs/bcachefs/btree_types.h b/fs/bcachefs/btree_types.h
index dd109dea0f1c..c2e05824e99b 100644
--- a/fs/bcachefs/btree_types.h
+++ b/fs/bcachefs/btree_types.h
@@ -656,13 +656,13 @@ static inline struct bset_tree *bset_tree_last(struct btree *b)
static inline void *
__btree_node_offset_to_ptr(const struct btree *b, u16 offset)
{
- return (void *) ((u64 *) b->data + 1 + offset);
+ return (void *) ((u64 *) b->data + offset);
}
static inline u16
__btree_node_ptr_to_offset(const struct btree *b, const void *p)
{
- u16 ret = (u64 *) p - 1 - (u64 *) b->data;
+ u16 ret = (u64 *) p - (u64 *) b->data;
EBUG_ON(__btree_node_offset_to_ptr(b, ret) != p);
return ret;
--
2.48.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* [PATCH 4/4] bcachefs: Simplify logic
2025-04-15 5:33 [PATCH 0/4] bcachefs: Random cleanup Alan Huang
` (2 preceding siblings ...)
2025-04-15 5:33 ` [PATCH 3/4] bcachefs: Remove spurious +1/-1 operation Alan Huang
@ 2025-04-15 5:33 ` Alan Huang
2025-04-15 14:36 ` Kent Overstreet
3 siblings, 1 reply; 11+ messages in thread
From: Alan Huang @ 2025-04-15 5:33 UTC (permalink / raw)
To: kent.overstreet; +Cc: linux-bcachefs, Alan Huang
Signed-off-by: Alan Huang <mmpgouride@gmail.com>
---
fs/bcachefs/btree_io.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/fs/bcachefs/btree_io.c b/fs/bcachefs/btree_io.c
index 14e3329baa43..afcd13092807 100644
--- a/fs/bcachefs/btree_io.c
+++ b/fs/bcachefs/btree_io.c
@@ -1017,7 +1017,6 @@ int bch2_btree_node_read_done(struct bch_fs *c, struct bch_dev *ca,
bool used_mempool, blacklisted;
bool updated_range = b->key.k.type == KEY_TYPE_btree_ptr_v2 &&
BTREE_PTR_RANGE_UPDATED(&bkey_i_to_btree_ptr_v2(&b->key)->v);
- unsigned u64s;
unsigned ptr_written = btree_ptr_sectors_written(bkey_i_to_s_c(&b->key));
u64 max_journal_seq = 0;
struct printbuf buf = PRINTBUF;
@@ -1224,23 +1223,20 @@ int bch2_btree_node_read_done(struct bch_fs *c, struct bch_dev *ca,
sorted = btree_bounce_alloc(c, btree_buf_bytes(b), &used_mempool);
sorted->keys.u64s = 0;
- set_btree_bset(b, b->set, &b->data->keys);
-
b->nr = bch2_key_sort_fix_overlapping(c, &sorted->keys, iter);
memset((uint8_t *)(sorted + 1) + b->nr.live_u64s * sizeof(u64), 0,
btree_buf_bytes(b) -
sizeof(struct btree_node) -
b->nr.live_u64s * sizeof(u64));
- u64s = le16_to_cpu(sorted->keys.u64s);
+ b->data->keys.u64s = sorted->keys.u64s;
*sorted = *b->data;
- sorted->keys.u64s = cpu_to_le16(u64s);
swap(sorted, b->data);
set_btree_bset(b, b->set, &b->data->keys);
b->nsets = 1;
b->data->keys.journal_seq = cpu_to_le64(max_journal_seq);
- BUG_ON(b->nr.live_u64s != u64s);
+ BUG_ON(b->nr.live_u64s != le16_to_cpu(b->data->keys.u64s));
btree_bounce_free(c, btree_buf_bytes(b), used_mempool, sorted);
--
2.48.1
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH 2/4] bcachefs: mark_btree_node_locked_noreset -> mark_btree_node_locked_reset
2025-04-15 5:33 ` [PATCH 2/4] bcachefs: mark_btree_node_locked_noreset -> mark_btree_node_locked_reset Alan Huang
@ 2025-04-15 14:34 ` Kent Overstreet
2025-04-15 14:40 ` Alan Huang
0 siblings, 1 reply; 11+ messages in thread
From: Kent Overstreet @ 2025-04-15 14:34 UTC (permalink / raw)
To: Alan Huang; +Cc: linux-bcachefs
On Tue, Apr 15, 2025 at 01:33:05PM +0800, Alan Huang wrote:
> The semantic is reset now, rename the function to reflect that.
>
> Signed-off-by: Alan Huang <mmpgouride@gmail.com>
erm, are you sure?
mark_btree_node_locked() is the outer, more 'standard' interface, we
generally do the more specialized naming for the inner, more
specialized, 'are you sure this is the one you want' helper
> ---
> fs/bcachefs/btree_key_cache.c | 6 +++---
> fs/bcachefs/btree_locking.c | 6 +++---
> fs/bcachefs/btree_locking.h | 10 +++++-----
> fs/bcachefs/btree_update_interior.c | 4 ++--
> 4 files changed, 13 insertions(+), 13 deletions(-)
>
> diff --git a/fs/bcachefs/btree_key_cache.c b/fs/bcachefs/btree_key_cache.c
> index 2b186584a291..c7ad01c1355c 100644
> --- a/fs/bcachefs/btree_key_cache.c
> +++ b/fs/bcachefs/btree_key_cache.c
> @@ -240,7 +240,7 @@ static int btree_key_cache_create(struct btree_trans *trans,
> ck->flags = 1U << BKEY_CACHED_ACCESSED;
>
> if (unlikely(key_u64s > ck->u64s)) {
> - mark_btree_node_locked_noreset(ck_path, 0, BTREE_NODE_UNLOCKED);
> + mark_btree_node_locked_reset(ck_path, 0, BTREE_NODE_UNLOCKED);
>
> struct bkey_i *new_k = allocate_dropping_locks(trans, ret,
> kmalloc(key_u64s * sizeof(u64), _gfp));
> @@ -282,7 +282,7 @@ static int btree_key_cache_create(struct btree_trans *trans,
> return 0;
> err:
> bkey_cached_free(bc, ck);
> - mark_btree_node_locked_noreset(ck_path, 0, BTREE_NODE_UNLOCKED);
> + mark_btree_node_locked_reset(ck_path, 0, BTREE_NODE_UNLOCKED);
>
> return ret;
> }
> @@ -500,7 +500,7 @@ static int btree_key_cache_flush_pos(struct btree_trans *trans,
> atomic_long_dec(&c->btree_key_cache.nr_dirty);
> }
>
> - mark_btree_node_locked_noreset(path, 0, BTREE_NODE_UNLOCKED);
> + mark_btree_node_locked_reset(path, 0, BTREE_NODE_UNLOCKED);
> if (bkey_cached_evict(&c->btree_key_cache, ck)) {
> bkey_cached_free(&c->btree_key_cache, ck);
> } else {
> diff --git a/fs/bcachefs/btree_locking.c b/fs/bcachefs/btree_locking.c
> index f4f563944340..71dbac0bcd58 100644
> --- a/fs/bcachefs/btree_locking.c
> +++ b/fs/bcachefs/btree_locking.c
> @@ -435,7 +435,7 @@ int __bch2_btree_node_lock_write(struct btree_trans *trans, struct btree_path *p
> six_lock_readers_add(&b->lock, readers);
>
> if (ret)
> - mark_btree_node_locked_noreset(path, b->level, BTREE_NODE_INTENT_LOCKED);
> + mark_btree_node_locked_reset(path, b->level, BTREE_NODE_INTENT_LOCKED);
>
> return ret;
> }
> @@ -564,7 +564,7 @@ bool bch2_btree_node_upgrade(struct btree_trans *trans,
> trace_and_count(trans->c, btree_path_upgrade_fail, trans, _RET_IP_, path, level);
> return false;
> success:
> - mark_btree_node_locked_noreset(path, level, BTREE_NODE_INTENT_LOCKED);
> + mark_btree_node_locked_reset(path, level, BTREE_NODE_INTENT_LOCKED);
> return true;
> }
>
> @@ -693,7 +693,7 @@ void __bch2_btree_path_downgrade(struct btree_trans *trans,
> } else {
> if (btree_node_intent_locked(path, l)) {
> six_lock_downgrade(&path->l[l].b->c.lock);
> - mark_btree_node_locked_noreset(path, l, BTREE_NODE_READ_LOCKED);
> + mark_btree_node_locked_reset(path, l, BTREE_NODE_READ_LOCKED);
> }
> break;
> }
> diff --git a/fs/bcachefs/btree_locking.h b/fs/bcachefs/btree_locking.h
> index 66b27c0853a5..8978f7969bef 100644
> --- a/fs/bcachefs/btree_locking.h
> +++ b/fs/bcachefs/btree_locking.h
> @@ -63,7 +63,7 @@ static inline bool btree_node_locked(struct btree_path *path, unsigned level)
> return btree_node_locked_type(path, level) != BTREE_NODE_UNLOCKED;
> }
>
> -static inline void mark_btree_node_locked_noreset(struct btree_path *path,
> +static inline void mark_btree_node_locked_reset(struct btree_path *path,
> unsigned level,
> enum btree_node_locked_type type)
> {
> @@ -80,7 +80,7 @@ static inline void mark_btree_node_locked(struct btree_trans *trans,
> unsigned level,
> enum btree_node_locked_type type)
> {
> - mark_btree_node_locked_noreset(path, level, (enum btree_node_locked_type) type);
> + mark_btree_node_locked_reset(path, level, (enum btree_node_locked_type) type);
> #ifdef CONFIG_BCACHEFS_LOCK_TIME_STATS
> path->l[level].lock_taken_time = local_clock();
> #endif
> @@ -134,7 +134,7 @@ static inline void btree_node_unlock(struct btree_trans *trans,
> }
> six_unlock_type(&path->l[level].b->c.lock, lock_type);
> btree_trans_lock_hold_time_update(trans, path, level);
> - mark_btree_node_locked_noreset(path, level, BTREE_NODE_UNLOCKED);
> + mark_btree_node_locked_reset(path, level, BTREE_NODE_UNLOCKED);
> }
> }
>
> @@ -183,7 +183,7 @@ bch2_btree_node_unlock_write_inlined(struct btree_trans *trans, struct btree_pat
> EBUG_ON(path->l[b->c.level].lock_seq != six_lock_seq(&b->c.lock));
> EBUG_ON(btree_node_locked_type(path, b->c.level) != SIX_LOCK_write);
>
> - mark_btree_node_locked_noreset(path, b->c.level, BTREE_NODE_INTENT_LOCKED);
> + mark_btree_node_locked_reset(path, b->c.level, BTREE_NODE_INTENT_LOCKED);
> __bch2_btree_node_unlock_write(trans, b);
> }
>
> @@ -315,7 +315,7 @@ static inline int __btree_node_lock_write(struct btree_trans *trans,
> * write lock: thus, we need to tell the cycle detector we have a write
> * lock _before_ taking the lock:
> */
> - mark_btree_node_locked_noreset(path, b->level, BTREE_NODE_WRITE_LOCKED);
> + mark_btree_node_locked_reset(path, b->level, BTREE_NODE_WRITE_LOCKED);
>
> return likely(six_trylock_write(&b->lock))
> ? 0
> diff --git a/fs/bcachefs/btree_update_interior.c b/fs/bcachefs/btree_update_interior.c
> index 55fbeeb8eaaa..29e03408a019 100644
> --- a/fs/bcachefs/btree_update_interior.c
> +++ b/fs/bcachefs/btree_update_interior.c
> @@ -245,7 +245,7 @@ static void bch2_btree_node_free_inmem(struct btree_trans *trans,
> mutex_unlock(&c->btree_cache.lock);
>
> six_unlock_write(&b->c.lock);
> - mark_btree_node_locked_noreset(path, b->c.level, BTREE_NODE_INTENT_LOCKED);
> + mark_btree_node_locked_reset(path, b->c.level, BTREE_NODE_INTENT_LOCKED);
>
> bch2_trans_node_drop(trans, b);
> }
> @@ -788,7 +788,7 @@ static void btree_update_nodes_written(struct btree_update *as)
>
> mutex_unlock(&c->btree_interior_update_lock);
>
> - mark_btree_node_locked_noreset(path, b->c.level, BTREE_NODE_INTENT_LOCKED);
> + mark_btree_node_locked_reset(path, b->c.level, BTREE_NODE_INTENT_LOCKED);
> six_unlock_write(&b->c.lock);
>
> btree_node_write_if_need(trans, b, SIX_LOCK_intent);
> --
> 2.48.1
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 1/4] bcachefs: Kill bch2_trans_unlock_noassert
2025-04-15 5:33 ` [PATCH 1/4] bcachefs: Kill bch2_trans_unlock_noassert Alan Huang
@ 2025-04-15 14:34 ` Kent Overstreet
0 siblings, 0 replies; 11+ messages in thread
From: Kent Overstreet @ 2025-04-15 14:34 UTC (permalink / raw)
To: Alan Huang; +Cc: linux-bcachefs
On Tue, Apr 15, 2025 at 01:33:04PM +0800, Alan Huang wrote:
> Signed-off-by: Alan Huang <mmpgouride@gmail.com>
Applied
> ---
> fs/bcachefs/btree_cache.c | 2 +-
> fs/bcachefs/btree_locking.c | 7 -------
> fs/bcachefs/btree_locking.h | 1 -
> 3 files changed, 1 insertion(+), 9 deletions(-)
>
> diff --git a/fs/bcachefs/btree_cache.c b/fs/bcachefs/btree_cache.c
> index 9b80201c7982..153980a9a1cc 100644
> --- a/fs/bcachefs/btree_cache.c
> +++ b/fs/bcachefs/btree_cache.c
> @@ -978,7 +978,7 @@ static noinline struct btree *bch2_btree_node_fill(struct btree_trans *trans,
>
> /* Unlock before doing IO: */
> six_unlock_intent(&b->c.lock);
> - bch2_trans_unlock_noassert(trans);
> + bch2_trans_unlock(trans);
>
> bch2_btree_node_read(trans, b, sync);
>
> diff --git a/fs/bcachefs/btree_locking.c b/fs/bcachefs/btree_locking.c
> index 94eb2b73a843..f4f563944340 100644
> --- a/fs/bcachefs/btree_locking.c
> +++ b/fs/bcachefs/btree_locking.c
> @@ -799,13 +799,6 @@ int bch2_trans_relock_notrace(struct btree_trans *trans)
> return __bch2_trans_relock(trans, false);
> }
>
> -void bch2_trans_unlock_noassert(struct btree_trans *trans)
> -{
> - __bch2_trans_unlock(trans);
> -
> - trans_set_unlocked(trans);
> -}
> -
> void bch2_trans_unlock(struct btree_trans *trans)
> {
> __bch2_trans_unlock(trans);
> diff --git a/fs/bcachefs/btree_locking.h b/fs/bcachefs/btree_locking.h
> index b33ab7af8440..66b27c0853a5 100644
> --- a/fs/bcachefs/btree_locking.h
> +++ b/fs/bcachefs/btree_locking.h
> @@ -15,7 +15,6 @@
>
> void bch2_btree_lock_init(struct btree_bkey_cached_common *, enum six_lock_init_flags, gfp_t gfp);
>
> -void bch2_trans_unlock_noassert(struct btree_trans *);
> void bch2_trans_unlock_write(struct btree_trans *);
>
> static inline bool is_btree_node(struct btree_path *path, unsigned l)
> --
> 2.48.1
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 3/4] bcachefs: Remove spurious +1/-1 operation
2025-04-15 5:33 ` [PATCH 3/4] bcachefs: Remove spurious +1/-1 operation Alan Huang
@ 2025-04-15 14:35 ` Kent Overstreet
0 siblings, 0 replies; 11+ messages in thread
From: Kent Overstreet @ 2025-04-15 14:35 UTC (permalink / raw)
To: Alan Huang; +Cc: linux-bcachefs
On Tue, Apr 15, 2025 at 01:33:06PM +0800, Alan Huang wrote:
> Signed-off-by: Alan Huang <mmpgouride@gmail.com>
Applied
> ---
> fs/bcachefs/btree_types.h | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/fs/bcachefs/btree_types.h b/fs/bcachefs/btree_types.h
> index dd109dea0f1c..c2e05824e99b 100644
> --- a/fs/bcachefs/btree_types.h
> +++ b/fs/bcachefs/btree_types.h
> @@ -656,13 +656,13 @@ static inline struct bset_tree *bset_tree_last(struct btree *b)
> static inline void *
> __btree_node_offset_to_ptr(const struct btree *b, u16 offset)
> {
> - return (void *) ((u64 *) b->data + 1 + offset);
> + return (void *) ((u64 *) b->data + offset);
> }
>
> static inline u16
> __btree_node_ptr_to_offset(const struct btree *b, const void *p)
> {
> - u16 ret = (u64 *) p - 1 - (u64 *) b->data;
> + u16 ret = (u64 *) p - (u64 *) b->data;
>
> EBUG_ON(__btree_node_offset_to_ptr(b, ret) != p);
> return ret;
> --
> 2.48.1
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 4/4] bcachefs: Simplify logic
2025-04-15 5:33 ` [PATCH 4/4] bcachefs: Simplify logic Alan Huang
@ 2025-04-15 14:36 ` Kent Overstreet
0 siblings, 0 replies; 11+ messages in thread
From: Kent Overstreet @ 2025-04-15 14:36 UTC (permalink / raw)
To: Alan Huang; +Cc: linux-bcachefs
On Tue, Apr 15, 2025 at 01:33:07PM +0800, Alan Huang wrote:
> Signed-off-by: Alan Huang <mmpgouride@gmail.com>
Applied
> ---
> fs/bcachefs/btree_io.c | 8 ++------
> 1 file changed, 2 insertions(+), 6 deletions(-)
>
> diff --git a/fs/bcachefs/btree_io.c b/fs/bcachefs/btree_io.c
> index 14e3329baa43..afcd13092807 100644
> --- a/fs/bcachefs/btree_io.c
> +++ b/fs/bcachefs/btree_io.c
> @@ -1017,7 +1017,6 @@ int bch2_btree_node_read_done(struct bch_fs *c, struct bch_dev *ca,
> bool used_mempool, blacklisted;
> bool updated_range = b->key.k.type == KEY_TYPE_btree_ptr_v2 &&
> BTREE_PTR_RANGE_UPDATED(&bkey_i_to_btree_ptr_v2(&b->key)->v);
> - unsigned u64s;
> unsigned ptr_written = btree_ptr_sectors_written(bkey_i_to_s_c(&b->key));
> u64 max_journal_seq = 0;
> struct printbuf buf = PRINTBUF;
> @@ -1224,23 +1223,20 @@ int bch2_btree_node_read_done(struct bch_fs *c, struct bch_dev *ca,
> sorted = btree_bounce_alloc(c, btree_buf_bytes(b), &used_mempool);
> sorted->keys.u64s = 0;
>
> - set_btree_bset(b, b->set, &b->data->keys);
> -
> b->nr = bch2_key_sort_fix_overlapping(c, &sorted->keys, iter);
> memset((uint8_t *)(sorted + 1) + b->nr.live_u64s * sizeof(u64), 0,
> btree_buf_bytes(b) -
> sizeof(struct btree_node) -
> b->nr.live_u64s * sizeof(u64));
>
> - u64s = le16_to_cpu(sorted->keys.u64s);
> + b->data->keys.u64s = sorted->keys.u64s;
> *sorted = *b->data;
> - sorted->keys.u64s = cpu_to_le16(u64s);
> swap(sorted, b->data);
> set_btree_bset(b, b->set, &b->data->keys);
> b->nsets = 1;
> b->data->keys.journal_seq = cpu_to_le64(max_journal_seq);
>
> - BUG_ON(b->nr.live_u64s != u64s);
> + BUG_ON(b->nr.live_u64s != le16_to_cpu(b->data->keys.u64s));
>
> btree_bounce_free(c, btree_buf_bytes(b), used_mempool, sorted);
>
> --
> 2.48.1
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/4] bcachefs: mark_btree_node_locked_noreset -> mark_btree_node_locked_reset
2025-04-15 14:34 ` Kent Overstreet
@ 2025-04-15 14:40 ` Alan Huang
2025-04-15 15:10 ` Kent Overstreet
0 siblings, 1 reply; 11+ messages in thread
From: Alan Huang @ 2025-04-15 14:40 UTC (permalink / raw)
To: Kent Overstreet; +Cc: linux-bcachefs
On Apr 15, 2025, at 22:34, Kent Overstreet <kent.overstreet@linux.dev> wrote:
>
> On Tue, Apr 15, 2025 at 01:33:05PM +0800, Alan Huang wrote:
>> The semantic is reset now, rename the function to reflect that.
>>
>> Signed-off-by: Alan Huang <mmpgouride@gmail.com>
>
> erm, are you sure?
>
> mark_btree_node_locked() is the outer, more 'standard' interface, we
> generally do the more specialized naming for the inner, more
> specialized, 'are you sure this is the one you want' helper
I checked the git log, the original _noreset helper was no reset semantic, that is, add a new state.
And then the logic has been changed, but the name doesn't
>
>> ---
>> fs/bcachefs/btree_key_cache.c | 6 +++---
>> fs/bcachefs/btree_locking.c | 6 +++---
>> fs/bcachefs/btree_locking.h | 10 +++++-----
>> fs/bcachefs/btree_update_interior.c | 4 ++--
>> 4 files changed, 13 insertions(+), 13 deletions(-)
>>
>> diff --git a/fs/bcachefs/btree_key_cache.c b/fs/bcachefs/btree_key_cache.c
>> index 2b186584a291..c7ad01c1355c 100644
>> --- a/fs/bcachefs/btree_key_cache.c
>> +++ b/fs/bcachefs/btree_key_cache.c
>> @@ -240,7 +240,7 @@ static int btree_key_cache_create(struct btree_trans *trans,
>> ck->flags = 1U << BKEY_CACHED_ACCESSED;
>>
>> if (unlikely(key_u64s > ck->u64s)) {
>> - mark_btree_node_locked_noreset(ck_path, 0, BTREE_NODE_UNLOCKED);
>> + mark_btree_node_locked_reset(ck_path, 0, BTREE_NODE_UNLOCKED);
>>
>> struct bkey_i *new_k = allocate_dropping_locks(trans, ret,
>> kmalloc(key_u64s * sizeof(u64), _gfp));
>> @@ -282,7 +282,7 @@ static int btree_key_cache_create(struct btree_trans *trans,
>> return 0;
>> err:
>> bkey_cached_free(bc, ck);
>> - mark_btree_node_locked_noreset(ck_path, 0, BTREE_NODE_UNLOCKED);
>> + mark_btree_node_locked_reset(ck_path, 0, BTREE_NODE_UNLOCKED);
>>
>> return ret;
>> }
>> @@ -500,7 +500,7 @@ static int btree_key_cache_flush_pos(struct btree_trans *trans,
>> atomic_long_dec(&c->btree_key_cache.nr_dirty);
>> }
>>
>> - mark_btree_node_locked_noreset(path, 0, BTREE_NODE_UNLOCKED);
>> + mark_btree_node_locked_reset(path, 0, BTREE_NODE_UNLOCKED);
>> if (bkey_cached_evict(&c->btree_key_cache, ck)) {
>> bkey_cached_free(&c->btree_key_cache, ck);
>> } else {
>> diff --git a/fs/bcachefs/btree_locking.c b/fs/bcachefs/btree_locking.c
>> index f4f563944340..71dbac0bcd58 100644
>> --- a/fs/bcachefs/btree_locking.c
>> +++ b/fs/bcachefs/btree_locking.c
>> @@ -435,7 +435,7 @@ int __bch2_btree_node_lock_write(struct btree_trans *trans, struct btree_path *p
>> six_lock_readers_add(&b->lock, readers);
>>
>> if (ret)
>> - mark_btree_node_locked_noreset(path, b->level, BTREE_NODE_INTENT_LOCKED);
>> + mark_btree_node_locked_reset(path, b->level, BTREE_NODE_INTENT_LOCKED);
>>
>> return ret;
>> }
>> @@ -564,7 +564,7 @@ bool bch2_btree_node_upgrade(struct btree_trans *trans,
>> trace_and_count(trans->c, btree_path_upgrade_fail, trans, _RET_IP_, path, level);
>> return false;
>> success:
>> - mark_btree_node_locked_noreset(path, level, BTREE_NODE_INTENT_LOCKED);
>> + mark_btree_node_locked_reset(path, level, BTREE_NODE_INTENT_LOCKED);
>> return true;
>> }
>>
>> @@ -693,7 +693,7 @@ void __bch2_btree_path_downgrade(struct btree_trans *trans,
>> } else {
>> if (btree_node_intent_locked(path, l)) {
>> six_lock_downgrade(&path->l[l].b->c.lock);
>> - mark_btree_node_locked_noreset(path, l, BTREE_NODE_READ_LOCKED);
>> + mark_btree_node_locked_reset(path, l, BTREE_NODE_READ_LOCKED);
>> }
>> break;
>> }
>> diff --git a/fs/bcachefs/btree_locking.h b/fs/bcachefs/btree_locking.h
>> index 66b27c0853a5..8978f7969bef 100644
>> --- a/fs/bcachefs/btree_locking.h
>> +++ b/fs/bcachefs/btree_locking.h
>> @@ -63,7 +63,7 @@ static inline bool btree_node_locked(struct btree_path *path, unsigned level)
>> return btree_node_locked_type(path, level) != BTREE_NODE_UNLOCKED;
>> }
>>
>> -static inline void mark_btree_node_locked_noreset(struct btree_path *path,
>> +static inline void mark_btree_node_locked_reset(struct btree_path *path,
>> unsigned level,
>> enum btree_node_locked_type type)
>> {
>> @@ -80,7 +80,7 @@ static inline void mark_btree_node_locked(struct btree_trans *trans,
>> unsigned level,
>> enum btree_node_locked_type type)
>> {
>> - mark_btree_node_locked_noreset(path, level, (enum btree_node_locked_type) type);
>> + mark_btree_node_locked_reset(path, level, (enum btree_node_locked_type) type);
>> #ifdef CONFIG_BCACHEFS_LOCK_TIME_STATS
>> path->l[level].lock_taken_time = local_clock();
>> #endif
>> @@ -134,7 +134,7 @@ static inline void btree_node_unlock(struct btree_trans *trans,
>> }
>> six_unlock_type(&path->l[level].b->c.lock, lock_type);
>> btree_trans_lock_hold_time_update(trans, path, level);
>> - mark_btree_node_locked_noreset(path, level, BTREE_NODE_UNLOCKED);
>> + mark_btree_node_locked_reset(path, level, BTREE_NODE_UNLOCKED);
>> }
>> }
>>
>> @@ -183,7 +183,7 @@ bch2_btree_node_unlock_write_inlined(struct btree_trans *trans, struct btree_pat
>> EBUG_ON(path->l[b->c.level].lock_seq != six_lock_seq(&b->c.lock));
>> EBUG_ON(btree_node_locked_type(path, b->c.level) != SIX_LOCK_write);
>>
>> - mark_btree_node_locked_noreset(path, b->c.level, BTREE_NODE_INTENT_LOCKED);
>> + mark_btree_node_locked_reset(path, b->c.level, BTREE_NODE_INTENT_LOCKED);
>> __bch2_btree_node_unlock_write(trans, b);
>> }
>>
>> @@ -315,7 +315,7 @@ static inline int __btree_node_lock_write(struct btree_trans *trans,
>> * write lock: thus, we need to tell the cycle detector we have a write
>> * lock _before_ taking the lock:
>> */
>> - mark_btree_node_locked_noreset(path, b->level, BTREE_NODE_WRITE_LOCKED);
>> + mark_btree_node_locked_reset(path, b->level, BTREE_NODE_WRITE_LOCKED);
>>
>> return likely(six_trylock_write(&b->lock))
>> ? 0
>> diff --git a/fs/bcachefs/btree_update_interior.c b/fs/bcachefs/btree_update_interior.c
>> index 55fbeeb8eaaa..29e03408a019 100644
>> --- a/fs/bcachefs/btree_update_interior.c
>> +++ b/fs/bcachefs/btree_update_interior.c
>> @@ -245,7 +245,7 @@ static void bch2_btree_node_free_inmem(struct btree_trans *trans,
>> mutex_unlock(&c->btree_cache.lock);
>>
>> six_unlock_write(&b->c.lock);
>> - mark_btree_node_locked_noreset(path, b->c.level, BTREE_NODE_INTENT_LOCKED);
>> + mark_btree_node_locked_reset(path, b->c.level, BTREE_NODE_INTENT_LOCKED);
>>
>> bch2_trans_node_drop(trans, b);
>> }
>> @@ -788,7 +788,7 @@ static void btree_update_nodes_written(struct btree_update *as)
>>
>> mutex_unlock(&c->btree_interior_update_lock);
>>
>> - mark_btree_node_locked_noreset(path, b->c.level, BTREE_NODE_INTENT_LOCKED);
>> + mark_btree_node_locked_reset(path, b->c.level, BTREE_NODE_INTENT_LOCKED);
>> six_unlock_write(&b->c.lock);
>>
>> btree_node_write_if_need(trans, b, SIX_LOCK_intent);
>> --
>> 2.48.1
>>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH 2/4] bcachefs: mark_btree_node_locked_noreset -> mark_btree_node_locked_reset
2025-04-15 14:40 ` Alan Huang
@ 2025-04-15 15:10 ` Kent Overstreet
0 siblings, 0 replies; 11+ messages in thread
From: Kent Overstreet @ 2025-04-15 15:10 UTC (permalink / raw)
To: Alan Huang; +Cc: linux-bcachefs
On Tue, Apr 15, 2025 at 10:40:27PM +0800, Alan Huang wrote:
> On Apr 15, 2025, at 22:34, Kent Overstreet <kent.overstreet@linux.dev> wrote:
> >
> > On Tue, Apr 15, 2025 at 01:33:05PM +0800, Alan Huang wrote:
> >> The semantic is reset now, rename the function to reflect that.
> >>
> >> Signed-off-by: Alan Huang <mmpgouride@gmail.com>
> >
> > erm, are you sure?
> >
> > mark_btree_node_locked() is the outer, more 'standard' interface, we
> > generally do the more specialized naming for the inner, more
> > specialized, 'are you sure this is the one you want' helper
>
> I checked the git log, the original _noreset helper was no reset semantic, that is, add a new state.
> And then the logic has been changed, but the name doesn't
Not sure what you're seeing? mark_btree_node_locked() resets lock_taken_time
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2025-04-15 15:11 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-15 5:33 [PATCH 0/4] bcachefs: Random cleanup Alan Huang
2025-04-15 5:33 ` [PATCH 1/4] bcachefs: Kill bch2_trans_unlock_noassert Alan Huang
2025-04-15 14:34 ` Kent Overstreet
2025-04-15 5:33 ` [PATCH 2/4] bcachefs: mark_btree_node_locked_noreset -> mark_btree_node_locked_reset Alan Huang
2025-04-15 14:34 ` Kent Overstreet
2025-04-15 14:40 ` Alan Huang
2025-04-15 15:10 ` Kent Overstreet
2025-04-15 5:33 ` [PATCH 3/4] bcachefs: Remove spurious +1/-1 operation Alan Huang
2025-04-15 14:35 ` Kent Overstreet
2025-04-15 5:33 ` [PATCH 4/4] bcachefs: Simplify logic Alan Huang
2025-04-15 14:36 ` Kent Overstreet
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox