diff options
Diffstat (limited to 'src/kernel/blk.h')
-rw-r--r-- | src/kernel/blk.h | 97 |
1 files changed, 4 insertions, 93 deletions
diff --git a/src/kernel/blk.h b/src/kernel/blk.h index cbab6f5..c6dcb8d 100644 --- a/src/kernel/blk.h +++ b/src/kernel/blk.h @@ -24,104 +24,15 @@ #include "dnbd3_main.h" -/* define blkdev file system operation type */ -#define DNBD3_REQ_OP_FS REQ_TYPE_FS - -/* define blkdev special operation type */ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) -#define DNBD3_REQ_OP_SPECIAL REQ_OP_DRV_IN -#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 2, 0) || \ - RHEL_CHECK_VERSION(RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(7, 3)) -#define DNBD3_REQ_OP_SPECIAL REQ_TYPE_DRV_PRIV -#else -#define DNBD3_REQ_OP_SPECIAL REQ_TYPE_SPECIAL -#endif - -/* define blkdev read operation type */ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) -#define DNBD3_DEV_READ REQ_OP_READ -#else -#define DNBD3_DEV_READ DNBD3_REQ_OP_FS -#endif - -/* define blkdev write operation type */ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) -#define DNBD3_DEV_WRITE REQ_OP_WRITE -#else -#define DNBD3_DEV_WRITE DNBD3_REQ_OP_FS -#endif - -/* define command and blkdev operation access macros */ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) -#define DNBD3_REQ_FLAG_BITS REQ_FLAG_BITS -/* cmd_flags and cmd_type are merged into cmd_flags now */ -/* sanity check to avoid overriding of request bits */ -#if DNBD3_REQ_FLAG_BITS > 24 -#error "Fix CMD bitshift" -#endif -/* pack command into cmd_flags field by shifting CMD_* into unused bits of cmd_flags */ -#define dnbd3_cmd_to_priv(req, cmd) \ - ((req)->cmd_flags = DNBD3_REQ_OP_SPECIAL | ((cmd) << DNBD3_REQ_FLAG_BITS)) -#define dnbd3_priv_to_cmd(req) \ - ((req)->cmd_flags >> DNBD3_REQ_FLAG_BITS) -#define dnbd3_req_op(req) \ - req_op(req) -#else -/* pack command into cmd_type and cmd_flags field separated */ -#define dnbd3_cmd_to_priv(req, cmd) \ - do { \ - (req)->cmd_type = DNBD3_REQ_OP_SPECIAL; \ - (req)->cmd_flags = (cmd); \ - } while (0) -#define dnbd3_priv_to_cmd(req) \ - ((req)->cmd_flags) -#define dnbd3_req_op(req) \ - ((req)->cmd_type) -#endif - -/* define dnbd3_req_read(req) boolean expression */ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) -#define dnbd3_req_read(req) \ - (req_op(req) == DNBD3_DEV_READ) -#else -#define dnbd3_req_read(req) \ - (rq_data_dir(req) == READ) -#endif - -/* define dnbd3_req_write(req) boolean expression */ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) -#define dnbd3_req_write(req) \ - (req_op(req) == DNBD3_DEV_WRITE) -#else -#define dnbd3_req_write(req) \ - (rq_data_dir(req) == WRITE) -#endif - -/* define dnbd3_req_fs(req) boolean expression */ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) -#define dnbd3_req_fs(req) \ - (dnbd3_req_read(req) || dnbd3_req_write(req)) -#else -#define dnbd3_req_fs(req) \ - (dnbd3_req_op(req) == DNBD3_REQ_OP_FS) -#endif - -/* define dnbd3_req_special(req) boolean expression */ -#if LINUX_VERSION_CODE >= KERNEL_VERSION(5, 14, 0) -#define dnbd3_req_special(req) \ - (dnbd3_req_op(req) == DNBD3_REQ_OP_SPECIAL) -#elif LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 0) -#define dnbd3_req_special(req) \ - blk_rq_is_private(req) -#else -#define dnbd3_req_special(req) \ - (dnbd3_req_op(req) == DNBD3_REQ_OP_SPECIAL) -#endif +// The device has been set up via IOCTL_OPEN and hasn't been closed yet +#define device_active(dev) ((dev)->reported_size != 0) int dnbd3_blk_add_device(dnbd3_device_t *dev, int minor); int dnbd3_blk_del_device(dnbd3_device_t *dev); +void dnbd3_blk_requeue_all_requests(dnbd3_device_t *dev); + void dnbd3_blk_fail_all_requests(dnbd3_device_t *dev); #endif /* BLK_H_ */ |