Hello community,

here is the log from the commit of package ledmon for openSUSE:Factory checked 
in at 2017-05-17 10:54:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ledmon (Old)
 and      /work/SRC/openSUSE:Factory/.ledmon.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ledmon"

Wed May 17 10:54:28 2017 rev:11 rq:495207 version:0.80

Changes:
--------
--- /work/SRC/openSUSE:Factory/ledmon/ledmon.changes    2017-03-17 
15:07:07.272980561 +0100
+++ /work/SRC/openSUSE:Factory/.ledmon.new/ledmon.changes       2017-05-17 
10:54:29.545660412 +0200
@@ -1,0 +2,8 @@
+Fri May 12 08:33:13 UTC 2017 - [email protected]
+
+- 0001-Don-t-rely-on-searching-for-block-in-sysfs-path-for-.patch
+  Fixed bsc#1038655.
+  upstream link of this patch:
+  https://sourceforge.net/p/ledmon/code/ci/868a01
+
+-------------------------------------------------------------------

New:
----
  0001-Don-t-rely-on-searching-for-block-in-sysfs-path-for-.patch

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

Other differences:
------------------
++++++ ledmon.spec ++++++
--- /var/tmp/diff_new_pack.DbNpNr/_old  2017-05-17 10:54:30.177571515 +0200
+++ /var/tmp/diff_new_pack.DbNpNr/_new  2017-05-17 10:54:30.181570952 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package ledmon
 #
-# Copyright (c) 2017 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -25,6 +25,7 @@
 Url:            http://sourceforge.net/projects/ledmon/
 Source0:        
http://sourceforge.net/projects/ledmon/files/ledmon-%{version}/%{name}-%{version}.tar.gz
 Patch0:         Makefile-error-dependency.patch
+Patch1:         0001-Don-t-rely-on-searching-for-block-in-sysfs-path-for-.patch
 BuildRequires:  libsgutils-devel
 Provides:       sgpio:/sbin/ledmon
 Provides:       sgpio:/{%{_bindir}}/ledctl
@@ -38,6 +39,7 @@
 %prep
 %setup -q
 %patch0
+%patch1 -p1
 
 %build
 make %{?_smp_mflags} CXFLAGS="%{optflags} -lsgutils2"

++++++ 0001-Don-t-rely-on-searching-for-block-in-sysfs-path-for-.patch ++++++
>From f0e0aac35deb8052f93256488e933409bdbfdc21 Mon Sep 17 00:00:00 2001
From: Zhilong Liu <[email protected]>
Date: Fri, 12 May 2017 16:13:04 +0800
Subject: [PATCH] Don't rely on searching for "/block" in sysfs path for
 detecting partitions

It is simpler and more reliable to check for a "partition" file in the device's
directory (supported since kernel 2.6.28). The previous approach would fail for
nvme devices because their device path looks like this:
/sys/devices/pci0000:00/0000:00:0c.0/nvme/nvme0/nvme0n1

Fixes: b30173ec8c05 ("* fix off-normal-failure block dev status loop * remove
unused raid->slave_list member * support md raid on block device partitions")

Signed-off-by: Zhilong Liu <[email protected]>
---
 src/slave.c | 27 ++++++++++++++-------------
 1 file changed, 14 insertions(+), 13 deletions(-)

diff --git a/src/slave.c b/src/slave.c
index 9843ffd..436ed4a 100644
--- a/src/slave.c
+++ b/src/slave.c
@@ -22,6 +22,8 @@
 #include <string.h>
 #include <stdlib.h>
 #include <stdint.h>
+#include <stdio.h>
+#include <sys/stat.h>
 
 #if _HAVE_DMALLOC_H
 #include <dmalloc.h>
@@ -100,27 +102,26 @@ static struct block_device *_get_block(const char *path, 
void *block_list)
 {
        char temp[PATH_MAX];
        char link[PATH_MAX];
-       char *ptr;
-       struct block_device *device = NULL;
 
        str_cpy(temp, path, PATH_MAX);
        str_cat(temp, "/block", PATH_MAX);
 
-       if (realpath(temp, link)) {
-               ptr = strrchr(link, '/');
-               if (ptr && link < ptr - strlen("/block")) {
-                       /* translate partition to master block dev */
-                       if(strncmp(
-                               ptr - strlen("/block"),
-                               "/block",
-                               strlen("/block"))) {
+       if (!realpath(temp, link))
+               return NULL;
 
+       /* translate partition to master block dev */
+       if (snprintf(temp, PATH_MAX, "%s/partition", link) > 0) {
+               struct stat sb;
+               char *ptr;
+
+               if (stat(temp, &sb) == 0 && S_ISREG(sb.st_mode)) {
+                       ptr = strrchr(link, '/');
+                       if (ptr)
                                *ptr = '\0';
-                       }
-                       device = list_first_that(block_list, _compare, link);
                }
        }
-       return device;
+
+       return list_first_that(block_list, _compare, link);
 }
 
 /**
-- 
2.6.6


Reply via email to