Commit c7495413 authored by Kent Overstreet's avatar Kent Overstreet

bcachefs: uninline set_btree_iter_dontneed()

Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
parent 0af0b963
...@@ -1303,7 +1303,7 @@ static noinline_for_stack int bch2_check_discard_freespace_key(struct btree_tran ...@@ -1303,7 +1303,7 @@ static noinline_for_stack int bch2_check_discard_freespace_key(struct btree_tran
goto delete; goto delete;
out: out:
fsck_err: fsck_err:
set_btree_iter_dontneed(&alloc_iter); bch2_set_btree_iter_dontneed(&alloc_iter);
bch2_trans_iter_exit(trans, &alloc_iter); bch2_trans_iter_exit(trans, &alloc_iter);
printbuf_exit(&buf); printbuf_exit(&buf);
return ret; return ret;
......
...@@ -363,10 +363,10 @@ static struct open_bucket *try_alloc_bucket(struct btree_trans *trans, struct bc ...@@ -363,10 +363,10 @@ static struct open_bucket *try_alloc_bucket(struct btree_trans *trans, struct bc
ob = __try_alloc_bucket(c, ca, b, watermark, a, s, cl); ob = __try_alloc_bucket(c, ca, b, watermark, a, s, cl);
if (!ob) if (!ob)
set_btree_iter_dontneed(&iter); bch2_set_btree_iter_dontneed(&iter);
err: err:
if (iter.path) if (iter.path)
set_btree_iter_dontneed(&iter); bch2_set_btree_iter_dontneed(&iter);
bch2_trans_iter_exit(trans, &iter); bch2_trans_iter_exit(trans, &iter);
printbuf_exit(&buf); printbuf_exit(&buf);
return ob; return ob;
...@@ -433,7 +433,7 @@ bch2_bucket_alloc_early(struct btree_trans *trans, ...@@ -433,7 +433,7 @@ bch2_bucket_alloc_early(struct btree_trans *trans,
ob = __try_alloc_bucket(trans->c, ca, k.k->p.offset, watermark, a, s, cl); ob = __try_alloc_bucket(trans->c, ca, k.k->p.offset, watermark, a, s, cl);
next: next:
set_btree_iter_dontneed(&citer); bch2_set_btree_iter_dontneed(&citer);
bch2_trans_iter_exit(trans, &citer); bch2_trans_iter_exit(trans, &citer);
if (ob) if (ob)
break; break;
...@@ -488,7 +488,7 @@ static struct open_bucket *bch2_bucket_alloc_freelist(struct btree_trans *trans, ...@@ -488,7 +488,7 @@ static struct open_bucket *bch2_bucket_alloc_freelist(struct btree_trans *trans,
ob = try_alloc_bucket(trans, ca, watermark, ob = try_alloc_bucket(trans, ca, watermark,
alloc_cursor, s, k, cl); alloc_cursor, s, k, cl);
if (ob) { if (ob) {
set_btree_iter_dontneed(&iter); bch2_set_btree_iter_dontneed(&iter);
break; break;
} }
} }
......
...@@ -1822,6 +1822,19 @@ struct bkey_s_c bch2_btree_path_peek_slot(struct btree_path *path, struct bkey * ...@@ -1822,6 +1822,19 @@ struct bkey_s_c bch2_btree_path_peek_slot(struct btree_path *path, struct bkey *
return (struct bkey_s_c) { u, NULL }; return (struct bkey_s_c) { u, NULL };
} }
void bch2_set_btree_iter_dontneed(struct btree_iter *iter)
{
struct btree_trans *trans = iter->trans;
if (!iter->path || trans->restarted)
return;
struct btree_path *path = btree_iter_path(trans, iter);
path->preserve = false;
if (path->ref == 1)
path->should_be_locked = false;
}
/* Btree iterators: */ /* Btree iterators: */
int __must_check int __must_check
......
...@@ -508,18 +508,7 @@ void bch2_trans_node_iter_init(struct btree_trans *, struct btree_iter *, ...@@ -508,18 +508,7 @@ void bch2_trans_node_iter_init(struct btree_trans *, struct btree_iter *,
unsigned, unsigned, unsigned); unsigned, unsigned, unsigned);
void bch2_trans_copy_iter(struct btree_iter *, struct btree_iter *); void bch2_trans_copy_iter(struct btree_iter *, struct btree_iter *);
static inline void set_btree_iter_dontneed(struct btree_iter *iter) void bch2_set_btree_iter_dontneed(struct btree_iter *);
{
struct btree_trans *trans = iter->trans;
if (!iter->path || trans->restarted)
return;
struct btree_path *path = btree_iter_path(trans, iter);
path->preserve = false;
if (path->ref == 1)
path->should_be_locked = false;
}
void *__bch2_trans_kmalloc(struct btree_trans *, size_t); void *__bch2_trans_kmalloc(struct btree_trans *, size_t);
......
...@@ -456,7 +456,7 @@ static int btree_key_cache_fill(struct btree_trans *trans, ...@@ -456,7 +456,7 @@ static int btree_key_cache_fill(struct btree_trans *trans,
bch2_btree_node_unlock_write(trans, ck_path, ck_path->l[0].b); bch2_btree_node_unlock_write(trans, ck_path, ck_path->l[0].b);
/* We're not likely to need this iterator again: */ /* We're not likely to need this iterator again: */
set_btree_iter_dontneed(&iter); bch2_set_btree_iter_dontneed(&iter);
err: err:
bch2_trans_iter_exit(trans, &iter); bch2_trans_iter_exit(trans, &iter);
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment