xref: /openbmc/linux/drivers/md/bcache/request.h (revision 37be287c)
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