| #include <linux/version.h> |
| #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 12, 0) && \ |
| !(defined(RHEL_MAJOR) && RHEL_MAJOR -0 >= 7) |
| #define QLT_USE_PERCPU_IDA 0 |
| #define QLT_USE_SBITMAP 0 |
| #include <linux/bitmap.h> |
| #elif LINUX_VERSION_CODE < KERNEL_VERSION(4, 19, 0) && \ |
| !(defined(RHEL_MAJOR) && RHEL_MAJOR -0 >= 8) |
| #define QLT_USE_PERCPU_IDA 1 |
| #define QLT_USE_SBITMAP 0 |
| /* See also commit 798ab48eecdf ("idr: Percpu ida") # v3.12 */ |
| #include <linux/percpu_ida.h> |
| #else |
| #define QLT_USE_PERCPU_IDA 0 |
| #define QLT_USE_SBITMAP 1 |
| /* See also commit 693ba15c9202 ("scsi: Remove percpu_ida") # v4.19. */ |
| #include <linux/sbitmap.h> |
| #endif |
| |
| /* Driver version number */ |
| #define Q2T_VERSION(a, b, c, d) (((a) << 030) + ((b) << 020) + (c) << 010 + (d)) |
| #define Q2T_VERSION_CODE Q2T_VERSION(3, 5, 0, 0) |
| #define Q2T_VERSION_STRING "3.5.0" |
| |
| #define SQA_DEFAULT_TAGS 2048 |
| |
| extern size_t qlt_add_vtarget(u64, u64, u64); |
| extern size_t qlt_del_vtarget(u64); |
| |
| struct sqa_scst_tgt { |
| struct list_head list; |
| struct scst_tgt *scst_tgt; |
| struct qla_tgt *qla_tgt; |
| void *tgt_cmd_map; |
| #if QLT_USE_PERCPU_IDA |
| struct percpu_ida tgt_tag_pool; |
| #elif QLT_USE_SBITMAP |
| struct sbitmap_queue tgt_tag_pool; |
| #else |
| unsigned long *tgt_tag_pool; |
| unsigned int tag_num; |
| #endif |
| }; |