Project not found: home:jejb1:gpg2

File 0001-compat-follow-Linux-6.14-debugfs_change_name.patch of Package drbd

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)

openSUSE Build Service is sponsored by