1c66ac9dbSNicholas Bellinger #ifndef TARGET_CORE_IBLOCK_H
2c66ac9dbSNicholas Bellinger #define TARGET_CORE_IBLOCK_H
3c66ac9dbSNicholas Bellinger 
48dcf07beSBart Van Assche #include <linux/atomic.h>
58dcf07beSBart Van Assche #include <target/target_core_base.h>
68dcf07beSBart Van Assche 
7c66ac9dbSNicholas Bellinger #define IBLOCK_VERSION		"4.0"
8c66ac9dbSNicholas Bellinger 
9c66ac9dbSNicholas Bellinger #define IBLOCK_MAX_CDBS		16
10c66ac9dbSNicholas Bellinger #define IBLOCK_LBA_SHIFT	9
11c66ac9dbSNicholas Bellinger 
12c66ac9dbSNicholas Bellinger struct iblock_req {
13d5b4a21bSChristoph Hellwig 	atomic_t pending;
14c66ac9dbSNicholas Bellinger 	atomic_t ib_bio_err_cnt;
15c66ac9dbSNicholas Bellinger } ____cacheline_aligned;
16c66ac9dbSNicholas Bellinger 
17c66ac9dbSNicholas Bellinger #define IBDF_HAS_UDEV_PATH		0x01
18c66ac9dbSNicholas Bellinger 
19c66ac9dbSNicholas Bellinger struct iblock_dev {
200fd97ccfSChristoph Hellwig 	struct se_device dev;
21c66ac9dbSNicholas Bellinger 	unsigned char ibd_udev_path[SE_UDEV_PATH_LEN];
22c66ac9dbSNicholas Bellinger 	u32	ibd_flags;
23c66ac9dbSNicholas Bellinger 	struct bio_set	*ibd_bio_set;
24c66ac9dbSNicholas Bellinger 	struct block_device *ibd_bd;
2544bfd018SAndy Grover 	bool ibd_readonly;
26c66ac9dbSNicholas Bellinger } ____cacheline_aligned;
27c66ac9dbSNicholas Bellinger 
28c66ac9dbSNicholas Bellinger #endif /* TARGET_CORE_IBLOCK_H */
29