summaryrefslogtreecommitdiffstats
path: root/src/kernel/blk.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel/blk.h')
-rw-r--r--src/kernel/blk.h97
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_ */