Hello community,

here is the log from the commit of package drbd-utils for openSUSE:Factory 
checked in at 2016-07-01 09:59:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/drbd-utils (Old)
 and      /work/SRC/openSUSE:Factory/.drbd-utils.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "drbd-utils"

Changes:
--------
--- /work/SRC/openSUSE:Factory/drbd-utils/drbd-utils.changes    2016-04-12 
19:36:22.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.drbd-utils.new/drbd-utils.changes       
2016-07-01 10:00:01.000000000 +0200
@@ -1,0 +2,11 @@
+Wed Jun 29 01:54:54 UTC 2016 - [email protected]
+
+- bsc#986215, fix segfault of up a DRBD9 stacked resource.
+- Add patch fix-segfault-up-stacked-resource.patch
+
+-------------------------------------------------------------------
+Wed Jun 29 01:53:49 UTC 2016 - [email protected]
+
+- bsc#986784, fix DRBD9 stacked resource could not started by RA.
+
+-------------------------------------------------------------------

New:
----
  fix-segfault-up-stacked-resource.patch

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

Other differences:
------------------
++++++ drbd-utils.spec ++++++
--- /var/tmp/diff_new_pack.pJ2Gum/_old  2016-07-01 10:00:02.000000000 +0200
+++ /var/tmp/diff_new_pack.pJ2Gum/_new  2016-07-01 10:00:02.000000000 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package drbd-utils
 #
-# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -32,6 +32,7 @@
 Patch4:         service-mod.patch
 Patch5:         fence-after-pacemaker-down.patch
 Patch6:         support-drbd9-ra.patch
+Patch7:         fix-segfault-up-stacked-resource.patch
 
 Provides:       drbd-bash-completion = %{version}
 Provides:       drbd-pacemaker = %{version}
@@ -80,6 +81,7 @@
 %patch4 -p1
 %patch5 -p1
 %patch6 -p1
+%patch7 -p1
 
 %build
 ./autogen.sh

++++++ fix-segfault-up-stacked-resource.patch ++++++
diff -Naur drbd-utils-8.9.6.orig/user/v9/drbdadm.h 
drbd-utils-8.9.6/user/v9/drbdadm.h
--- drbd-utils-8.9.6.orig/user/v9/drbdadm.h     2016-06-23 18:20:40.608796513 
+0800
+++ drbd-utils-8.9.6/user/v9/drbdadm.h  2016-06-23 18:21:18.828684887 +0800
@@ -388,6 +388,7 @@
 extern void global_validate_maybe_expand_die_if_invalid(int expand, enum 
pp_flags flags);
 extern struct d_option *new_opt(char *name, char *value);
 extern int hostname_in_list(const char *name, struct names *names);
+extern bool hostnames_equal(const char *a, const char *b);
 extern char *_names_to_str(char* buffer, struct names *names);
 extern char *_names_to_str_c(char* buffer, struct names *names, char c);
 #define NAMES_STR_SIZE 255
diff -Naur drbd-utils-8.9.6.orig/user/v9/drbdadm_postparse.c 
drbd-utils-8.9.6/user/v9/drbdadm_postparse.c
--- drbd-utils-8.9.6.orig/user/v9/drbdadm_postparse.c   2016-06-23 
18:20:40.608796513 +0800
+++ drbd-utils-8.9.6/user/v9/drbdadm_postparse.c        2016-06-23 
18:21:13.644700061 +0800
@@ -98,6 +98,21 @@
        }
 }
 
+struct d_host_info *find_host_info_by_fakename(struct d_resource* res, char 
*name)
+{
+       struct d_host_info *host;
+       char *concat_name;
+
+       for_each_host(host, &res->all_hosts) {
+               concat_name = strdup(names_to_str_c(&host->on_hosts, '_'));
+               if (hostnames_equal(name, concat_name))
+                       return host;
+       }
+
+       return NULL;
+}
+
+
 struct d_host_info *find_host_info_by_name(struct d_resource* res, char *name)
 {
        struct d_host_info *host;
@@ -403,7 +418,11 @@
                        if (conn->peer) {
                                host_info = conn->peer;
                        } else {
-                               host_info = find_host_info_by_name(res, 
candidate->name);
+                               if (candidate->faked_hostname) {
+                                       host_info = 
find_host_info_by_fakename(res, candidate->name);
+                               } else {
+                                       host_info = find_host_info_by_name(res, 
candidate->name);
+                               }
                                conn->peer = host_info;
                        }
                        path->peer_address = candidate->address.addr ? 
&candidate->address : &host_info->address;

Reply via email to