Accepting request 320089 from Base:System

- new upstream version 3.3.4. Important bugfix
  to honour IMSM ROM settings when RAID is disabled.
  (bsc#939748 bsc#937363)

- new upstream version 3.3.3.  Lots of bug fixes, particular
  "mdadm --assemble --force" would often not do the right thing
  for RAID5.
-  0001-Grow-Do-not-try-to-restart-if-reshape-is-running.patch
   0001-Grow-fix-removal-of-line-in-wrong-case.patch
   0001-IMSM-Add-warning-message-when-assemble-spanned-conta.patch
   0001-Makefile-install-mdadm-grow-continue-.service.patch
   mdcheck-careful.patch
   mdcheck-no-devices.fix
   All removed as now included upstream.

- Make it build, that is build-require pkgconfig of udev and the
  package systemd as this one is the owner of the directory
  /usr/lib/systemd/system-shutdown

OBS-URL: https://build.opensuse.org/request/show/320089
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/mdadm?expand=0&rev=101
This commit is contained in:
Dominique Leuenberger 2015-08-21 05:36:44 +00:00 committed by Git OBS Bridge
commit c104e0cbcf
10 changed files with 38 additions and 302 deletions

View File

@ -1,45 +0,0 @@
From 13ffbe89b6103c146c08eb1c9a70833306c8322b Mon Sep 17 00:00:00 2001
From: Pawel Baldysiak <pawel.baldysiak@intel.com>
Date: Wed, 16 Jul 2014 12:20:34 +0200
Subject: [PATCH] Grow: Do not try to restart if reshape is running
Grow process did not check if reshape is already started
when deciding about restarting.
Sync_action should be checked in this case, and if
reshape is running - restart flag should not be set.
Otherwise, Grow process will fail to write data to
sysfs, and reshape will not be continued.
Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com>
Signed-off-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
---
Grow.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/Grow.c b/Grow.c
index a2f4f1428787..ea9cc60e1f18 100644
--- a/Grow.c
+++ b/Grow.c
@@ -2822,6 +2822,7 @@ static int reshape_array(char *container, int fd, char *devname,
unsigned long long array_size;
int done;
struct mdinfo *sra = NULL;
+ char buf[20];
/* when reshaping a RAID0, the component_size might be zero.
* So try to fix that up.
@@ -2869,7 +2870,9 @@ static int reshape_array(char *container, int fd, char *devname,
goto release;
}
- if (st->ss->external && restart && (info->reshape_progress == 0)) {
+ if (st->ss->external && restart && (info->reshape_progress == 0) &&
+ !((sysfs_get_str(info, NULL, "sync_action", buf, sizeof(buf)) > 0) &&
+ (strncmp(buf, "reshape", 7) == 0))) {
/* When reshape is restarted from '0', very begin of array
* it is possible that for external metadata reshape and array
* configuration doesn't happen.
--
2.0.0

View File

@ -1,39 +0,0 @@
From e339dba2a1744dc6860a58e286ded39fc993c2db Mon Sep 17 00:00:00 2001
From: Pawel Baldysiak <pawel.baldysiak@intel.com>
Date: Wed, 11 Jun 2014 15:18:44 +0000
Subject: [PATCH] Grow: fix removal of line in wrong case
Commit 18d9bcfa33939cee345d4d7735bc6081bcc409c8
removed wrong line (in case RAID0->RAID4).
This patch corrects this mistake
(line should be removed in case RAID4->RAID4).
Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
---
Grow.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Grow.c b/Grow.c
index 12730e26fd19..a2f4f1428787 100644
--- a/Grow.c
+++ b/Grow.c
@@ -1324,6 +1324,7 @@ char *analyse_change(char *devname, struct mdinfo *info, struct reshape *re)
switch (re->level) {
case 4:
+ re->before.layout = 0;
re->after.layout = 0;
break;
case 5:
@@ -1339,7 +1340,6 @@ char *analyse_change(char *devname, struct mdinfo *info, struct reshape *re)
switch (re->level) {
case 4:
- re->before.layout = 0;
re->after.layout = 0;
break;
case 5:
--
2.0.0

View File

@ -1,126 +0,0 @@
From 0c21b485e4beb7bcfe631412a231f7c1ea1067bc Mon Sep 17 00:00:00 2001
From: Pawel Baldysiak <pawel.baldysiak@intel.com>
Date: Mon, 30 Jun 2014 12:22:22 +0000
Subject: [PATCH] IMSM: Add warning message when assemble spanned container
Due to several changes in code assemble with disks
spanned between different controllers can be obtained
in some cases. After IMSM container will be assembled, check HBA of
disks, and print proper warning if mismatch is detected.
Signed-off-by: Pawel Baldysiak <pawel.baldysiak@intel.com>
Signed-off-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
---
Assemble.c | 16 ++++++++++++++++
mdadm.h | 3 +++
platform-intel.h | 1 +
super-intel.c | 43 +++++++++++++++++++++++++++++++++++++++++++
4 files changed, 63 insertions(+)
--- mdadm-3.3.1.orig/Assemble.c
+++ mdadm-3.3.1/Assemble.c
@@ -1001,6 +1001,22 @@ static int start_array(int mdfd,
content->array.raid_disks);
fprintf(stderr, "\n");
}
+
+ if (st->ss->validate_container) {
+ struct mdinfo *devices_list;
+ struct mdinfo *info_devices = xmalloc(sizeof(struct mdinfo)*(okcnt+sparecnt));
+ unsigned int count;
+ devices_list = NULL;
+ for (count = 0; count < okcnt+sparecnt; count++) {
+ info_devices[count] = devices[count].i;
+ info_devices[count].next = devices_list;
+ devices_list = &info_devices[count];
+ }
+ if (st->ss->validate_container(devices_list))
+ pr_err("Mismatch detected!\n");
+ free(info_devices);
+ }
+
st->ss->free_super(st);
sysfs_uevent(content, "change");
if (err_ok && okcnt < (unsigned)content->array.raid_disks)
--- mdadm-3.3.1.orig/mdadm.h
+++ mdadm-3.3.1/mdadm.h
@@ -965,6 +965,9 @@ extern struct superswitch {
/* for external backup area */
int (*recover_backup)(struct supertype *st, struct mdinfo *info);
+ /* validate container after assemble */
+ int (*validate_container)(struct mdinfo *info);
+
int swapuuid; /* true if uuid is bigending rather than hostendian */
int external;
const char *name; /* canonical metadata name */
--- mdadm-3.3.1.orig/platform-intel.h
+++ mdadm-3.3.1/platform-intel.h
@@ -204,6 +204,7 @@ struct sys_dev *find_intel_devices(void)
const struct imsm_orom *find_imsm_capability(enum sys_dev_type hba_id);
const struct imsm_orom *find_imsm_orom(void);
int disk_attached_to_hba(int fd, const char *hba_path);
+int devt_attached_to_hba(dev_t dev, const char *hba_path);
char *devt_to_devpath(dev_t dev);
int path_attached_to_hba(const char *disk_path, const char *hba_path);
const char *get_sys_dev_type(enum sys_dev_type);
--- mdadm-3.3.1.orig/super-intel.c
+++ mdadm-3.3.1/super-intel.c
@@ -10484,6 +10484,48 @@ abort:
return ret_val;
}
+
+/*******************************************************************************
+ * Function: validate_container_imsm
+ * Description: This routine validates container after assemble,
+ * eg. if devices in container are under the same controller.
+ *
+ * Parameters:
+ * info : linked list with info about devices used in array
+ * Returns:
+ * 1 : HBA mismatch
+ * 0 : Success
+ ******************************************************************************/
+int validate_container_imsm(struct mdinfo *info)
+{
+ if (!check_env("IMSM_NO_PLATFORM")) {
+ struct sys_dev *idev;
+ struct mdinfo *dev;
+ char *hba_path = NULL;
+ char *dev_path = devt_to_devpath(makedev(info->disk.major,
+ info->disk.minor));
+
+ for (idev = find_intel_devices(); idev; idev = idev->next) {
+ if (strstr(dev_path, idev->path)) {
+ hba_path = idev->path;
+ break;
+ }
+ }
+ free(dev_path);
+
+ if (hba_path) {
+ for (dev = info->next; dev; dev = dev->next) {
+ if (!devt_attached_to_hba(makedev(dev->disk.major,
+ dev->disk.minor), hba_path)) {
+ pr_err("WARNING - IMSM container assembled with disks under different HBAs!\n"
+ " This operation is not supported and can lead to data loss.\n");
+ return 1;
+ }
+ }
+ }
+ }
+ return 0;
+}
#endif /* MDASSEMBLE */
struct superswitch super_imsm = {
@@ -10527,6 +10569,7 @@ struct superswitch super_imsm = {
.free_super = free_super_imsm,
.match_metadata_desc = match_metadata_desc_imsm,
.container_content = container_content_imsm,
+ .validate_container = validate_container_imsm,
.external = 1,
.name = "imsm",

View File

@ -1,28 +0,0 @@
From 616f197f9d6d044afb9e27ddc9cd087d21d610f0 Mon Sep 17 00:00:00 2001
From: NeilBrown <neilb@suse.de>
Date: Tue, 10 Jun 2014 20:34:40 +1000
Subject: [PATCH] Makefile: install mdadm-grow-continue@.service
Forgot to add this to install-systemd target
Signed-off-by: NeilBrown <neilb@suse.de>
---
Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index c7e7a4272cde..1a4a5dcdb720 100644
--- a/Makefile
+++ b/Makefile
@@ -290,7 +290,7 @@ install-udev: udev-md-raid-arrays.rules udev-md-raid-assembly.rules
install-systemd: systemd/mdmon@.service
@for file in mdmon@.service mdmonitor.service mdadm-last-resort@.timer \
- mdadm-last-resort@.service ; \
+ mdadm-last-resort@.service mdadm-grow-continue@.service; \
do sed -e 's,BINDIR,$(BINDIR),g' systemd/$$file > .install.tmp && \
echo $(INSTALL) -D -m 644 systemd/$$file $(DESTDIR)$(SYSTEMD_DIR)/$$file ; \
$(INSTALL) -D -m 644 .install.tmp $(DESTDIR)$(SYSTEMD_DIR)/$$file ; \
--
2.0.0

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d8c74112cfd77bdc1dbc1291fe8d9243c76d91bfa276fcb95f2a75ca7717ab02
size 407964

3
mdadm-3.3.4.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8ae5f45306b873190e91f410709b00e51997b633c072b33f8efd9f7df022ca68
size 413396

View File

@ -1,3 +1,34 @@
-------------------------------------------------------------------
Mon Aug 3 06:25:56 UTC 2015 - nfbrown@suse.com
- new upstream version 3.3.4. Important bugfix
to honour IMSM ROM settings when RAID is disabled.
(bsc#939748 bsc#937363)
-------------------------------------------------------------------
Mon Jul 27 04:17:43 UTC 2015 - nfbrown@suse.com
- new upstream version 3.3.3. Lots of bug fixes, particular
"mdadm --assemble --force" would often not do the right thing
for RAID5.
- 0001-Grow-Do-not-try-to-restart-if-reshape-is-running.patch
0001-Grow-fix-removal-of-line-in-wrong-case.patch
0001-IMSM-Add-warning-message-when-assemble-spanned-conta.patch
0001-Makefile-install-mdadm-grow-continue-.service.patch
mdcheck-careful.patch
mdcheck-no-devices.fix
All removed as now included upstream.
-------------------------------------------------------------------
Mon Jul 13 09:19:36 UTC 2015 - werner@suse.de
- Make it build, that is build-require pkgconfig of udev and the
package systemd as this one is the owner of the directory
/usr/lib/systemd/system-shutdown
-------------------------------------------------------------------
Mon Mar 2 20:33:12 UTC 2015 - mgorse@suse.com

View File

@ -1,7 +1,7 @@
#
# spec file for package mdadm
#
# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
# Copyright (c) 2015 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
@ -17,14 +17,16 @@
Name: mdadm
Version: 3.3.1
Version: 3.3.4
Release: 0
BuildRequires: binutils-devel
BuildRequires: groff
BuildRequires: pkgconfig
BuildRequires: sgmltool
BuildRequires: systemd
BuildRequires: pkgconfig(libudev)
BuildRequires: pkgconfig(systemd)
BuildRequires: pkgconfig(udev)
PreReq: %fillup_prereq /sbin/mkinitrd
Recommends: cron
Recommends: smtp_daemon
@ -38,18 +40,6 @@ Source1: Software-RAID.HOWTO.tar.bz2
Source2: sysconfig.mdadm
Source3: cron.d.mdadm
Source7: mdadm.cron
# PATCH-FIX-UPSTREAM 0001-Makefile-install-mdadm-grow-continue-.service.patch nfbrown@suse.de
Patch1: 0001-Makefile-install-mdadm-grow-continue-.service.patch
# PATCH-FIX-UPSTREAM 0001-Grow-fix-removal-of-line-in-wrong-case.patch bnc#881530 nfbrown@suse.de
Patch2: 0001-Grow-fix-removal-of-line-in-wrong-case.patch
# PATCH-FIX-UPSTREAM mdcheck-no-devices.fix bnc#903051 nfbrown@suse.de
Patch3: mdcheck-no-devices.fix
# PATCH-FIX-UPSTREAM mdcheck-careful.patch bnc#910500 nfbrown@suse.de
Patch4: mdcheck-careful.patch
# PATCH-FIX-UPSTREAM 0001-IMSM-Add-warning-message-when-assemble-spanned-conta.patch bnc#882634 nfbrown@suse.de
Patch5: 0001-IMSM-Add-warning-message-when-assemble-spanned-conta.patch
# PATCH-FIX-UPSTREAM 0001-Grow-Do-not-try-to-restart-if-reshape-is-running.patch bnc#887773 nfbrown@suse.de
Patch6: 0001-Grow-Do-not-try-to-restart-if-reshape-is-running.patch
%define _udevdir %(pkg-config --variable=udevdir udev)
%define _systemdshutdowndir %{_unitdir}/../system-shutdown
@ -61,12 +51,6 @@ programs but with a very different interface.
%prep
%setup -q -a1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%build
make %{?_smp_mflags} CC="%__cc" CXFLAGS="$RPM_OPT_FLAGS -Wno-error" SUSE=yes

View File

@ -1,27 +0,0 @@
From 979b1feb093b1c2e0f8b58716329f2da092741d4 Mon Sep 17 00:00:00 2001
From: NeilBrown <neilb@suse.de>
Date: Wed, 4 Feb 2015 09:06:47 +1100
Subject: [PATCH] mdcheck: be careful when sourcing the output of "mdadm
--detail --export"
The output of "mdadm --detail --export" isn't quoted properly so
fields that contain spaces can be a problem.
We only want the MD_UUID field, and it has a very well defined
format with no spaces.
So use 'grep' to limit the output to just that.
Signed-off-by: NeilBrown <neilb@suse.de>
diff --git a/misc/mdcheck b/misc/mdcheck
index ca5fe84a1284..2c8f54d6e4cf 100644
--- a/misc/mdcheck
+++ b/misc/mdcheck
@@ -88,7 +88,7 @@ do
continue
fi
- mdadm --detail --export "$dev" > $tmp || continue
+ mdadm --detail --export "$dev" | grep '^MD_UUID=' > $tmp || continue
source $tmp
fl="/var/lib/mdcheck/MD_UUID_$MD_UUID"
if [ -z "$cont" ]

View File

@ -1,14 +0,0 @@
---
misc/mdcheck | 1 +
1 file changed, 1 insertion(+)
--- mdadm-3.3.1.orig/misc/mdcheck
+++ mdadm-3.3.1/misc/mdcheck
@@ -77,6 +77,7 @@ find /var/lib/mdcheck -name "MD_UUID*" -
cnt=0
for dev in /dev/md?*
do
+ [ -e "$dev" ] || continue
sys=`sysname $dev`
if [ ! -f "$sys/md/sync_action" ]
then # cannot check this array