@@ -2252,7 +2252,8 @@ static inline int keybuf_nonoverlapping_cmp(struct keybuf_key *l,
22522252}
22532253
22542254static int bch_btree_refill_keybuf (struct btree * b , struct btree_op * op ,
2255- struct keybuf * buf , struct bkey * end )
2255+ struct keybuf * buf , struct bkey * end ,
2256+ keybuf_pred_fn * pred )
22562257{
22572258 struct btree_iter iter ;
22582259 bch_btree_iter_init (b , & iter , & buf -> last_scanned );
@@ -2271,7 +2272,7 @@ static int bch_btree_refill_keybuf(struct btree *b, struct btree_op *op,
22712272 if (bkey_cmp (& buf -> last_scanned , end ) >= 0 )
22722273 break ;
22732274
2274- if (buf -> key_predicate (buf , k )) {
2275+ if (pred (buf , k )) {
22752276 struct keybuf_key * w ;
22762277
22772278 spin_lock (& buf -> lock );
@@ -2290,7 +2291,7 @@ static int bch_btree_refill_keybuf(struct btree *b, struct btree_op *op,
22902291 if (!k )
22912292 break ;
22922293
2293- btree (refill_keybuf , k , b , op , buf , end );
2294+ btree (refill_keybuf , k , b , op , buf , end , pred );
22942295 /*
22952296 * Might get an error here, but can't really do anything
22962297 * and it'll get logged elsewhere. Just read what we
@@ -2308,15 +2309,15 @@ static int bch_btree_refill_keybuf(struct btree *b, struct btree_op *op,
23082309}
23092310
23102311void bch_refill_keybuf (struct cache_set * c , struct keybuf * buf ,
2311- struct bkey * end )
2312+ struct bkey * end , keybuf_pred_fn * pred )
23122313{
23132314 struct bkey start = buf -> last_scanned ;
23142315 struct btree_op op ;
23152316 bch_btree_op_init_stack (& op );
23162317
23172318 cond_resched ();
23182319
2319- btree_root (refill_keybuf , c , & op , buf , end );
2320+ btree_root (refill_keybuf , c , & op , buf , end , pred );
23202321 closure_sync (& op .cl );
23212322
23222323 pr_debug ("found %s keys from %llu:%llu to %llu:%llu" ,
@@ -2402,7 +2403,8 @@ struct keybuf_key *bch_keybuf_next(struct keybuf *buf)
24022403
24032404struct keybuf_key * bch_keybuf_next_rescan (struct cache_set * c ,
24042405 struct keybuf * buf ,
2405- struct bkey * end )
2406+ struct bkey * end ,
2407+ keybuf_pred_fn * pred )
24062408{
24072409 struct keybuf_key * ret ;
24082410
@@ -2416,15 +2418,14 @@ struct keybuf_key *bch_keybuf_next_rescan(struct cache_set *c,
24162418 break ;
24172419 }
24182420
2419- bch_refill_keybuf (c , buf , end );
2421+ bch_refill_keybuf (c , buf , end , pred );
24202422 }
24212423
24222424 return ret ;
24232425}
24242426
2425- void bch_keybuf_init (struct keybuf * buf , keybuf_pred_fn * fn )
2427+ void bch_keybuf_init (struct keybuf * buf )
24262428{
2427- buf -> key_predicate = fn ;
24282429 buf -> last_scanned = MAX_KEY ;
24292430 buf -> keys = RB_ROOT ;
24302431
0 commit comments