mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-04 16:25:34 +00:00
bcachefs: Inode create no longer needs to probe key cache
Now that we have full key cache coherency, we can simplify bch2_inode_create(). Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
12ce5b7df1
commit
63a2edce94
1 changed files with 4 additions and 24 deletions
|
@ -519,19 +519,8 @@ again:
|
|||
while ((k = bch2_btree_iter_peek(iter)).k &&
|
||||
!(ret = bkey_err(k)) &&
|
||||
bkey_cmp(k.k->p, POS(0, max)) < 0) {
|
||||
while (pos < iter->pos.offset) {
|
||||
if (!bch2_btree_key_cache_find(c, BTREE_ID_inodes, POS(0, pos)))
|
||||
goto found_slot;
|
||||
|
||||
pos++;
|
||||
}
|
||||
|
||||
if (k.k->p.snapshot == snapshot &&
|
||||
!bkey_is_inode(k.k) &&
|
||||
!bch2_btree_key_cache_find(c, BTREE_ID_inodes, SPOS(0, pos, snapshot))) {
|
||||
bch2_btree_iter_advance(iter);
|
||||
continue;
|
||||
}
|
||||
if (pos < iter->pos.offset)
|
||||
goto found_slot;
|
||||
|
||||
/*
|
||||
* We don't need to iterate over keys in every snapshot once
|
||||
|
@ -541,12 +530,8 @@ again:
|
|||
bch2_btree_iter_set_pos(iter, POS(0, pos));
|
||||
}
|
||||
|
||||
while (!ret && pos < max) {
|
||||
if (!bch2_btree_key_cache_find(c, BTREE_ID_inodes, POS(0, pos)))
|
||||
goto found_slot;
|
||||
|
||||
pos++;
|
||||
}
|
||||
if (!ret && pos < max)
|
||||
goto found_slot;
|
||||
|
||||
if (!ret && start == min)
|
||||
ret = -ENOSPC;
|
||||
|
@ -569,11 +554,6 @@ found_slot:
|
|||
return ret;
|
||||
}
|
||||
|
||||
/* We may have raced while the iterator wasn't pointing at pos: */
|
||||
if (bkey_is_inode(k.k) ||
|
||||
bch2_btree_key_cache_find(c, BTREE_ID_inodes, k.k->p))
|
||||
goto again;
|
||||
|
||||
*hint = k.k->p.offset;
|
||||
inode_u->bi_inum = k.k->p.offset;
|
||||
inode_u->bi_generation = bkey_generation(k);
|
||||
|
|
Loading…
Add table
Reference in a new issue