scst: fix compilation on older kernels

git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@6960 d57e44dd-8a1f-0410-8b47-8ef2f437770f
This commit is contained in:
Vladislav Bolkhovitin
2016-08-20 01:24:03 +00:00
parent 40fd212bdf
commit 68fc4a14b1
5 changed files with 27 additions and 0 deletions

View File

@@ -678,4 +678,19 @@ static inline int scsi_bidi_cmnd(struct scsi_cmnd *cmd)
}
#endif
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0)) && \
(LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0))
/**
* ktime_before - Compare if a ktime_t value is smaller than another one.
* @cmp1: comparable1
* @cmp2: comparable2
*
* Return: true if cmp1 happened before cmp2.
*/
static inline bool ktime_before(const ktime_t cmp1, const ktime_t cmp2)
{
return ktime_compare(cmp1, cmp2) < 0;
}
#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0)) && (LINUX_VERSION_CODE < KERNEL_VERSION(3, 16, 0)) */
#endif /* _SCST_BACKPORT_H_ */

View File

@@ -121,7 +121,9 @@ unsigned long scst_trace_flag;
unsigned long scst_flags;
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0)
unsigned long scst_poll_ns = SCST_DEF_POLL_NS;
#endif
int scst_max_tasklet_cmd = SCST_DEF_MAX_TASKLET_CMD;

View File

@@ -183,8 +183,10 @@ extern unsigned int scst_setup_id;
#define SCST_DEF_MAX_TASKLET_CMD 10
extern int scst_max_tasklet_cmd;
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0)
#define SCST_DEF_POLL_NS 0
extern unsigned long scst_poll_ns;
#endif
extern spinlock_t scst_init_lock;
extern struct list_head scst_init_cmd_list;

View File

@@ -7077,6 +7077,8 @@ static struct kobj_attribute scst_max_tasklet_cmd_attr =
__ATTR(max_tasklet_cmd, S_IRUGO | S_IWUSR, scst_max_tasklet_cmd_show,
scst_max_tasklet_cmd_store);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0)
static ssize_t scst_poll_us_show(struct kobject *kobj,
struct kobj_attribute *attr, char *buf)
{
@@ -7124,6 +7126,8 @@ static struct kobj_attribute scst_poll_us_attr =
__ATTR(poll_us, S_IRUGO | S_IWUSR, scst_poll_us_show,
scst_poll_us_store);
#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0) */
static ssize_t scst_suspend_show(struct kobject *kobj,
struct kobj_attribute *attr, char *buf)
{
@@ -7398,7 +7402,9 @@ static struct attribute *scst_sysfs_root_default_attrs[] = {
&scst_threads_attr.attr,
&scst_setup_id_attr.attr,
&scst_max_tasklet_cmd_attr.attr,
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0)
&scst_poll_us_attr.attr,
#endif
&scst_suspend_attr.attr,
#if defined(CONFIG_SCST_DEBUG) || defined(CONFIG_SCST_TRACING)
&scst_main_trace_level_attr.attr,

View File

@@ -5620,6 +5620,7 @@ again:
thr_locked = false;
}
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0)
if (scst_poll_ns > 0) {
struct timespec ts;
ktime_t end, kt;
@@ -5652,6 +5653,7 @@ again:
}
go:
#endif
spin_lock_irq(&p_cmd_threads->cmd_list_lock);
spin_lock(&thr->thr_cmd_list_lock);
}