[mdadm/f17: 1/2] Avoid resync progress getting lost during expansion of IMSM metadata RAID1/5
Jes Sorensen
jsorensen at fedoraproject.org
Tue Apr 23 10:37:08 UTC 2013
commit adb522038d429cc7728c369ce05bf6a1167e066c
Author: Jes Sorensen <Jes.Sorensen at redhat.com>
Date: Tue Apr 23 12:31:42 2013 +0200
Avoid resync progress getting lost during expansion of IMSM metadata RAID1/5
Resolves bz948745
Signed-off-by: Jes Sorensen <Jes.Sorensen at redhat.com>
...g-component_size-to-manager-thread-of-mdm.patch | 49 ++++++++++++++++++++
mdadm.spec | 9 +++-
2 files changed, 57 insertions(+), 1 deletions(-)
---
diff --git a/mdadm-3.2.6-Add-updating-component_size-to-manager-thread-of-mdm.patch b/mdadm-3.2.6-Add-updating-component_size-to-manager-thread-of-mdm.patch
new file mode 100644
index 0000000..bc51a39
--- /dev/null
+++ b/mdadm-3.2.6-Add-updating-component_size-to-manager-thread-of-mdm.patch
@@ -0,0 +1,49 @@
+From 4edb8530e889fc7b5e1b5471a0fbfd6c3c116b4a Mon Sep 17 00:00:00 2001
+From: Pawel Baldysiak <pawel.baldysiak at intel.com>
+Date: Wed, 3 Apr 2013 12:43:42 +1100
+Subject: [PATCH] Add updating component_size to manager thread of mdmon
+
+Mdmon does not update component_size now. It is wrong because in case
+of size's expansion component_size is changed by mdadm but mdmon does not
+reread its new value and uses a wrong, old one. As a result the metadata
+is incorrect during size's expansion. It contains no information that
+resync is in progress (there is no checkpoint too). The metadata is
+as if resync has already been finished but it has not.
+
+Component_size will be set to match information in sysfs. This value
+will be updated by manager thread in manage_member() function.
+Now mdmon uses the correct, current value of component_size and the
+correct metadata (containing information about resync and checkpoint)
+is written.
+
+Signed-off-by: Pawel Baldysiak <pawel.baldysiak at intel.com>
+Signed-off-by: NeilBrown <neilb at suse.de>
+---
+ managemon.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/managemon.c b/managemon.c
+index d155b04..2c55b3c 100644
+--- a/managemon.c
++++ b/managemon.c
+@@ -444,6 +444,7 @@ static void manage_member(struct mdstat_ent *mdstat,
+ char buf[64];
+ int frozen;
+ struct supertype *container = a->container;
++ unsigned long long int component_size = 0;
+
+ if (container == NULL)
+ /* Raced with something */
+@@ -453,6 +454,9 @@ static void manage_member(struct mdstat_ent *mdstat,
+ a->info.array.raid_disks = mdstat->raid_disks;
+ // MORE
+
++ if (sysfs_get_ll(&a->info, NULL, "component_size", &component_size) >= 0)
++ a->info.component_size = component_size << 1;
++
+ /* honor 'frozen' */
+ if (sysfs_get_str(&a->info, NULL, "metadata_version", buf, sizeof(buf)) > 0)
+ frozen = buf[9] == '-';
+--
+1.8.1.4
+
diff --git a/mdadm.spec b/mdadm.spec
index 3727fdd..67e2922 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: 17%{?dist}
+Release: 18%{?dist}
Source: http://www.kernel.org/pub/linux/utils/raid/mdadm/mdadm-%{version}.tar.xz
Source1: mdmonitor.init
Source2: raid-check
@@ -14,6 +14,7 @@ Source8: mdadm_event.conf
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
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
@@ -75,6 +76,7 @@ is not used as the system init process.
%patch1 -p1 -b .raidsize
%patch2 -p1 -b .multictrl
%patch3 -p1 -b .udevquery
+%patch4 -p1 -b .component
# Use systemctl to launch mdmon on F18 and higher
%if !%{fedora17}
@@ -166,6 +168,11 @@ rm -rf %{buildroot}
%endif
%changelog
+* Wed Apr 23 2013 Jes Sorensen <Jes.Sorensen at redhat.com> - 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
+
* Wed Apr 23 2013 Jes Sorensen <Jes.Sorensen at redhat.com> - 3.2.6-17
- Reorder patches to allow for udev query patch to be applied on
Fedora 17 as well.
More information about the scm-commits
mailing list