1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _BCACHE_REQUEST_H_
3 #define _BCACHE_REQUEST_H_
4 
5 struct data_insert_op {
6 	struct closure		cl;
7 	struct cache_set	*c;
8 	struct bio		*bio;
9 	struct workqueue_struct *wq;
10 
11 	unsigned int		inode;
12 	uint16_t		write_point;
13 	uint16_t		write_prio;
14 	blk_status_t		status;
15 
16 	union {
17 		uint16_t	flags;
18 
19 	struct {
20 		unsigned int	bypass:1;
21 		unsigned int	writeback:1;
22 		unsigned int	flush_journal:1;
23 		unsigned int	csum:1;
24 
25 		unsigned int	replace:1;
26 		unsigned int	replace_collision:1;
27 
28 		unsigned int	insert_data_done:1;
29 	};
30 	};
31 
32 	struct keylist		insert_keys;
33 	BKEY_PADDED(replace_key);
34 };
35 
36 unsigned int bch_get_congested(const struct cache_set *c);
37 void bch_data_insert(struct closure *cl);
38 
39 void bch_cached_dev_request_init(struct cached_dev *dc);
40 void cached_dev_submit_bio(struct bio *bio);
41 
42 void bch_flash_dev_request_init(struct bcache_device *d);
43 void flash_dev_submit_bio(struct bio *bio);
44 
45 extern struct kmem_cache *bch_search_cache;
46 
47 #endif /* _BCACHE_REQUEST_H_ */
48