Hello community,

here is the log from the commit of package drbd-utils for openSUSE:Factory 
checked in at 2017-04-28 09:14:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/drbd-utils (Old)
 and      /work/SRC/openSUSE:Factory/.drbd-utils.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "drbd-utils"

Fri Apr 28 09:14:20 2017 rev:13 rq:491412 version:8.9.11rc2

Changes:
--------
--- /work/SRC/openSUSE:Factory/drbd-utils/drbd-utils.changes    2017-04-12 
18:03:31.749593361 +0200
+++ /work/SRC/openSUSE:Factory/.drbd-utils.new/drbd-utils.changes       
2017-04-28 09:14:21.757119801 +0200
@@ -1,0 +2,7 @@
+Thu Apr 27 06:19:24 UTC 2017 - nw...@suse.com
+
+- bsc#1032074, fix Inconsistent metadata after upgrade
+- Add Pass-md_index-information-to-detect_md.patch
+  * will be merged into upstream in v8.9.12
+
+-------------------------------------------------------------------

New:
----
  Pass-md_index-information-to-detect_md.patch

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

Other differences:
------------------
++++++ drbd-utils.spec ++++++
--- /var/tmp/diff_new_pack.Wsw1hE/_old  2017-04-28 09:14:22.612999107 +0200
+++ /var/tmp/diff_new_pack.Wsw1hE/_new  2017-04-28 09:14:22.616998543 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package drbd-utils
 #
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 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
@@ -34,6 +34,8 @@
 Patch4:         fix-segfault-up-stacked-resource.patch
 # PATCH-SUSE-FIX: Disable quorum in default configuration (bsc#1032142)
 Patch5:         0001-Disable-quorum-in-default-configuration-bsc-1032142.patch
+# Patch will be merged to upstream in 8.9.12 (bsc#1032074)
+Patch6:         Pass-md_index-information-to-detect_md.patch
 
 Provides:       drbd-bash-completion = %{version}
 Provides:       drbd-pacemaker = %{version}
@@ -78,6 +80,7 @@
 %patch3 -p1
 %patch4 -p1
 %patch5 -p1
+%patch6 -p1
 
 %build
 ./autogen.sh

++++++ Pass-md_index-information-to-detect_md.patch ++++++
detect_md() assumes that the metadata index format is
DRBD_MD_INDEX_FLEX_INT, but in fact it can also be
DRBD_MD_INDEX_FLEX_EXT.

[lge: Actually, it could even be old-style indexed fixed size meta data,
but that can be fixed an other day, or worked around with dump/restore.

Thanks for noticing and fixing a regression when trying to detect and
"convert" external meta data.  We introduced said regression likely in
late 2011, even before 8.4 came out.]

Signed-off-by: Kristoffer Grönlund <k...@koru.se>
Signed-off-by: Lars Ellenberg <lars.ellenb...@linbit.com>
---
 user/shared/drbdmeta.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/user/shared/drbdmeta.c b/user/shared/drbdmeta.c
index 649076e1..2a79264c 100644
--- a/user/shared/drbdmeta.c
+++ b/user/shared/drbdmeta.c
@@ -4348,25 +4348,25 @@ void check_for_existing_data(struct format *cfg)
 }
 
 /* tries to guess what is in the on_disk_buffer */
-enum md_format detect_md(struct md_cpu *md, const uint64_t ll_size)
+enum md_format detect_md(struct md_cpu *md, const uint64_t ll_size, int 
index_format)
 {
        struct md_cpu md_test;
        enum md_format have = DRBD_UNKNOWN;
 
        md_disk_07_to_cpu(&md_test, (struct md_on_disk_07*)on_disk_buffer);
-       if (is_valid_md(DRBD_V07, &md_test, DRBD_MD_INDEX_FLEX_INT, ll_size)) {
+       if (is_valid_md(DRBD_V07, &md_test, index_format, ll_size)) {
                have = DRBD_V07;
                *md = md_test;
        }
 
        md_disk_08_to_cpu(&md_test, (struct md_on_disk_08*)on_disk_buffer);
-       if (is_valid_md(DRBD_V08, &md_test, DRBD_MD_INDEX_FLEX_INT, ll_size)) {
+       if (is_valid_md(DRBD_V08, &md_test, index_format, ll_size)) {
                have = DRBD_V08;
                *md = md_test;
        }
 
        md_disk_09_to_cpu(&md_test, (struct 
meta_data_on_disk_9*)on_disk_buffer);
-       if (is_valid_md(DRBD_V09, &md_test, DRBD_MD_INDEX_FLEX_INT, ll_size)) {
+       if (is_valid_md(DRBD_V09, &md_test, index_format, ll_size)) {
                have = DRBD_V09;
                *md = md_test;
        }
@@ -4406,7 +4406,7 @@ void check_internal_md_flavours(struct format * cfg) {
 
        if (have == DRBD_UNKNOWN) {
                PREAD(cfg, on_disk_buffer, 4096, flex_offset);
-               have = detect_md(&md_now, cfg->bd_size);
+               have = detect_md(&md_now, cfg->bd_size, DRBD_MD_INDEX_FLEX_INT);
        }
 
        if (have == DRBD_UNKNOWN)
@@ -4515,7 +4515,7 @@ void check_external_md_flavours(struct format * cfg) {
        }
 
        PREAD(cfg, on_disk_buffer, 4096, cfg->md_offset);
-       have = detect_md(&md_now, cfg->bd_size);
+       have = detect_md(&md_now, cfg->bd_size, DRBD_MD_INDEX_FLEX_EXT);
 
        if (have == DRBD_UNKNOWN)
                return;
-- 
2.12.0


Reply via email to