diff --git a/mdadm-3.2.6-imsm-monitor-do-not-finish-migration-if-there-are-no.patch b/mdadm-3.2.6-imsm-monitor-do-not-finish-migration-if-there-are-no.patch new file mode 100644 index 0000000..202f61e --- /dev/null +++ b/mdadm-3.2.6-imsm-monitor-do-not-finish-migration-if-there-are-no.patch @@ -0,0 +1,49 @@ +From 79b68f1b48b0967da999945e310aef628c9bca4c Mon Sep 17 00:00:00 2001 +From: Przemyslaw Czarnowski +Date: Thu, 18 Apr 2013 10:51:37 +0200 +Subject: [PATCH] imsm: monitor: do not finish migration if there are no failed + disks + +Transition from "degraded" to "recovery" made in OROM is slightly different +than the same transision in mdadm. Missing disk is not removed from list of +raid devices, but just from map. Therefore mdadm should not end migration +basing on existence of list of missing disks but should rely on count of +failed disks. + +Signed-off-by: Przemyslaw Czarnowski +Tested-by: Pawel Baldysiak +Signed-off-by: NeilBrown +--- + super-intel.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/super-intel.c b/super-intel.c +index 24016b7..3f15b0f 100644 +--- a/super-intel.c ++++ b/super-intel.c +@@ -6886,6 +6886,12 @@ static void handle_missing(struct intel_super *super, struct imsm_dev *dev) + if (!super->missing) + return; + ++ /* When orom adds replacement for missing disk it does ++ * not remove entry of missing disk, but just updates map with ++ * new added disk. So it is not enough just to test if there is ++ * any missing disk, we have to look if there are any failed disks ++ * in map to stop migration */ ++ + dprintf("imsm: mark missing\n"); + /* end process for initialization and rebuild only + */ +@@ -6896,7 +6902,8 @@ static void handle_missing(struct intel_super *super, struct imsm_dev *dev) + failed = imsm_count_failed(super, dev, MAP_0); + map_state = imsm_check_degraded(super, dev, failed, MAP_0); + +- end_migration(dev, super, map_state); ++ if (failed) ++ end_migration(dev, super, map_state); + } + for (dl = super->missing; dl; dl = dl->next) + mark_missing(dev, &dl->disk, dl->index); +-- +1.8.1.4 + diff --git a/mdadm.spec b/mdadm.spec index 67e2922..b6d950a 100644 --- a/mdadm.spec +++ b/mdadm.spec @@ -1,7 +1,7 @@ Summary: The mdadm program controls Linux md devices (software RAID arrays) Name: mdadm Version: 3.2.6 -Release: 18%{?dist} +Release: 19%{?dist} Source: http://www.kernel.org/pub/linux/utils/raid/mdadm/mdadm-%{version}.tar.xz Source1: mdmonitor.init Source2: raid-check @@ -15,6 +15,7 @@ Patch1: mdadm-3.2.6-Create.c-check-if-freesize-is-equal-0.patch Patch2: mdadm-3.2.6-imsm-Forbid-spanning-between-multiple-controllers.patch Patch3: mdadm-3.2.6-query-udev-dir-via-pkg-config.patch Patch4: mdadm-3.2.6-Add-updating-component_size-to-manager-thread-of-mdm.patch +Patch5: mdadm-3.2.6-imsm-monitor-do-not-finish-migration-if-there-are-no.patch Patch93: mdadm-3.2.6-Remove-offroot-argument-and-default-to-always-settin.patch Patch94: mdadm-3.2.6-Add-support-for-launching-mdmon-via-systemctl-instea.patch Patch95: mdadm-3.2.6-In-case-launching-mdmon-fails-print-an-error-message.patch @@ -77,6 +78,7 @@ is not used as the system init process. %patch2 -p1 -b .multictrl %patch3 -p1 -b .udevquery %patch4 -p1 -b .component +%patch5 -p1 -b .migration # Use systemctl to launch mdmon on F18 and higher %if !%{fedora17} @@ -168,7 +170,12 @@ rm -rf %{buildroot} %endif %changelog -* Wed Apr 23 2013 Jes Sorensen - 3.2.6-18 +* Wed Apr 24 2013 Jes Sorensen - 3.2.6-19 +- Fix problem where rebuild of IMSM RAID5 volume started in OROM, + does not proceed in OS +- Resolves bz956021 (f18), bz956026 (f17), bz956031 (f19) + +* Tue Apr 23 2013 Jes Sorensen - 3.2.6-18 - Fix problem with IMSM metadata where resync progress would be lost if an array was stopped during ongoing expansion of a RAID1/5 volume. - Resolves bz948745