From 0ec89529ce14a1bb5af0c01ed86424a10e0e373c Mon Sep 17 00:00:00 2001 From: Shaun Tancheff Date: Tue, 7 Feb 2023 02:18:36 -0600 Subject: [PATCH] LU-16534 build: Prefer timer_delete[_sync] Linux commit v6.1-rc1-7-g9a5a30568697 timers: Get rid of del_singleshot_timer_sync() Linux commit v6.1-rc1-11-g9b13df3fb64e timers: Rename del_timer_sync() to timer_delete_sync() Linux commit v6.1-rc1-12-gbb663f0f3c39 timers: Rename del_timer() to timer_delete() Prefer timer_delete_sync() to del_singleshot_timer_sync() Prefer timer_delete_sync() to del_timer_sync() Prefer del_timer() to timer_delete() Provide del_timer and del_timer_sync when timer_delete[_sync] is not available Test-Parameters: trivial HPE-bug-id: LUS-11470 Signed-off-by: Shaun Tancheff Change-Id: I4c946c315a83482dd0bd69e5e89f0302a67bf81c Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/49922 Tested-by: jenkins Tested-by: Maloo Reviewed-by: jsimmons Reviewed-by: Andreas Dilger Reviewed-by: Oleg Drokin --- contrib/scripts/spelling.txt | 3 +++ libcfs/autoconf/lustre-libcfs.m4 | 58 ++++++++++++++++++++++++++++++++++++++++ lnet/klnds/gnilnd/gnilnd_cb.c | 8 +++--- lnet/klnds/gnilnd/gnilnd_conn.c | 2 +- lnet/klnds/kfilnd/kfilnd_tn.c | 2 +- lnet/lnet/net_fault.c | 4 +-- lustre/ldlm/ldlm_lockd.c | 2 +- lustre/lod/lod_qos.c | 2 +- lustre/osp/osp_precreate.c | 6 ++--- lustre/ptlrpc/gss/gss_keyring.c | 2 +- lustre/ptlrpc/service.c | 6 ++--- 11 files changed, 78 insertions(+), 17 deletions(-) diff --git a/contrib/scripts/spelling.txt b/contrib/scripts/spelling.txt index b79e5a5..8f6dd2c 100644 --- a/contrib/scripts/spelling.txt +++ b/contrib/scripts/spelling.txt @@ -102,6 +102,9 @@ msecs_to_jiffies||cfs_time_seconds DEFINE_TIMER||CFS_DEFINE_TIMER define OBD_CONNECT||see "XXX README XXX" below and contact adilger@whamcloud.com __u[136][624] ocd_||see "XXX README XXX" below and contact adilger@whamcloud.com +del_timer||timer_delete +del_timer_sync||timer_delete_sync +del_singleshot_timer_sync||timer_delete_sync EWOULDBLOCK||EAGAIN container_of0||container_of_safe DN_MAX_BONUSLEN||DN_BONUS_SIZE(dnodesize) diff --git a/libcfs/autoconf/lustre-libcfs.m4 b/libcfs/autoconf/lustre-libcfs.m4 index eb6dac2..3794134 100644 --- a/libcfs/autoconf/lustre-libcfs.m4 +++ b/libcfs/autoconf/lustre-libcfs.m4 @@ -2264,6 +2264,58 @@ AC_DEFUN([LIBCFS_BIO_ALLOC_WITH_BDEV],[ ]) ]) # LIBCFS_BIO_ALLOC_WITH_BDEV +# +# LIBCFS_TIMER_DELETE_SYNC +# +# Linux commit v6.1-rc1-7-g9a5a30568697 +# timers: Get rid of del_singleshot_timer_sync() +# Linux commit v6.1-rc1-11-g9b13df3fb64e +# timers: Rename del_timer_sync() to timer_delete_sync() +# +AC_DEFUN([LIBCFS_SRC_TIMER_DELETE_SYNC],[ + LB2_LINUX_TEST_SRC([timer_delete_sync], [ + #include + ],[ + struct timer_list *timer = NULL; + (void)timer_delete_sync(timer); + ],[]) +]) +AC_DEFUN([LIBCFS_TIMER_DELETE_SYNC],[ + AC_MSG_CHECKING([is timer_delete_sync() available]) + LB2_LINUX_TEST_RESULT([timer_delete_sync], [ + AC_DEFINE(HAVE_TIMER_DELETE_SYNC, 1, + [timer_delete_sync() is available]) + ],[ + AC_DEFINE(timer_delete_sync(t), del_timer_sync(t), + [timer_delete_sync() not is available]) + ]) +]) # LIBCFS_TIMER_DELETE_SYNC + +# +# LIBCFS_TIMER_DELETE_SYNC +# +# Linux commit v6.1-rc1-12-gbb663f0f3c39 +# timers: Rename del_timer() to timer_delete() +# +AC_DEFUN([LIBCFS_SRC_TIMER_DELETE],[ + LB2_LINUX_TEST_SRC([timer_delete], [ + #include + ],[ + struct timer_list *timer = NULL; + (void)timer_delete(timer); + ],[]) +]) +AC_DEFUN([LIBCFS_TIMER_DELETE],[ + AC_MSG_CHECKING([is timer_delete() available]) + LB2_LINUX_TEST_RESULT([timer_delete], [ + AC_DEFINE(HAVE_TIMER_DELETE, 1, + [timer_delete() is available]) + ],[ + AC_DEFINE(timer_delete(t), del_timer(t), + [timer_delete() not is available]) + ]) +]) # LIBCFS_TIMER_DELETE + dnl # dnl # Generate and compile all of the kernel API test cases to determine dnl # which interfaces are available. By invoking the kernel build system @@ -2404,6 +2456,9 @@ AC_DEFUN([LIBCFS_PROG_LINUX_SRC], [ # 5.17 LIBCFS_SRC_PDE_DATA_EXISTS LIBCFS_SRC_BIO_ALLOC_WITH_BDEV + # 6.2 + LIBCFS_SRC_TIMER_DELETE_SYNC + LIBCFS_SRC_TIMER_DELETE LB2_LINUX_TEST_COMPILE_ALL([libcfs], [for available kernel interfaces to libcfs]) @@ -2546,6 +2601,9 @@ AC_DEFUN([LIBCFS_PROG_LINUX_RESULTS], [ # 5.17 LIBCFS_PDE_DATA_EXISTS LIBCFS_BIO_ALLOC_WITH_BDEV + # 6.2 + LIBCFS_TIMER_DELETE_SYNC + LIBCFS_TIMER_DELETE ]) # diff --git a/lnet/klnds/gnilnd/gnilnd_cb.c b/lnet/klnds/gnilnd/gnilnd_cb.c index 3ed3dad..b2fad14 100644 --- a/lnet/klnds/gnilnd/gnilnd_cb.c +++ b/lnet/klnds/gnilnd/gnilnd_cb.c @@ -2986,7 +2986,7 @@ kgnilnd_reaper(void *arg) CDEBUG(D_INFO, "awake after schedule\n"); } - del_singleshot_timer_sync(&timer); + timer_delete_sync(&timer); spin_lock(&kgnilnd_data.kgn_reaper_lock); finish_wait(&kgnilnd_data.kgn_reaper_waitq, &wait); continue; @@ -3803,7 +3803,7 @@ kgnilnd_process_rdmaq(kgn_device_t *dev) /* if we think we need to adjust, take lock to serialize and recheck */ spin_lock(&dev->gnd_rdmaq_lock); if (time_after_eq(jiffies, dev->gnd_rdmaq_deadline)) { - del_singleshot_timer_sync(&dev->gnd_rdmaq_timer); + timer_delete_sync(&dev->gnd_rdmaq_timer); dead_bump = cfs_time_seconds(1) / *kgnilnd_tunables.kgn_rdmaq_intervals; @@ -4634,7 +4634,7 @@ kgnilnd_process_mapped_tx(kgn_device_t *dev) spin_lock(&dev->gnd_lock); if (list_empty(&dev->gnd_map_tx)) { /* if the list is empty make sure we dont have a timer running */ - del_singleshot_timer_sync(&dev->gnd_map_timer); + timer_delete_sync(&dev->gnd_map_timer); spin_unlock(&dev->gnd_lock); RETURN(0); } @@ -4661,7 +4661,7 @@ kgnilnd_process_mapped_tx(kgn_device_t *dev) } /* delete the previous timer if it exists */ - del_singleshot_timer_sync(&dev->gnd_map_timer); + timer_delete_sync(&dev->gnd_map_timer); /* stash the last map version to let us know when a good one was seen */ last_map_version = dev->gnd_map_version; diff --git a/lnet/klnds/gnilnd/gnilnd_conn.c b/lnet/klnds/gnilnd/gnilnd_conn.c index d7b6ef3..f887762 100644 --- a/lnet/klnds/gnilnd/gnilnd_conn.c +++ b/lnet/klnds/gnilnd/gnilnd_conn.c @@ -2545,7 +2545,7 @@ kgnilnd_dgram_mover(void *arg) deadline = jiffies + cfs_time_seconds(*kgnilnd_tunables.kgn_dgram_timeout); } - del_singleshot_timer_sync(&timer.timer); + timer_delete_sync(&timer.timer); finish_wait(&dev->gnd_dgram_waitq, &wait); } diff --git a/lnet/klnds/kfilnd/kfilnd_tn.c b/lnet/klnds/kfilnd/kfilnd_tn.c index 1056e03..59fe030 100644 --- a/lnet/klnds/kfilnd/kfilnd_tn.c +++ b/lnet/klnds/kfilnd/kfilnd_tn.c @@ -485,7 +485,7 @@ static void kfilnd_tn_timeout(cfs_timer_cb_arg_t data) static bool kfilnd_tn_timeout_cancel(struct kfilnd_transaction *tn) { - return del_timer(&tn->timeout_timer); + return timer_delete(&tn->timeout_timer); } static void kfilnd_tn_timeout_enable(struct kfilnd_transaction *tn) diff --git a/lnet/lnet/net_fault.c b/lnet/lnet/net_fault.c index 98f9b31..8b1f2f2 100644 --- a/lnet/lnet/net_fault.c +++ b/lnet/lnet/net_fault.c @@ -655,7 +655,7 @@ delayed_msg_check(struct lnet_delay_rule *rule, bool all, } if (list_empty(&rule->dl_msg_list)) { - del_timer(&rule->dl_timer); + timer_delete(&rule->dl_timer); rule->dl_msg_send = -1; } else if (!list_empty(msg_list)) { @@ -941,7 +941,7 @@ lnet_delay_rule_del(lnet_nid_t src, lnet_nid_t dst, bool shutdown) list_for_each_entry_safe(rule, tmp, &rule_list, dl_link) { list_del_init(&rule->dl_link); - del_timer_sync(&rule->dl_timer); + timer_delete_sync(&rule->dl_timer); delayed_msg_check(rule, true, &msg_list); delay_rule_decref(rule); /* -1 for the_lnet.ln_delay_rules */ n++; diff --git a/lustre/ldlm/ldlm_lockd.c b/lustre/ldlm/ldlm_lockd.c index 8ae0a22..b481894 100644 --- a/lustre/ldlm/ldlm_lockd.c +++ b/lustre/ldlm/ldlm_lockd.c @@ -511,7 +511,7 @@ static int __ldlm_del_waiting_lock(struct ldlm_lock *lock) /* Removing the head of the list, adjust timer. */ if (list_next == &waiting_locks_list) { /* No more, just cancel. */ - del_timer(&waiting_locks_timer); + timer_delete(&waiting_locks_timer); } else { time64_t now = ktime_get_seconds(); struct ldlm_lock *next; diff --git a/lustre/lod/lod_qos.c b/lustre/lod/lod_qos.c index badc064..77ff8dd 100644 --- a/lustre/lod/lod_qos.c +++ b/lustre/lod/lod_qos.c @@ -1582,7 +1582,7 @@ static int lod_ost_alloc_qos(const struct lu_env *env, struct lod_object *lo, /* Do actual allocation, use write lock here. */ rc = down_write_killable(&lod->lod_ost_descs.ltd_qos.lq_rw_sem); - del_singleshot_timer_sync(&timer.timer); + timer_delete_sync(&timer.timer); kernel_sigaction(SIGKILL, SIG_IGN); if (rc) { flush_signals(current); diff --git a/lustre/osp/osp_precreate.c b/lustre/osp/osp_precreate.c index 5ea92e4..8502574 100644 --- a/lustre/osp/osp_precreate.c +++ b/lustre/osp/osp_precreate.c @@ -242,7 +242,7 @@ static int osp_statfs_update(const struct lu_env *env, struct osp_device *d) /* * no updates till reply */ - del_timer(&d->opd_statfs_timer); + timer_delete(&d->opd_statfs_timer); d->opd_statfs_fresh_till = ktime_add_ns(ktime_get(), expire); d->opd_statfs_update_in_progress = 1; @@ -296,7 +296,7 @@ void osp_statfs_need_now(struct osp_device *d) * is replied */ d->opd_statfs_fresh_till = ktime_sub_ns(ktime_get(), NSEC_PER_SEC); - del_timer(&d->opd_statfs_timer); + timer_delete(&d->opd_statfs_timer); wake_up(&d->opd_pre_waitq); } } @@ -1885,7 +1885,7 @@ void osp_statfs_fini(struct osp_device *d) struct task_struct *task = d->opd_pre_task; ENTRY; - del_timer(&d->opd_statfs_timer); + timer_delete(&d->opd_statfs_timer); d->opd_pre_task = NULL; if (task) diff --git a/lustre/ptlrpc/gss/gss_keyring.c b/lustre/ptlrpc/gss/gss_keyring.c index 930d5c6..824197b 100644 --- a/lustre/ptlrpc/gss/gss_keyring.c +++ b/lustre/ptlrpc/gss/gss_keyring.c @@ -149,7 +149,7 @@ void ctx_clear_timer_kr(struct ptlrpc_cli_ctx *ctx) CDEBUG(D_SEC, "ctx %p, key %p\n", ctx, gctx_kr->gck_key); - del_singleshot_timer_sync(timer); + timer_delete_sync(timer); } static diff --git a/lustre/ptlrpc/service.c b/lustre/ptlrpc/service.c index 4cda678..b0a6471 100644 --- a/lustre/ptlrpc/service.c +++ b/lustre/ptlrpc/service.c @@ -1264,7 +1264,7 @@ static void ptlrpc_at_set_timer(struct ptlrpc_service_part *svcpt) time64_t next; if (array->paa_count == 0) { - del_timer(&svcpt->scp_at_timer); + timer_delete(&svcpt->scp_at_timer); return; } @@ -3405,7 +3405,7 @@ ptlrpc_service_del_atimer(struct ptlrpc_service *svc) /* early disarm AT timer... */ ptlrpc_service_for_each_part(svcpt, i, svc) { if (svcpt->scp_service != NULL) - del_timer(&svcpt->scp_at_timer); + timer_delete(&svcpt->scp_at_timer); } } @@ -3574,7 +3574,7 @@ ptlrpc_service_free(struct ptlrpc_service *svc) break; /* In case somebody rearmed this in the meantime */ - del_timer(&svcpt->scp_at_timer); + timer_delete(&svcpt->scp_at_timer); array = &svcpt->scp_at_array; if (array->paa_reqs_array != NULL) { -- 1.8.3.1