File 0001-compat-Rename-from_timer-to-timer_container_of.patch of Package drbd

From 5e4459515f79e900a32a7ac0cbbc7297d383257e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Christoph=20B=C3=B6hmwalder?=
 <christoph.boehmwalder@linbit.com>
Date: Wed, 11 Jun 2025 17:34:48 +0200
Subject: [PATCH] compat: Rename from_timer() to timer_container_of()

Corresponds to upstream commit
41cb08555c41 ("treewide, timers: Rename from_timer() to timer_container_of()").
---
 .../cocci/timer_container_of__no_present.cocci      |  5 +++++
 drbd/drbd-kernel-compat/gen_patch_names.c           |  3 +++
 .../tests/have_timer_container_of.c                 | 13 +++++++++++++
 drbd/drbd_main.c                                    |  4 ++--
 drbd/drbd_receiver.c                                |  4 ++--
 drbd/drbd_req.c                                     |  2 +-
 drbd/drbd_sender.c                                  |  5 +++--
 7 files changed, 29 insertions(+), 7 deletions(-)
 create mode 100644 drbd/drbd-kernel-compat/cocci/timer_container_of__no_present.cocci
 create mode 100644 drbd/drbd-kernel-compat/tests/have_timer_container_of.c

diff --git a/drbd/drbd-kernel-compat/cocci/timer_container_of__no_present.cocci b/drbd/drbd-kernel-compat/cocci/timer_container_of__no_present.cocci
new file mode 100644
index 000000000..241741f0f
--- /dev/null
+++ b/drbd/drbd-kernel-compat/cocci/timer_container_of__no_present.cocci
@@ -0,0 +1,5 @@
+@@
+@@
+- timer_container_of
++ from_timer
+ (...)
diff --git a/drbd/drbd-kernel-compat/gen_patch_names.c b/drbd/drbd-kernel-compat/gen_patch_names.c
index e702b2ba5..f178476ec 100644
--- a/drbd/drbd-kernel-compat/gen_patch_names.c
+++ b/drbd/drbd-kernel-compat/gen_patch_names.c
@@ -626,6 +626,9 @@ int main(int argc, char **argv)
 	patch(1, "timer_delete", true, false,
 	      COMPAT_HAVE_TIMER_DELETE, "present");
 
+	patch(1, "timer_container_of", true, false,
+	      COMPAT_HAVE_TIMER_CONTAINER_OF, "present");
+
 /* #define BLKDEV_ISSUE_ZEROOUT_EXPORTED */
 /* #define BLKDEV_ZERO_NOUNMAP */
 
diff --git a/drbd/drbd-kernel-compat/tests/have_timer_container_of.c b/drbd/drbd-kernel-compat/tests/have_timer_container_of.c
new file mode 100644
index 000000000..654994a10
--- /dev/null
+++ b/drbd/drbd-kernel-compat/tests/have_timer_container_of.c
@@ -0,0 +1,13 @@
+/* { "version": "v6.16-rc1", "commit": "41cb08555c4164996d67c78b3bf1c658075b75f1", "comment": "from_timer renamed to timer_container_of", "author": "Ingo Molnar <mingo@kernel.org>", "date": "Fri May 9 07:51:14 2025 +0200" } */
+
+#include <linux/timer.h>
+
+struct bar
+{
+	struct timer_list timer;
+};
+
+void foo(struct timer_list *t)
+{
+	struct bar *b = timer_container_of(b, t, timer);
+}
diff --git a/drbd/drbd_main.c b/drbd/drbd_main.c
index 44247e020..c1d66aba0 100644
--- a/drbd/drbd_main.c
+++ b/drbd/drbd_main.c
@@ -3448,7 +3448,7 @@ void drbd_flush_peer_acks(struct drbd_resource *resource)
 
 static void peer_ack_timer_fn(struct timer_list *t)
 {
-	struct drbd_resource *resource = from_timer(resource, t, peer_ack_timer);
+	struct drbd_resource *resource = timer_container_of(resource, t, peer_ack_timer);
 
 	drbd_flush_peer_acks(resource);
 }
@@ -5669,7 +5669,7 @@ bool drbd_md_test_peer_flag(struct drbd_peer_device *peer_device, enum mdf_peer_
 
 static void md_sync_timer_fn(struct timer_list *t)
 {
-	struct drbd_device *device = from_timer(device, t, md_sync_timer);
+	struct drbd_device *device = timer_container_of(device, t, md_sync_timer);
 	drbd_device_post_work(device, MD_SYNC);
 }
 
diff --git a/drbd/drbd_receiver.c b/drbd/drbd_receiver.c
index 4981a1d03..d1fac9260 100644
--- a/drbd/drbd_receiver.c
+++ b/drbd/drbd_receiver.c
@@ -862,7 +862,7 @@ void wait_initial_states_received(struct drbd_connection *connection)
 
 void connect_timer_fn(struct timer_list *t)
 {
-	struct drbd_connection *connection = from_timer(connection, t, connect_timer);
+	struct drbd_connection *connection = timer_container_of(connection, t, connect_timer);
 
 	drbd_queue_work(&connection->sender_work, &connection->connect_timer_work);
 }
@@ -6334,7 +6334,7 @@ static void drbd_abort_twopc(struct drbd_resource *resource)
 
 void twopc_timer_fn(struct timer_list *t)
 {
-	struct drbd_resource *resource = from_timer(resource, t, twopc_timer);
+	struct drbd_resource *resource = timer_container_of(resource, t, twopc_timer);
 	unsigned long irq_flags;
 
 	write_lock_irqsave(&resource->state_rwlock, irq_flags);
diff --git a/drbd/drbd_req.c b/drbd/drbd_req.c
index 226f87677..bb23604b5 100644
--- a/drbd/drbd_req.c
+++ b/drbd/drbd_req.c
@@ -2588,7 +2588,7 @@ static bool net_timeout_reached(struct drbd_request *net_req,
 
 void request_timer_fn(struct timer_list *t)
 {
-	struct drbd_device *device = from_timer(device, t, request_timer);
+	struct drbd_device *device = timer_container_of(device, t, request_timer);
 	struct drbd_resource *resource = device->resource;
 	struct drbd_connection *connection;
 	struct drbd_request *req_read, *req_write;
diff --git a/drbd/drbd_sender.c b/drbd/drbd_sender.c
index c3e085736..ba2163039 100644
--- a/drbd/drbd_sender.c
+++ b/drbd/drbd_sender.c
@@ -496,7 +496,7 @@ int w_send_uuids(struct drbd_work *w, int cancel)
 
 void resync_timer_fn(struct timer_list *t)
 {
-	struct drbd_peer_device *peer_device = from_timer(peer_device, t, resync_timer);
+	struct drbd_peer_device *peer_device = timer_container_of(peer_device, t, resync_timer);
 
 	drbd_queue_work_if_unqueued(
 		&peer_device->connection->sender_work,
@@ -2067,7 +2067,8 @@ void drbd_rs_controller_reset(struct drbd_peer_device *peer_device)
 
 void start_resync_timer_fn(struct timer_list *t)
 {
-	struct drbd_peer_device *peer_device = from_timer(peer_device, t, start_resync_timer);
+	struct drbd_peer_device *peer_device = timer_container_of(peer_device, t,
+			start_resync_timer);
 	drbd_peer_device_post_work(peer_device, RS_START);
 }
 
-- 
2.51.0

openSUSE Build Service is sponsored by