1 Commits

Author SHA256 Message Date
d666e0663f Sync changes to SLFO-1.2 branch 2025-08-20 09:12:50 +02:00
6 changed files with 110 additions and 316 deletions

View File

@@ -1,122 +0,0 @@
From a74b9bf08912945c1548c1ba675952bd97c9f84b Mon Sep 17 00:00:00 2001
From: Philipp Reisner <philipp.reisner@linbit.com>
Date: Wed, 9 Apr 2025 17:49:38 +0200
Subject: [PATCH] compat: follow Linux-6.14 (debugfs_change_name())
Apart from following the obvious name change from debugfs_rename() to
debugfs_change_name(), the fallthrough compat test showed an
unintentional compilation error since there was no second case label
after the fallthrough statement.
---
.../debugfs_change_name__no_present.cocci | 18 ++++++++++++++++++
drbd/drbd-kernel-compat/gen_patch_names.c | 3 +++
.../tests/have_debugfs_change_name.c | 9 +++++++++
.../tests/have_fallthrough.c | 11 +++++++++--
drbd/drbd_debugfs.c | 10 +++-------
5 files changed, 42 insertions(+), 9 deletions(-)
create mode 100644 drbd/drbd-kernel-compat/cocci/debugfs_change_name__no_present.cocci
create mode 100644 drbd/drbd-kernel-compat/tests/have_debugfs_change_name.c
diff --git a/drbd/drbd-kernel-compat/cocci/debugfs_change_name__no_present.cocci b/drbd/drbd-kernel-compat/cocci/debugfs_change_name__no_present.cocci
new file mode 100644
index 000000000000..1f40061b71a4
--- /dev/null
+++ b/drbd/drbd-kernel-compat/cocci/debugfs_change_name__no_present.cocci
@@ -0,0 +1,18 @@
+@@
+identifier err, resource, new_name;
+@@
+void drbd_debugfs_resource_rename(struct drbd_resource *resource, const char *new_name)
+{
+- int err;
++ struct dentry *new_d;
+
+- err = debugfs_change_name(resource->debugfs_res, "%s", new_name);
+- if (err)
++ new_d = debugfs_rename(drbd_debugfs_resources, resource->debugfs_res,
++ drbd_debugfs_resources, new_name);
++ if (IS_ERR(new_d)) {
+ drbd_err(resource, ... );
++ } else {
++ resource->debugfs_res = new_d;
++ }
+}
diff --git a/drbd/drbd-kernel-compat/gen_patch_names.c b/drbd/drbd-kernel-compat/gen_patch_names.c
index 199ce0845f4d..3e9493527b13 100644
--- a/drbd/drbd-kernel-compat/gen_patch_names.c
+++ b/drbd/drbd-kernel-compat/gen_patch_names.c
@@ -632,6 +632,9 @@ int main(int argc, char **argv)
patch(1, "genlmsg_multicast_allns", true, false,
COMPAT_GENLMSG_MULTICAST_ALLNS_HAS_4_PARAMS, "has_4_params");
+ patch(1, "debugfs_change_name", true, false,
+ COMPAT_HAVE_DEBUGFS_CHANGE_NAME, "present");
+
/* #define BLKDEV_ISSUE_ZEROOUT_EXPORTED */
/* #define BLKDEV_ZERO_NOUNMAP */
diff --git a/drbd/drbd-kernel-compat/tests/have_debugfs_change_name.c b/drbd/drbd-kernel-compat/tests/have_debugfs_change_name.c
new file mode 100644
index 000000000000..5fb1ae2da636
--- /dev/null
+++ b/drbd/drbd-kernel-compat/tests/have_debugfs_change_name.c
@@ -0,0 +1,9 @@
+/* { "version": "v6.13-rc7", "commit": "f7862dfef6612b87b2ad8352c4d73886f09456d6", "comment": "debugfs_chnage_name() replaces debugfs_rename()", "author": "Al Viro <viro@zeniv.linux.org.uk>", "date": "Sun Jan 12 08:07:05 2025 +0000" } */
+
+#include <linux/debugfs.h>
+
+int foo(const char *s);
+int foo(const char *s)
+{
+ return debugfs_change_name(NULL, "%s", s);
+}
diff --git a/drbd/drbd-kernel-compat/tests/have_fallthrough.c b/drbd/drbd-kernel-compat/tests/have_fallthrough.c
index a5299a0fc8ff..e44dd353e469 100644
--- a/drbd/drbd-kernel-compat/tests/have_fallthrough.c
+++ b/drbd/drbd-kernel-compat/tests/have_fallthrough.c
@@ -2,10 +2,17 @@
#include <linux/compiler_attributes.h>
-void foo(void)
+int foo(int i); /* Avoid warning about missing function prototype */
+int foo(int i)
{
- switch(0) {
+ int y = 0;
+
+ switch(i) {
case 0:
fallthrough;
+ case 1:
+ y = i;
}
+
+ return y;
}
diff --git a/drbd/drbd_debugfs.c b/drbd/drbd_debugfs.c
index 3f48dbee4e9a..6809d097bf52 100644
--- a/drbd/drbd_debugfs.c
+++ b/drbd/drbd_debugfs.c
@@ -771,15 +771,11 @@ void drbd_debugfs_resource_cleanup(struct drbd_resource *resource)
void drbd_debugfs_resource_rename(struct drbd_resource *resource, const char *new_name)
{
- struct dentry *new_d;
+ int err;
- new_d = debugfs_rename(drbd_debugfs_resources, resource->debugfs_res,
- drbd_debugfs_resources, new_name);
- if (IS_ERR(new_d)) {
+ err = debugfs_change_name(resource->debugfs_res, "%s", new_name);
+ if (err)
drbd_err(resource, "failed to rename debugfs entry for resource\n");
- } else {
- resource->debugfs_res = new_d;
- }
}
static void seq_print_one_timing_detail(struct seq_file *m,
--
2.39.5 (Apple Git-154)

View File

@@ -1,50 +0,0 @@
From e9d033122c939a3a522624a78bae9e4ee032c85b Mon Sep 17 00:00:00 2001
From: Lars Ellenberg <lars.ellenberg@linbit.com>
Date: Thu, 27 Feb 2025 14:07:44 +0100
Subject: [PATCH] drbd: build: deal with potentially relative paths in prep
step
since linux 13b25489b6f8b (kbuild: change working directory to external module directory with M=, 2024-11-10)
some Kbuild make variables may be relative paths.
Wrap them in $(abspath) as necessary.
---
drbd/Kbuild | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/drbd/Kbuild b/drbd/Kbuild
index ade25d4ee70a..80ec69dcce79 100644
--- a/drbd/Kbuild
+++ b/drbd/Kbuild
@@ -164,7 +164,7 @@ quiet_cmd_splitdiff = SPLIT $<
cmd_splitdiff = \
mkdir -p $(patches-dir) \
&& cd $(patches-dir) \
- && $(PERL) $(src)/drbd-kernel-compat/splitdiff.pl < $<
+ && $(PERL) $(abspath $(src))/drbd-kernel-compat/splitdiff.pl < $(abspath $<)
annotate-orig-pos := \
$(src)/drbd-kernel-compat/annotate-diff-with-original-file-position-pragmas.pl
@@ -188,13 +188,14 @@ quiet_cmd_apply_compat_patch = PATCH $@
if test -s $$patch ; then \
$(PATCH) --output $$out.tmp $$orig $$patch ; \
diff -u $$orig $$out.tmp | \
- DRBDSRC=$(src) \
- OUTDIR=$(obj.build) \
- PATCHES_DIR=$(patches-dir) \
- $(PERL) $(annotate-orig-pos) \
- | $(PATCH) --output $$out $$orig ; \
+ DRBDSRC=$(abspath $(src)) \
+ OUTDIR=$(abspath $(obj.build)) \
+ PATCHES_DIR=$(abspath $(patches-dir)) \
+ $(PERL) $(annotate-orig-pos) > $$out.annotated; \
+ $(PATCH) --output $$out $$orig < $$out.annotated; \
chmod --reference $$orig $$out ; \
: rm -f $$out.tmp; \
+ : rm -f $$out.annotated; \
else { echo "\# 1 \"$$orig\""; cat $$orig; } > $$out; fi
orig-source = $(src)/$(s)
--
2.48.1

View File

@@ -0,0 +1,73 @@
Subject: [PATCH] drbd: Fix block layer warning
drbdadm down r0 trigger kernel warning
drbd_reconsider_queue_parameters
+ get_common_queue_limits
| blk_set_stacking_limits
| lim->max_zone_append_sectors = UINT_MAX; <=== set
|
+ ... ...
|
+ queue_limits_commit_update
blk_validate_limits
WARN_ON_ONCE(lim->max_zone_append_sectors) <== trigger
log:
```
Jan 08 14:43:37 tw-2 kernel: drbd r0/0 drbd0: disk( UpToDate -> Detaching ) [down]
Jan 08 14:43:37 tw-2 kernel: drbd r0/0 drbd0: disk( Detaching -> Diskless ) [go-diskless]
------------[ cut here ]------------
WARNING: CPU: 0 PID: 1773 at block/blk-settings.c:75 blk_validate_limits+0x41d/0x440
... ...
Call Trace:
<TASK>
? blk_validate_limits+0x41d/0x440
? __warn.cold+0x93/0xf7
? blk_validate_limits+0x41d/0x440
? report_bug+0xff/0x140
? handle_bug+0x58/0x90
? exc_invalid_op+0x17/0x70
? asm_exc_invalid_op+0x1a/0x20
? blk_validate_limits+0x41d/0x440
queue_limits_commit_update+0x1b/0xa0
drbd_reconsider_queue_parameters+0x1d2/0x240 [drbd 9a1d8dc285f5b1fe449ab4495af7893c660ff3ea]
w_after_state_change+0x1997/0x20a0 [drbd 9a1d8dc285f5b1fe449ab4495af7893c660ff3ea]
? idr_get_next_ul+0xee/0x110
? do_unqueued_device_work+0x1da/0x2a0 [drbd 9a1d8dc285f5b1fe449ab4495af7893c660ff3ea]
drbd_worker+0x109/0x530 [drbd 9a1d8dc285f5b1fe449ab4495af7893c660ff3ea]
? __pfx_autoremove_wake_function+0x10/0x10
? __pfx_drbd_thread_setup+0x10/0x10 [drbd 9a1d8dc285f5b1fe449ab4495af7893c660ff3ea]
drbd_thread_setup+0x6d/0x170 [drbd 9a1d8dc285f5b1fe449ab4495af7893c660ff3ea]
kthread+0xcf/0x100
? __pfx_kthread+0x10/0x10
ret_from_fork+0x31/0x50
? __pfx_kthread+0x10/0x10
ret_from_fork_asm+0x1a/0x30
</TASK>
Jan 08 14:43:37 tw-2 kernel: ---[ end trace 0000000000000000 ]---
Jan 08 14:43:37 tw-2 kernel: drbd r0/0 drbd0: setting new queue limits failed
Jan 08 14:43:37 tw-2 kernel: drbd r0/0 drbd0: drbd_bm_resize called with capacity == 0
Jan 08 14:43:37 tw-2 kernel: drbd /unregistered/r0: Terminating worker thread
---[ end trace 0000000000000000 ]---
drbd /unregistered/r0/0 drbd0: setting new queue limits failed
drbd /unregistered/r0: Terminating worker thread
```
Signed-off-by: Heming Zhao <heming.zhao@suse.com>
---
diff -Nupr a/drbd/drbd_nl.c b/drbd/drbd_nl.c
--- a/drbd/drbd_nl.c 2025-01-08 14:25:56.369599242 +0800
+++ b/drbd/drbd_nl.c 2025-01-08 14:32:07.260157474 +0800
@@ -2068,6 +2068,8 @@ static void get_common_queue_limits(stru
common_limits->physical_block_size = device->device_conf.block_size;
common_limits->logical_block_size = device->device_conf.block_size;
common_limits->io_min = device->device_conf.block_size;
+ if (!(common_limits->features & BLK_FEAT_ZONED))
+ common_limits->max_zone_append_sectors = 0;
rcu_read_lock();
for_each_peer_device_rcu(peer_device, device) {

View File

@@ -1,113 +0,0 @@
From d084b8c42a167881119e4abb9fdc6dad5509e273 Mon Sep 17 00:00:00 2001
From: Su Yue <glass.su@suse.com>
Date: Tue, 17 Jun 2025 13:38:26 +0800
Subject: [PATCH] drbd: fix build error against kernel v6.15
Upstream commit 8fa7292fee5c ("treewide: Switch/rename to timer_delete[_sync]()")
renamed del_timer[_sync] to timer_delete[_sync]. Convert them all.
Otherwise build fails like:
[ 85s] /home/abuild/rpmbuild/BUILD/drbd-9.1.23-build/drbd-9.1.23/default/./drbd_receiver.c:7128:25: error: implicit declaration of function del_timer; did you mean add_timer? [-Wimplicit-function-declaration]
[ 85s] 7128 | del_timer(&resource->twopc_timer);
[ 85s] | ^~~~~~~~~
[ 85s] | add_timer
[ 85s] /home/abuild/rpmbuild/BUILD/drbd-9.1.23-build/drbd-9.1.23/default/./drbd_receiver.c: In function cleanup_resync_leftovers:
[ 85s] /home/abuild/rpmbuild/BUILD/drbd-9.1.23-build/drbd-9.1.23/default/./drbd_receiver.c:8551:9: error: implicit declaration of function del_timer_sync; did you mean dev_mc_sync? [-Wimplicit-function-declaration]
[ 85s] 8551 | del_timer_sync(&peer_device->resync_timer);
[ 85s] | ^~~~~~~~~~~~~~
[ 85s] | dev_mc_sync
[ 86s] make[3]: *** [/usr/src/linux-6.15.2-1/scripts/Makefile.build:204: drbd_receiver.o] Error 1
Signed-off-by: Su Yue <glass.su@suse.com>
---
drbd/drbd_main.c | 4 ++--
drbd/drbd_nl.c | 2 +-
drbd/drbd_receiver.c | 8 ++++----
drbd/drbd_state.c | 2 +-
4 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/drbd/drbd_main.c b/drbd/drbd_main.c
index edb1877074e1..44247e020390 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 baa32e4152ab..2b4ef3749867 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 0264adee9014..6604e95054dc 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);
@@ -8547,9 +8547,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)
@@ -8664,7 +8664,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 0e693c8e3af0..9ecc713d5d61 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.39.5 (Apple Git-154)

View File

@@ -1,32 +1,8 @@
-------------------------------------------------------------------
Tue Jun 17 05:54:23 UTC 2025 - Glass Su <glass.su@suse.com>
Fri Jan 24 02:38:00 UTC 2025 - Heming Zhao <heming.zhao@suse.com>
- drbd: fix build error against kernel v6.15 (boo#1244669)
* add upstream patch
+ 0001-compat-follow-Linux-6.14-debugfs_change_name.patch
* add suse special patch
+ boo1244669-fix_build_error_against_kernel_v6.15.patch
* remove patch which is replaced by the upstream patch
- boo1240916-fix_build_error_against_kernel_v6.14.patch
-------------------------------------------------------------------
Wed Apr 9 08:38:57 UTC 2025 - Glass Su <glass.su@suse.com>
- drbd: fix build error against kernel v6.14 (boo#1240916)
* add patch
+ boo1240916-fix_build_error_against_kernel_v6.14.patch
* replace suse special patch with drbd upstream fix
- boo1236927-fix-build_error_against_v6.13.patch
+ 0001-drbd-build-deal-with-potentially-relative-paths-in-p.patch
* remove patch, the issue is already fixed in v6.14 kernel
- boo1235399-fix_the_warning_of_blk_validate_limits.patch
-------------------------------------------------------------------
Sun Feb 9 04:00:30 UTC 2025 - Glass Su <glass.su@suse.com>
- drbd: fix build error against kernel v6.13 (boo#1236927)
* add patch
+ boo1236927-fix-build_error_against_v6.13.patch
- drbd failed to build with SLFO kernel candidate (bsc#1235595)
* update drbd.spec
-------------------------------------------------------------------
Wed Jan 8 07:08:00 UTC 2025 - Heming Zhao <heming.zhao@suse.com>
@@ -93,6 +69,7 @@ Fri Dec 11 02:35:00 UTC 2024 - Heming Zhao <heming.zhao@suse.com>
* removed patch which is not needed anymore:
boo1231290_fix_drbd_build_error_against_kernel_v6.11.0.patch
boo1233222_fix_drbd_build_error_against_kernel_v6.11.6.patch
bsc-1216666-compat-sock-Remove-sendpage-in-favour-of-sendmsg-MSG.patch
* update:
drbd_git_revision
@@ -331,6 +308,20 @@ Mon Feb 26 07:45:54 UTC 2024 - Dominique Leuenberger <dimstar@opensuse.org>
PatchN.
------------------------------------------------------------------
Wed Jan 10 01:55:00 UTC 2024 - Heming Zhao <heming.zhao@suse.com>
- drbd fails to build with the latest 6.4 kernel of the week (bsc#1218658)
* Add patch
+ 0006-drbd-log-numeric-value-of-drbd_state_rv-as-well-as-s.patch
+ 0011-compat-block-pass-a-gendisk-to-open.patch
+ 0013-drbd-remove-unused-extern-for-conn_try_outdate_peer.patch
+ 0014-drbd-include-source-of-state-change-in-log.patch
+ 0015-compat-block-use-the-holder-as-indication-for-exclus.patch
+ 0018-drbd-rework-autopromote.patch
+ 0019-compat-block-remove-the-unused-mode-argument-to-rele.patch
+ 0022-compat-block-replace-fmode_t-with-a-block-specific-t.patch
+ 0023-compat-genetlink-remove-userhdr-from-struct-genl_inf.patch
------------------------------------------------------------------
Tue Nov 13 11:56:00 UTC 2023 - Glass Su <glass.su@suse.com>
- drbd: fix build error against kernel v6.6.1 (boo#1217078)
@@ -342,6 +333,19 @@ Tue Nov 13 11:56:00 UTC 2023 - Glass Su <glass.su@suse.com>
- bsc-1215699_fix-build-error-against-kernel-v6.5.4.patch
------------------------------------------------------------------
Wed Nov 8 07:47:00 UTC 2023 - Heming Zhao <heming.zhao@suse.com>
- drbd failed to build after 15sp6/dolomit updated kernel (bsc#1216666)
* Add patch
+ bsc-1216666-compat-sock-Remove-sendpage-in-favour-of-sendmsg-MSG.patch
------------------------------------------------------------------
Tue Oct 31 10:16:00 UTC 2023 - Heming Zhao <heming.zhao@suse.com>
- drbd failed to build after 15sp6/dolomit updated kernel (bsc#1216666)
* Add patch
+ 0008-compat-block-introduce-holder-ops.patch
------------------------------------------------------------------
Tue Sep 26 03:35:00 UTC 2023 - Heming Zhao <heming.zhao@suse.com>
- drbd: fix build error against kernel v6.5.4 (boo#1215699)

View File

@@ -19,10 +19,14 @@
# RT enabled in Leap15.2(but not in Tumbleweed)
%if ! 0%{?is_opensuse} || 0%{?sle_version} >= 150200
# temporarily disable the rt build (bsc#1235595)
%if 0%{?suse_version} < 1600
%ifarch x86_64
%define buildrt 1
%endif
%endif
%endif
Name: drbd
Version: 9.1.23
Release: 0
@@ -37,13 +41,11 @@ Source3: drbd_git_revision
########################
# upstream patch
Patch0001: 0001-drbd-Fix-memory-leak.patch
Patch0002: 0001-drbd-build-deal-with-potentially-relative-paths-in-p.patch
Patch0003: 0001-compat-follow-Linux-6.14-debugfs_change_name.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
Patch1003: boo1235399-fix_the_warning_of_blk_validate_limits.patch
########################
#https://github.com/openSUSE/rpmlint-checks/blob/master/KMPPolicyCheck.py
@@ -103,7 +105,7 @@ for flavor in %{flavors_to_build}; do
#make coccicheck
# call make prep to generate drbd build dir
make %{?_smp_mflags} -C $flavor KDIR=%{kernel_source $flavor} prep SPAAS=${SPAAS} KBUILD_ABS_SRCTREE=1
make %{?_smp_mflags} -C $flavor KDIR=%{kernel_source $flavor} prep SPAAS=${SPAAS}
cp -a %{_sourcedir}/Module.supported ${flavor}/build-current