diff --git a/scst/include/backport.h b/scst/include/backport.h index c5e59c07b..f9d9baa8f 100644 --- a/scst/include/backport.h +++ b/scst/include/backport.h @@ -1543,6 +1543,30 @@ static inline void *vzalloc(unsigned long size) } #endif +/* */ +#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 20, 0) +/* + * See also commit 25ab0bc334b4 ("scsi: sched/wait: Add + * wait_event_lock_irq_timeout for TASK_UNINTERRUPTIBLE usage") # v4.20. + */ +#define __wait_event_lock_irq_timeout(wq_head, condition, lock, timeout, state)\ + ___wait_event(wq_head, ___wait_cond_timeout(condition), \ + state, 0, timeout, \ + spin_unlock_irq(&lock); \ + __ret = schedule_timeout(__ret); \ + spin_lock_irq(&lock)); + +#define wait_event_lock_irq_timeout(wq_head, condition, lock, timeout) \ +({ \ + long __ret = timeout; \ + if (!___wait_cond_timeout(condition)) \ + __ret = __wait_event_lock_irq_timeout( \ + wq_head, condition, lock, timeout,\ + TASK_UNINTERRUPTIBLE); \ + __ret; \ +}) +#endif + /* */ #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 36)