Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package mdadm for openSUSE:Factory checked 
in at 2024-08-12 12:29:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/mdadm (Old)
 and      /work/SRC/openSUSE:Factory/.mdadm.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "mdadm"

Mon Aug 12 12:29:50 2024 rev:149 rq:1193244 version:4.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/mdadm/mdadm.changes      2024-03-03 
20:19:01.561189470 +0100
+++ /work/SRC/openSUSE:Factory/.mdadm.new.7232/mdadm.changes    2024-08-12 
12:29:52.075262025 +0200
@@ -1,0 +2,8 @@
+Sat Jul  6 15:43:04 UTC 2024 - Coly Li <[email protected]>
+
+- util.c: change devnm to const in mdmon functions (bsc#1225307)
+  0006-util.c-change-devnm-to-const-in-mdmon-functions.patch
+- Wait for mdmon when it is stared via systemd (bsc#1225307)
+  0007-Wait-for-mdmon-when-it-is-stared-via-systemd.patch
+
+-------------------------------------------------------------------

New:
----
  0006-util.c-change-devnm-to-const-in-mdmon-functions.patch
  0007-Wait-for-mdmon-when-it-is-stared-via-systemd.patch

BETA DEBUG BEGIN:
  New:- util.c: change devnm to const in mdmon functions (bsc#1225307)
  0006-util.c-change-devnm-to-const-in-mdmon-functions.patch
- Wait for mdmon when it is stared via systemd (bsc#1225307)
  New:- Wait for mdmon when it is stared via systemd (bsc#1225307)
  0007-Wait-for-mdmon-when-it-is-stared-via-systemd.patch
BETA DEBUG END:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ mdadm.spec ++++++
--- /var/tmp/diff_new_pack.1qZXmW/_old  2024-08-12 12:29:55.051386083 +0200
+++ /var/tmp/diff_new_pack.1qZXmW/_new  2024-08-12 12:29:55.059386417 +0200
@@ -46,6 +46,8 @@
 Patch3:         0003-Super-intel-Fix-first-checkpoint-restart.patch
 Patch4:         0004-Grow-Move-update_tail-assign-to-Grow_reshape.patch
 Patch5:         0005-Add-understanding-output-section-in-man.patch
+Patch6:         0006-util.c-change-devnm-to-const-in-mdmon-functions.patch
+Patch7:         0007-Wait-for-mdmon-when-it-is-stared-via-systemd.patch
 Patch1001:      1001-display-timeout-status.patch
 Patch1002:      1002-OnCalendar-format-fix-of-mdcheck_start-timer.patch
 Patch1003:      1003-mdadm-treat-the-Dell-softraid-array-as-local-array.patch

++++++ 0006-util.c-change-devnm-to-const-in-mdmon-functions.patch ++++++
>From b0f4e8e30f38d83f7e3f53d01d72d4cb3b4d42d7 Mon Sep 17 00:00:00 2001
From: Kinga Stefaniuk <[email protected]>
Date: Tue, 7 May 2024 05:38:55 +0200
Subject: [PATCH] util.c: change devnm to const in mdmon functions
Git-commit: b0f4e8e30f38d83f7e3f53d01d72d4cb3b4d42d7
Patch-mainline: mdadm-4.3+
References: bsc#1225307

Devnm shall not be changed inside mdmon_running()
and mdmon_pid() functions, change this parameter to const.

Signed-off-by: Kinga Stefaniuk <[email protected]>
Signed-off-by: Mariusz Tkaczyk <[email protected]>
Signed-off-by: Coly Li <[email protected]>
---
 mdadm.h | 4 ++--
 util.c  | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/mdadm.h b/mdadm.h
index 2ff3e463..1ba541fc 100644
--- a/mdadm.h
+++ b/mdadm.h
@@ -1768,8 +1768,8 @@ extern int is_subarray_active(char *subarray, char 
*devname);
 extern int open_subarray(char *dev, char *subarray, struct supertype *st, int 
quiet);
 extern struct superswitch *version_to_superswitch(char *vers);
 
-extern int mdmon_running(char *devnm);
-extern int mdmon_pid(char *devnm);
+extern int mdmon_running(const char *devnm);
+extern int mdmon_pid(const char *devnm);
 extern int check_env(char *name);
 extern __u32 random32(void);
 extern void random_uuid(__u8 *buf);
diff --git a/util.c b/util.c
index 4fbf11c4..e2b490e1 100644
--- a/util.c
+++ b/util.c
@@ -1902,7 +1902,7 @@ unsigned long long min_recovery_start(struct mdinfo 
*array)
        return recovery_start;
 }
 
-int mdmon_pid(char *devnm)
+int mdmon_pid(const char *devnm)
 {
        char path[100];
        char pid[10];
@@ -1922,7 +1922,7 @@ int mdmon_pid(char *devnm)
        return atoi(pid);
 }
 
-int mdmon_running(char *devnm)
+int mdmon_running(const char *devnm)
 {
        int pid = mdmon_pid(devnm);
        if (pid <= 0)
-- 
2.35.3


++++++ 0007-Wait-for-mdmon-when-it-is-stared-via-systemd.patch ++++++
>From aa1cc5815d2b14a8b47add18cfaa8264e19c10ce Mon Sep 17 00:00:00 2001
From: Kinga Stefaniuk <[email protected]>
Date: Tue, 7 May 2024 05:38:56 +0200
Subject: [PATCH] Wait for mdmon when it is stared via systemd
Git-commit: aa1cc5815d2b14a8b47add18cfaa8264e19c10ce
Patch-mainline: mdadm-4.3+
References: bsc#1225307

When mdmon is being started it may need few seconds to start.
For now, we didn't wait for it. Introduce wait_for_mdmon()
function, which waits up to 5 seconds for mdmon to start completely.

Signed-off-by: Kinga Stefaniuk <[email protected]>
Signed-off-by: Mariusz Tkaczyk <[email protected]>
Signed-off-by: Coly Li <[email protected]>
---
 Assemble.c |  4 ++--
 Grow.c     |  7 ++++---
 mdadm.h    |  2 ++
 util.c     | 29 +++++++++++++++++++++++++++++
 4 files changed, 37 insertions(+), 5 deletions(-)

diff --git a/Assemble.c b/Assemble.c
index f5e9ab1f..83dced19 100644
--- a/Assemble.c
+++ b/Assemble.c
@@ -2173,8 +2173,8 @@ int assemble_container_content(struct supertype *st, int 
mdfd,
                        if (!mdmon_running(st->container_devnm))
                                start_mdmon(st->container_devnm);
                        ping_monitor(st->container_devnm);
-                       if (mdmon_running(st->container_devnm) &&
-                           st->update_tail == NULL)
+                       if (wait_for_mdmon(st->container_devnm) == 
MDADM_STATUS_SUCCESS &&
+                           !st->update_tail)
                                st->update_tail = &st->updates;
                }
 
diff --git a/Grow.c b/Grow.c
index 87ed9214..1923c27c 100644
--- a/Grow.c
+++ b/Grow.c
@@ -2134,7 +2134,7 @@ int Grow_reshape(char *devname, int fd,
                        if (!mdmon_running(st->container_devnm))
                                start_mdmon(st->container_devnm);
                        ping_monitor(container);
-                       if (mdmon_running(st->container_devnm) == false) {
+                       if (wait_for_mdmon(st->container_devnm) != 
MDADM_STATUS_SUCCESS) {
                                pr_err("No mdmon found. Grow cannot 
continue.\n");
                                goto release;
                        }
@@ -3218,7 +3218,8 @@ static int reshape_array(char *container, int fd, char 
*devname,
                        if (!mdmon_running(container))
                                start_mdmon(container);
                        ping_monitor(container);
-                       if (mdmon_running(container) && st->update_tail == NULL)
+                       if (wait_for_mdmon(container) == MDADM_STATUS_SUCCESS &&
+                           !st->update_tail)
                                st->update_tail = &st->updates;
                }
        }
@@ -5173,7 +5174,7 @@ int Grow_continue_command(char *devname, int fd, struct 
context *c)
                        start_mdmon(container);
                ping_monitor(container);
 
-               if (mdmon_running(container) == false) {
+               if (wait_for_mdmon(container) != MDADM_STATUS_SUCCESS) {
                        pr_err("No mdmon found. Grow cannot continue.\n");
                        ret_val = 1;
                        goto Grow_continue_command_exit;
diff --git a/mdadm.h b/mdadm.h
index 1ba541fc..b71d7b32 100644
--- a/mdadm.h
+++ b/mdadm.h
@@ -1770,6 +1770,8 @@ extern struct superswitch *version_to_superswitch(char 
*vers);
 
 extern int mdmon_running(const char *devnm);
 extern int mdmon_pid(const char *devnm);
+extern mdadm_status_t wait_for_mdmon(const char *devnm);
+
 extern int check_env(char *name);
 extern __u32 random32(void);
 extern void random_uuid(__u8 *buf);
diff --git a/util.c b/util.c
index e2b490e1..bf79742f 100644
--- a/util.c
+++ b/util.c
@@ -1932,6 +1932,35 @@ int mdmon_running(const char *devnm)
        return 0;
 }
 
+/*
+ * wait_for_mdmon() - Waits for mdmon within specified time.
+ * @devnm: Device for which mdmon should start.
+ *
+ * Function waits for mdmon to start. It may need few seconds
+ * to start, we set timeout to 5, it should be sufficient.
+ * Do not wait if mdmon has been started.
+ *
+ * Return: MDADM_STATUS_SUCCESS if mdmon is running, error code otherwise.
+ */
+mdadm_status_t wait_for_mdmon(const char *devnm)
+{
+       const time_t mdmon_timeout = 5;
+       time_t start_time = time(0);
+
+       if (mdmon_running(devnm))
+               return MDADM_STATUS_SUCCESS;
+
+       pr_info("Waiting for mdmon to start\n");
+       while (time(0) - start_time < mdmon_timeout) {
+               sleep_for(0, MSEC_TO_NSEC(200), true);
+               if (mdmon_running(devnm))
+                       return MDADM_STATUS_SUCCESS;
+       };
+
+       pr_err("Timeout waiting for mdmon\n");
+       return MDADM_STATUS_ERROR;
+}
+
 int start_mdmon(char *devnm)
 {
        int i;
-- 
2.35.3

Reply via email to