1 #ifndef _BCACHE_REQUEST_H_ 2 #define _BCACHE_REQUEST_H_ 3 4 #include <linux/cgroup.h> 5 6 struct data_insert_op { 7 struct closure cl; 8 struct cache_set *c; 9 struct bio *bio; 10 11 unsigned inode; 12 uint16_t write_point; 13 uint16_t write_prio; 14 short error; 15 16 union { 17 uint16_t flags; 18 19 struct { 20 unsigned bypass:1; 21 unsigned writeback:1; 22 unsigned flush_journal:1; 23 unsigned csum:1; 24 25 unsigned replace:1; 26 unsigned replace_collision:1; 27 28 unsigned insert_data_done:1; 29 }; 30 }; 31 32 struct keylist insert_keys; 33 BKEY_PADDED(replace_key); 34 }; 35 36 unsigned bch_get_congested(struct cache_set *); 37 void bch_data_insert(struct closure *cl); 38 39 void bch_cached_dev_request_init(struct cached_dev *dc); 40 void bch_flash_dev_request_init(struct bcache_device *d); 41 42 extern struct kmem_cache *bch_search_cache, *bch_passthrough_cache; 43 44 struct bch_cgroup { 45 #ifdef CONFIG_CGROUP_BCACHE 46 struct cgroup_subsys_state css; 47 #endif 48 /* 49 * We subtract one from the index into bch_cache_modes[], so that 50 * default == -1; this makes it so the rest match up with d->cache_mode, 51 * and we use d->cache_mode if cgrp->cache_mode < 0 52 */ 53 short cache_mode; 54 bool verify; 55 struct cache_stat_collector stats; 56 }; 57 58 struct bch_cgroup *bch_bio_to_cgroup(struct bio *bio); 59 60 #endif /* _BCACHE_REQUEST_H_ */ 61