diff options
author | Kent Overstreet <kent.overstreet@linux.dev> | 2025-05-31 23:40:21 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@linux.dev> | 2025-05-31 23:40:21 -0400 |
commit | 3457fbde27c15b8937169ee30f1c097018fea024 (patch) | |
tree | ce8d81e83e71c53c2bb99aa32e3235677e62d0f6 /libbcachefs/debug.c | |
parent | 4613023c166e95bd37eef957a82080b2c7625d0d (diff) |
Update bcachefs sources to d316ba08b045 bcachefs: Repair code for directory i_size
Diffstat (limited to 'libbcachefs/debug.c')
-rw-r--r-- | libbcachefs/debug.c | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/libbcachefs/debug.c b/libbcachefs/debug.c index 04db3e0e..901f643e 100644 --- a/libbcachefs/debug.c +++ b/libbcachefs/debug.c @@ -510,27 +510,27 @@ static ssize_t bch2_cached_btree_nodes_read(struct file *file, char __user *buf, i->ret = 0; do { - struct bucket_table *tbl; - struct rhash_head *pos; - struct btree *b; - ret = bch2_debugfs_flush_buf(i); if (ret) return ret; - rcu_read_lock(); i->buf.atomic++; - tbl = rht_dereference_rcu(c->btree_cache.table.tbl, - &c->btree_cache.table); - if (i->iter < tbl->size) { - rht_for_each_entry_rcu(b, pos, tbl, i->iter, hash) - bch2_cached_btree_node_to_text(&i->buf, c, b); - i->iter++; - } else { - done = true; + scoped_guard(rcu) { + struct bucket_table *tbl = + rht_dereference_rcu(c->btree_cache.table.tbl, + &c->btree_cache.table); + if (i->iter < tbl->size) { + struct rhash_head *pos; + struct btree *b; + + rht_for_each_entry_rcu(b, pos, tbl, i->iter, hash) + bch2_cached_btree_node_to_text(&i->buf, c, b); + i->iter++; + } else { + done = true; + } } --i->buf.atomic; - rcu_read_unlock(); } while (!done); if (i->buf.allocation_failure) |