diff options
Diffstat (limited to 'drivers/md/bcache/bset.h')
-rw-r--r-- | drivers/md/bcache/bset.h | 38 |
1 files changed, 29 insertions, 9 deletions
diff --git a/drivers/md/bcache/bset.h b/drivers/md/bcache/bset.h index 91bcbdb04085..4f60c21c7a38 100644 --- a/drivers/md/bcache/bset.h +++ b/drivers/md/bcache/bset.h | |||
@@ -3,6 +3,8 @@ | |||
3 | 3 | ||
4 | #include <linux/slab.h> | 4 | #include <linux/slab.h> |
5 | 5 | ||
6 | #include "util.h" /* for time_stats */ | ||
7 | |||
6 | /* | 8 | /* |
7 | * BKEYS: | 9 | * BKEYS: |
8 | * | 10 | * |
@@ -190,6 +192,33 @@ struct bset_tree { | |||
190 | struct bset *data; | 192 | struct bset *data; |
191 | }; | 193 | }; |
192 | 194 | ||
195 | /* Sorting */ | ||
196 | |||
197 | struct bset_sort_state { | ||
198 | mempool_t *pool; | ||
199 | |||
200 | unsigned page_order; | ||
201 | unsigned crit_factor; | ||
202 | |||
203 | struct time_stats time; | ||
204 | }; | ||
205 | |||
206 | void bch_bset_sort_state_free(struct bset_sort_state *); | ||
207 | int bch_bset_sort_state_init(struct bset_sort_state *, unsigned); | ||
208 | void bch_btree_sort_lazy(struct btree *, struct bset_sort_state *); | ||
209 | void bch_btree_sort_into(struct btree *, struct btree *, | ||
210 | struct bset_sort_state *); | ||
211 | void bch_btree_sort_and_fix_extents(struct btree *, struct btree_iter *, | ||
212 | struct bset_sort_state *); | ||
213 | void bch_btree_sort_partial(struct btree *, unsigned, | ||
214 | struct bset_sort_state *); | ||
215 | |||
216 | static inline void bch_btree_sort(struct btree *b, | ||
217 | struct bset_sort_state *state) | ||
218 | { | ||
219 | bch_btree_sort_partial(b, 0, state); | ||
220 | } | ||
221 | |||
193 | /* Keylists */ | 222 | /* Keylists */ |
194 | 223 | ||
195 | struct keylist { | 224 | struct keylist { |
@@ -374,15 +403,6 @@ static inline struct bkey *bch_bset_search(struct btree *b, struct bset_tree *t, | |||
374 | }) | 403 | }) |
375 | 404 | ||
376 | bool bch_bkey_try_merge(struct btree *, struct bkey *, struct bkey *); | 405 | bool bch_bkey_try_merge(struct btree *, struct bkey *, struct bkey *); |
377 | void bch_btree_sort_lazy(struct btree *); | ||
378 | void bch_btree_sort_into(struct btree *, struct btree *); | ||
379 | void bch_btree_sort_and_fix_extents(struct btree *, struct btree_iter *); | ||
380 | void bch_btree_sort_partial(struct btree *, unsigned); | ||
381 | |||
382 | static inline void bch_btree_sort(struct btree *b) | ||
383 | { | ||
384 | bch_btree_sort_partial(b, 0); | ||
385 | } | ||
386 | 406 | ||
387 | int bch_bset_print_stats(struct cache_set *, char *); | 407 | int bch_bset_print_stats(struct cache_set *, char *); |
388 | 408 | ||