Age | Commit message (Collapse) | Author |
|
btree_node_merge -> get_sibling -> btree_node_lock could drop locks,
when using linked iterators
|
|
|
|
|
|
Replaces bch2_btree_iter_set_locks_want() - also add more assertions
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
|
|
|
|
BTREE_INSERT_NOUNLOCK means after a sucessful btree update, do not drop
any locks (e.g. while merging nodes).
This is going to be used to fix some locking primarily related to
bi_size in bch_inode_info.
|
|
|
|
|
|
for tracing problems with mount
|
|
Reduce unnecessary calls, and also call it from bch2_btree_insert_at()
when needed
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
|
|
previously, bch2_btree_iter_advance_pos() would use iter->k to calculate
the next iterator position, assuming iter->k had been set by
bch2_btree_iter_peek()/peek_with_holes(); this was busted because it was
possible in certain codepaths to call bch2_btree_iter_advance_pos() when
either iter->k hadn't been initialized, or bch2_btree_iter_traverse() ->
btree_iter_down() had scribbled over it.
This gets rid of bch2_btree_iter_advance_pos, in favor of
bch2_btree_iter_next() and bche_btree_iter_next_slot(), which both just
call peek() internall if the iterator isn't uptodate.
It's a performance improvement, too.
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
|
|
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
|
|
default is to use memcmp, which isn't getting inlined (due to kernel not
using __builtin_memcpy?)
|
|
|
|
|
|
making struct bch_fs a bit smaller
|
|
|
|
|
|
Fork of drivers/md/bcache
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
|