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