Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package drbd for openSUSE:Factory checked in at 2026-03-31 15:23:17 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/drbd (Old) and /work/SRC/openSUSE:Factory/.drbd.new.1999 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "drbd" Tue Mar 31 15:23:17 2026 rev:122 rq:1343855 version:9.1.23 Changes: -------- --- /work/SRC/openSUSE:Factory/drbd/drbd.changes 2026-02-26 18:58:36.750449129 +0100 +++ /work/SRC/openSUSE:Factory/.drbd.new.1999/drbd.changes 2026-03-31 15:24:39.690249719 +0200 @@ -0,0 +1,12 @@ +Tue Mar 31 08:16:33 UTC 2026 - Glass Su <[email protected]> + +- drbd: replace suse special patches with upstream patches (boo#1261192) + * add upstream patches + + 0001-drbd-Switch-rename-to-timer_delete-_sync.patch + + 0001-compat-Rename-from_timer-to-timer_container_of.patch + + 0001-compat-test-for-pfn_t.patch + * remove suse special patches + - boo1244669-fix_build_error_against_kernel_v6.15.patch + - boo1248426-fix_build_error_against_kernel_v6.16.1.patch + - boo1251834-fix_build_error_against_kernel_v6.17.0.patch + Old: ---- boo1244669-fix_build_error_against_kernel_v6.15.patch boo1248426-fix_build_error_against_kernel_v6.16.1.patch boo1251834-fix_build_error_against_kernel_v6.17.0.patch New: ---- 0001-compat-Rename-from_timer-to-timer_container_of.patch 0001-compat-test-for-pfn_t.patch 0001-drbd-Switch-rename-to-timer_delete-_sync.patch ----------(Old B)---------- Old: * remove suse special patches - boo1244669-fix_build_error_against_kernel_v6.15.patch - boo1248426-fix_build_error_against_kernel_v6.16.1.patch Old: - boo1244669-fix_build_error_against_kernel_v6.15.patch - boo1248426-fix_build_error_against_kernel_v6.16.1.patch - boo1251834-fix_build_error_against_kernel_v6.17.0.patch Old: - boo1248426-fix_build_error_against_kernel_v6.16.1.patch - boo1251834-fix_build_error_against_kernel_v6.17.0.patch ----------(Old E)---------- ----------(New B)---------- New: + 0001-drbd-Switch-rename-to-timer_delete-_sync.patch + 0001-compat-Rename-from_timer-to-timer_container_of.patch + 0001-compat-test-for-pfn_t.patch New: + 0001-compat-Rename-from_timer-to-timer_container_of.patch + 0001-compat-test-for-pfn_t.patch * remove suse special patches New: * add upstream patches + 0001-drbd-Switch-rename-to-timer_delete-_sync.patch + 0001-compat-Rename-from_timer-to-timer_container_of.patch ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ drbd.spec ++++++ --- /var/tmp/diff_new_pack.83e1eZ/_old 2026-03-31 15:24:40.814296499 +0200 +++ /var/tmp/diff_new_pack.83e1eZ/_new 2026-03-31 15:24:40.814296499 +0200 @@ -40,13 +40,13 @@ Patch0002: 0001-drbd-build-deal-with-potentially-relative-paths-in-p.patch Patch0003: 0001-compat-follow-Linux-6.14-debugfs_change_name.patch Patch0004: drbd-convert-bind-and-connect-callbacks-to-use-socka.patch +Patch0005: 0001-drbd-Switch-rename-to-timer_delete-_sync.patch +Patch0006: 0001-compat-Rename-from_timer-to-timer_container_of.patch +Patch0007: 0001-compat-test-for-pfn_t.patch # suse special patch Patch1001: bsc-1025089_fix-resync-finished-with-syncs-have-bits-set.patch Patch1002: suse-coccinelle.patch -Patch1003: boo1244669-fix_build_error_against_kernel_v6.15.patch -Patch1004: boo1248426-fix_build_error_against_kernel_v6.16.1.patch -Patch1005: boo1251834-fix_build_error_against_kernel_v6.17.0.patch ######################## #https://github.com/openSUSE/rpmlint-checks/blob/master/KMPPolicyCheck.py ++++++ 0001-compat-Rename-from_timer-to-timer_container_of.patch ++++++ >From 5e4459515f79e900a32a7ac0cbbc7297d383257e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20B=C3=B6hmwalder?= <[email protected]> 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 <[email protected]>", "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 ++++++ 0001-compat-test-for-pfn_t.patch ++++++ >From b9e7ceaeb4937ccece18d5353fd10b57201a0726 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20B=C3=B6hmwalder?= <[email protected]> Date: Tue, 11 Nov 2025 17:59:58 +0100 Subject: [PATCH] compat: test for pfn_t The pfn_unused hack can also be removed since we don't support any kernels before 4.18 anymore. --- drbd/drbd-kernel-compat/gen_patch_names.c | 10 ++++++++++ drbd/drbd-kernel-compat/tests/have_pfn_t.c | 5 +++++ drbd/drbd_dax_pmem.c | 7 ++----- 3 files changed, 17 insertions(+), 5 deletions(-) create mode 100644 drbd/drbd-kernel-compat/tests/have_pfn_t.c diff --git a/drbd/drbd-kernel-compat/gen_patch_names.c b/drbd/drbd-kernel-compat/gen_patch_names.c index f178476ec..39f19d802 100644 --- a/drbd/drbd-kernel-compat/gen_patch_names.c +++ b/drbd/drbd-kernel-compat/gen_patch_names.c @@ -521,8 +521,18 @@ int main(int argc, char **argv) patch(1, "genhd_fl_no_part", true, false, COMPAT_HAVE_GENHD_FL_NO_PART, "present"); +#if defined(COMPAT_HAVE_PFN_T) + /* A few notes: + * 1. dax_direct_access_takes_mode depends on the pfn_t type, so if we don't have that, we + * can't rely on the result of the test. + * 2. If pfn_t does not exist, the kernel is new enough that dax_direct_access definitely + * takes the mode parameter anyway, making the dax_direct_access_takes_mode test redundant. + * 3. pfn_t is only used within the dax_direct_access_takes_mode test, not in the actual + * code, so we don't need a separate cocci patch for it. */ + patch(1, "dax_direct_access", true, false, COMPAT_DAX_DIRECT_ACCESS_TAKES_MODE, "takes_mode"); +#endif patch(1, "bdev_max_discard_sectors", true, false, COMPAT_HAVE_BDEV_MAX_DISCARD_SECTORS, "present"); diff --git a/drbd/drbd-kernel-compat/tests/have_pfn_t.c b/drbd/drbd-kernel-compat/tests/have_pfn_t.c new file mode 100644 index 000000000..7a3e7998e --- /dev/null +++ b/drbd/drbd-kernel-compat/tests/have_pfn_t.c @@ -0,0 +1,5 @@ +/* { "version": "v6.17-rc1", "commit": "21aa65bf82a78c1e70447a45a85e533689b7f1a7", "comment": "pfn_t was removed", "author": "Alistair Popple <[email protected]>", "date": "Thu Jun 19 18:58:05 2025 +1000" } */ + +#include <linux/pfn_t.h> + +pfn_t foo; diff --git a/drbd/drbd_dax_pmem.c b/drbd/drbd_dax_pmem.c index fff09db74..6f29dfd76 100644 --- a/drbd/drbd_dax_pmem.c +++ b/drbd/drbd_dax_pmem.c @@ -22,7 +22,6 @@ #include <linux/vmalloc.h> #include <linux/slab.h> #include <linux/dax.h> -#include <linux/pfn_t.h> #include <linux/libnvdimm.h> #include <linux/blkdev.h> #include "drbd_int.h" @@ -35,11 +34,10 @@ static int map_superblock_for_dax(struct drbd_backing_dev *bdev, struct dax_devi pgoff_t pgoff = bdev->md.md_offset >> (PAGE_SHIFT - SECTOR_SHIFT); void *kaddr; long len; - pfn_t pfn_unused; /* before 4.18 it is required to pass in non-NULL */ int id; id = dax_read_lock(); - len = dax_direct_access(dax_dev, pgoff, want, DAX_ACCESS, &kaddr, &pfn_unused); + len = dax_direct_access(dax_dev, pgoff, want, DAX_ACCESS, &kaddr, NULL); dax_read_unlock(id); if (len < want) @@ -93,11 +91,10 @@ int drbd_dax_map(struct drbd_backing_dev *bdev) long al_offset_byte = (al_sector - first_sector) << SECTOR_SHIFT; void *kaddr; long len; - pfn_t pfn_unused; /* before 4.18 it is required to pass in non-NULL */ int id; id = dax_read_lock(); - len = dax_direct_access(dax_dev, pgoff, want, DAX_ACCESS, &kaddr, &pfn_unused); + len = dax_direct_access(dax_dev, pgoff, want, DAX_ACCESS, &kaddr, NULL); dax_read_unlock(id); if (len < want) -- 2.51.0 ++++++ 0001-drbd-Switch-rename-to-timer_delete-_sync.patch ++++++ >From a7cf5c765bc31c2656b5f96e4630e06ce975121b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20B=C3=B6hmwalder?= <[email protected]> Date: Tue, 6 May 2025 16:19:14 +0200 Subject: [PATCH] drbd: Switch/rename to timer_delete[_sync]() Following upstream commit 8fa7292f ("treewide: Switch/rename to timer_delete[_sync]()"). --- .../cocci/timer_delete__no_present.cocci | 11 +++++++++++ drbd/drbd-kernel-compat/gen_patch_names.c | 3 +++ drbd/drbd-kernel-compat/tests/have_timer_delete.c | 8 ++++++++ drbd/drbd_main.c | 4 ++-- drbd/drbd_nl.c | 2 +- drbd/drbd_receiver.c | 8 ++++---- drbd/drbd_state.c | 2 +- 7 files changed, 30 insertions(+), 8 deletions(-) create mode 100644 drbd/drbd-kernel-compat/cocci/timer_delete__no_present.cocci create mode 100644 drbd/drbd-kernel-compat/tests/have_timer_delete.c diff --git a/drbd/drbd-kernel-compat/cocci/timer_delete__no_present.cocci b/drbd/drbd-kernel-compat/cocci/timer_delete__no_present.cocci new file mode 100644 index 000000000..7488fceac --- /dev/null +++ b/drbd/drbd-kernel-compat/cocci/timer_delete__no_present.cocci @@ -0,0 +1,11 @@ +@@ +@@ +( +- timer_delete ++ del_timer + (...) +| +- timer_delete_sync ++ del_timer_sync + (...) +) diff --git a/drbd/drbd-kernel-compat/gen_patch_names.c b/drbd/drbd-kernel-compat/gen_patch_names.c index 1362ed390..e702b2ba5 100644 --- a/drbd/drbd-kernel-compat/gen_patch_names.c +++ b/drbd/drbd-kernel-compat/gen_patch_names.c @@ -623,6 +623,9 @@ int main(int argc, char **argv) patch(1, "struct_sockaddr_unsized", true, false, COMPAT_HAVE_STRUCT_SOCKADDR_UNSIZED, "present"); + patch(1, "timer_delete", true, false, + COMPAT_HAVE_TIMER_DELETE, "present"); + /* #define BLKDEV_ISSUE_ZEROOUT_EXPORTED */ /* #define BLKDEV_ZERO_NOUNMAP */ diff --git a/drbd/drbd-kernel-compat/tests/have_timer_delete.c b/drbd/drbd-kernel-compat/tests/have_timer_delete.c new file mode 100644 index 000000000..4cb5074bd --- /dev/null +++ b/drbd/drbd-kernel-compat/tests/have_timer_delete.c @@ -0,0 +1,8 @@ +/* { "version": "v6.15", "commit": "8fa7292fee5c5240402371ea89ab285ec856c916", "comment": "timer_delete introduced", "author": "Thomas Gleixner <[email protected]>", "date": "Sat Apr 5 10:17:26 2025 +0200" } */ + +#include <linux/timer.h> + +int foo(struct timer_list *t) +{ + return timer_delete(t); +} diff --git a/drbd/drbd_main.c b/drbd/drbd_main.c index edb187707..44247e020 100644 --- a/drbd/drbd_main.c +++ b/drbd/drbd_main.c @@ -4198,7 +4198,7 @@ static void shutdown_connect_timer(struct drbd_connection *connection) void del_connect_timer(struct drbd_connection *connection) { - if (del_timer_sync(&connection->connect_timer)) { + if (timer_delete_sync(&connection->connect_timer)) { kref_debug_put(&connection->kref_debug, 11); kref_put(&connection->kref, drbd_destroy_connection); } @@ -4433,7 +4433,7 @@ static int __drbd_md_sync(struct drbd_device *device, bool maybe) if (!buffer) goto out; - del_timer(&device->md_sync_timer); + timer_delete(&device->md_sync_timer); /* timer may be rearmed by drbd_md_mark_dirty() now. */ if (test_and_clear_bit(MD_DIRTY, &device->flags) || !maybe) { diff --git a/drbd/drbd_nl.c b/drbd/drbd_nl.c index baa32e415..2b4ef3749 100644 --- a/drbd/drbd_nl.c +++ b/drbd/drbd_nl.c @@ -1715,7 +1715,7 @@ drbd_determine_dev_size(struct drbd_device *device, sector_t peer_current_size, /* We do some synchronous IO below, which may take some time. * Clear the timer, to avoid scary "timer expired!" messages, * "Superblock" is written out at least twice below, anyways. */ - del_timer(&device->md_sync_timer); + timer_delete(&device->md_sync_timer); /* We won't change the "al-extents" setting, we just may need * to move the on-disk location of the activity log ringbuffer. diff --git a/drbd/drbd_receiver.c b/drbd/drbd_receiver.c index 6736b5194..4981a1d03 100644 --- a/drbd/drbd_receiver.c +++ b/drbd/drbd_receiver.c @@ -7125,7 +7125,7 @@ retry: drbd_err(resource, "FATAL: Local commit of prepared %u failed! \n", reply->tid); - del_timer(&resource->twopc_timer); + timer_delete(&resource->twopc_timer); } nested_twopc_request(resource, &request); @@ -8548,9 +8548,9 @@ static void cleanup_resync_leftovers(struct drbd_peer_device *peer_device) atomic_set(&peer_device->rs_pending_cnt, 0); wake_up(&peer_device->device->misc_wait); - del_timer_sync(&peer_device->resync_timer); + timer_delete_sync(&peer_device->resync_timer); resync_timer_fn(&peer_device->resync_timer); - del_timer_sync(&peer_device->start_resync_timer); + timer_delete_sync(&peer_device->start_resync_timer); } static void drain_resync_activity(struct drbd_connection *connection) @@ -8665,7 +8665,7 @@ static void cleanup_remote_state_change(struct drbd_connection *connection) drbd_info(connection, "Aborting %s state change %u commit not possible\n", remote ? "remote" : "local", reply->tid); if (remote) { - del_timer(&resource->twopc_timer); + timer_delete(&resource->twopc_timer); __clear_remote_state_change(resource); } else { enum alt_rv alt_rv = abort_local_transaction(connection, 0); diff --git a/drbd/drbd_state.c b/drbd/drbd_state.c index 0e693c8e3..9ecc713d5 100644 --- a/drbd/drbd_state.c +++ b/drbd/drbd_state.c @@ -4171,7 +4171,7 @@ static int w_after_state_change(struct drbd_work *w, int unused) drbd_disk_str(device->disk_state[NOW])); /* we may need to cancel the md_sync timer */ - del_timer_sync(&device->md_sync_timer); + timer_delete_sync(&device->md_sync_timer); if (have_ldev) send_new_state_to_all_peer_devices(state_change, n_device); -- 2.51.0
