File 0030-LU-16534-build-Prefer-timer_delete-_sync.patch of Package lustre_2_15

From 0ec89529ce14a1bb5af0c01ed86424a10e0e373c Mon Sep 17 00:00:00 2001
From: Shaun Tancheff <shaun.tancheff@hpe.com>
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 <shaun.tancheff@hpe.com>
Change-Id: I4c946c315a83482dd0bd69e5e89f0302a67bf81c
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/49922
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: jsimmons <jsimmons@infradead.org>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
---
 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/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 ++--
 10 files changed, 77 insertions(+), 16 deletions(-)

--- a/contrib/scripts/spelling.txt
+++ b/contrib/scripts/spelling.txt
@@ -100,6 +100,9 @@ cfs_time_current_sec||ktime_get_real_sec
 CLASSERT||BUILD_BUG_ON()
 msecs_to_jiffies||cfs_time_seconds
 DEFINE_TIMER||CFS_DEFINE_TIMER
+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)
--- a/libcfs/autoconf/lustre-libcfs.m4
+++ b/libcfs/autoconf/lustre-libcfs.m4
@@ -2318,11 +2318,66 @@ AC_DEFUN([LIBCFS_PROG_LINUX_SRC], [
 	LIBCFS_SRC_PARAM_SET_UINT_MINMAX
 	# 5.17
 	LIBCFS_SRC_PDE_DATA_EXISTS
+	# 6.2
+	LIBCFS_SRC_TIMER_DELETE_SYNC
+	LIBCFS_SRC_TIMER_DELETE
 
 	LB2_LINUX_TEST_COMPILE_ALL([libcfs],
 		[for available kernel interfaces to libcfs])
 ])
 
+#
+# 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 <linux/timer.h>
+	],[
+		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 <linux/timer.h>
+	],[
+		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 # Check results of kernel interface tests.
 dnl #
@@ -2457,6 +2512,9 @@ AC_DEFUN([LIBCFS_PROG_LINUX_RESULTS], [
 	LIBCFS_PARAM_SET_UINT_MINMAX
 	# 5.17
 	LIBCFS_PDE_DATA_EXISTS
+	# 6.2
+	LIBCFS_TIMER_DELETE_SYNC
+	LIBCFS_TIMER_DELETE
 ])
 
 #
--- a/lnet/klnds/gnilnd/gnilnd_cb.c
+++ b/lnet/klnds/gnilnd/gnilnd_cb.c
@@ -2988,7 +2988,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;
@@ -3805,7 +3805,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;
 
@@ -4636,7 +4636,7 @@ kgnilnd_process_mapped_tx(kgn_device_t *
 	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);
 	}
@@ -4663,7 +4663,7 @@ kgnilnd_process_mapped_tx(kgn_device_t *
 	}
 
 	/* 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;
 
--- 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);
 	}
 
--- a/lnet/lnet/net_fault.c
+++ b/lnet/lnet/net_fault.c
@@ -649,7 +649,7 @@ delayed_msg_check(struct lnet_delay_rule
 	}
 
 	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)) {
@@ -936,7 +936,7 @@ lnet_delay_rule_del(lnet_nid_t src, lnet
 	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++;
--- a/lustre/ldlm/ldlm_lockd.c
+++ b/lustre/ldlm/ldlm_lockd.c
@@ -509,7 +509,7 @@ static int __ldlm_del_waiting_lock(struc
 		/* 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;
--- a/lustre/lod/lod_qos.c
+++ b/lustre/lod/lod_qos.c
@@ -1488,7 +1488,7 @@ static int lod_ost_alloc_qos(const struc
 		/* 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);
--- a/lustre/osp/osp_precreate.c
+++ b/lustre/osp/osp_precreate.c
@@ -239,7 +239,7 @@ static int osp_statfs_update(const struc
 	/*
 	 * 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;
 
@@ -293,7 +293,7 @@ void osp_statfs_need_now(struct osp_devi
 		 * 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);
 	}
 }
@@ -1837,7 +1837,7 @@ void osp_statfs_fini(struct osp_device *
 	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)
--- 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_cl
 
         CDEBUG(D_SEC, "ctx %p, key %p\n", ctx, gctx_kr->gck_key);
 
-        del_singleshot_timer_sync(timer);
+        timer_delete_sync(timer);
 }
 
 static
--- a/lustre/ptlrpc/service.c
+++ b/lustre/ptlrpc/service.c
@@ -1248,7 +1248,7 @@ static void ptlrpc_at_set_timer(struct p
 	time64_t next;
 
 	if (array->paa_count == 0) {
-		del_timer(&svcpt->scp_at_timer);
+		timer_delete(&svcpt->scp_at_timer);
 		return;
 	}
 
@@ -3390,7 +3390,7 @@ ptlrpc_service_del_atimer(struct ptlrpc_
 	/* 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);
 	}
 }
 
@@ -3558,7 +3558,7 @@ ptlrpc_service_free(struct ptlrpc_servic
 			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) {
openSUSE Build Service is sponsored by