mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2024-12-26 03:09:34 +03:00
config: remove HAVE_IO_SCHEDULE_TIMEOUT
Sponsored-by: https://despairlabs.com/sponsor/ Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Tony Hutter <hutter2@llnl.gov> Reviewed-by: Tino Reichardt <milky-zfs@mcmilk.de> Signed-off-by: Rob Norris <robn@despairlabs.com> Closes #16479
This commit is contained in:
parent
714d7666e5
commit
d4bbe2ff38
@ -44,39 +44,12 @@ AC_DEFUN([ZFS_AC_KERNEL_SCHED_SIGNAL_HEADER], [
|
|||||||
])
|
])
|
||||||
])
|
])
|
||||||
|
|
||||||
dnl #
|
|
||||||
dnl # 3.19 API change
|
|
||||||
dnl # The io_schedule_timeout() function is present in all 2.6.32 kernels
|
|
||||||
dnl # but it was not exported until Linux 3.19. The RHEL 7.x kernels which
|
|
||||||
dnl # are based on a 3.10 kernel do export this symbol.
|
|
||||||
dnl #
|
|
||||||
AC_DEFUN([ZFS_AC_KERNEL_SRC_IO_SCHEDULE_TIMEOUT], [
|
|
||||||
ZFS_LINUX_TEST_SRC([io_schedule_timeout], [
|
|
||||||
#include <linux/sched.h>
|
|
||||||
], [
|
|
||||||
(void) io_schedule_timeout(1);
|
|
||||||
])
|
|
||||||
])
|
|
||||||
|
|
||||||
AC_DEFUN([ZFS_AC_KERNEL_IO_SCHEDULE_TIMEOUT], [
|
|
||||||
AC_MSG_CHECKING([whether io_schedule_timeout() is available])
|
|
||||||
ZFS_LINUX_TEST_RESULT_SYMBOL([io_schedule_timeout],
|
|
||||||
[io_schedule_timeout], [], [
|
|
||||||
AC_MSG_RESULT(yes)
|
|
||||||
AC_DEFINE(HAVE_IO_SCHEDULE_TIMEOUT, 1, [yes])
|
|
||||||
],[
|
|
||||||
AC_MSG_RESULT(no)
|
|
||||||
])
|
|
||||||
])
|
|
||||||
|
|
||||||
AC_DEFUN([ZFS_AC_KERNEL_SRC_SCHED], [
|
AC_DEFUN([ZFS_AC_KERNEL_SRC_SCHED], [
|
||||||
ZFS_AC_KERNEL_SRC_SCHED_RT_HEADER
|
ZFS_AC_KERNEL_SRC_SCHED_RT_HEADER
|
||||||
ZFS_AC_KERNEL_SRC_SCHED_SIGNAL_HEADER
|
ZFS_AC_KERNEL_SRC_SCHED_SIGNAL_HEADER
|
||||||
ZFS_AC_KERNEL_SRC_IO_SCHEDULE_TIMEOUT
|
|
||||||
])
|
])
|
||||||
|
|
||||||
AC_DEFUN([ZFS_AC_KERNEL_SCHED], [
|
AC_DEFUN([ZFS_AC_KERNEL_SCHED], [
|
||||||
ZFS_AC_KERNEL_SCHED_RT_HEADER
|
ZFS_AC_KERNEL_SCHED_RT_HEADER
|
||||||
ZFS_AC_KERNEL_SCHED_SIGNAL_HEADER
|
ZFS_AC_KERNEL_SCHED_SIGNAL_HEADER
|
||||||
ZFS_AC_KERNEL_IO_SCHEDULE_TIMEOUT
|
|
||||||
])
|
])
|
||||||
|
@ -209,48 +209,6 @@ __cv_wait_idle(kcondvar_t *cvp, kmutex_t *mp)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(__cv_wait_idle);
|
EXPORT_SYMBOL(__cv_wait_idle);
|
||||||
|
|
||||||
#if defined(HAVE_IO_SCHEDULE_TIMEOUT)
|
|
||||||
#define spl_io_schedule_timeout(t) io_schedule_timeout(t)
|
|
||||||
#else
|
|
||||||
|
|
||||||
struct spl_task_timer {
|
|
||||||
struct timer_list timer;
|
|
||||||
struct task_struct *task;
|
|
||||||
};
|
|
||||||
|
|
||||||
static void
|
|
||||||
__cv_wakeup(spl_timer_list_t t)
|
|
||||||
{
|
|
||||||
struct timer_list *tmr = (struct timer_list *)t;
|
|
||||||
struct spl_task_timer *task_timer = from_timer(task_timer, tmr, timer);
|
|
||||||
|
|
||||||
wake_up_process(task_timer->task);
|
|
||||||
}
|
|
||||||
|
|
||||||
static long
|
|
||||||
spl_io_schedule_timeout(long time_left)
|
|
||||||
{
|
|
||||||
long expire_time = jiffies + time_left;
|
|
||||||
struct spl_task_timer task_timer;
|
|
||||||
struct timer_list *timer = &task_timer.timer;
|
|
||||||
|
|
||||||
task_timer.task = current;
|
|
||||||
|
|
||||||
timer_setup(timer, __cv_wakeup, 0);
|
|
||||||
|
|
||||||
timer->expires = expire_time;
|
|
||||||
add_timer(timer);
|
|
||||||
|
|
||||||
io_schedule();
|
|
||||||
|
|
||||||
del_timer_sync(timer);
|
|
||||||
|
|
||||||
time_left = expire_time - jiffies;
|
|
||||||
|
|
||||||
return (time_left < 0 ? 0 : time_left);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 'expire_time' argument is an absolute wall clock time in jiffies.
|
* 'expire_time' argument is an absolute wall clock time in jiffies.
|
||||||
* Return value is time left (expire_time - now) or -1 if timeout occurred.
|
* Return value is time left (expire_time - now) or -1 if timeout occurred.
|
||||||
@ -290,7 +248,7 @@ __cv_timedwait_common(kcondvar_t *cvp, kmutex_t *mp, clock_t expire_time,
|
|||||||
*/
|
*/
|
||||||
mutex_exit(mp);
|
mutex_exit(mp);
|
||||||
if (io)
|
if (io)
|
||||||
time_left = spl_io_schedule_timeout(time_left);
|
time_left = io_schedule_timeout(time_left);
|
||||||
else
|
else
|
||||||
time_left = schedule_timeout(time_left);
|
time_left = schedule_timeout(time_left);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user