summaryrefslogtreecommitdiff
path: root/debian/patches/0028-imsm-correct-num_data_stripes-in-metadata-map-for-mi.patch
diff options
context:
space:
mode:
authorDimitri John Ledkov <xnox@ubuntu.com>2018-07-23 11:41:17 +0100
committerDimitri John Ledkov <xnox@ubuntu.com>2018-07-23 11:41:17 +0100
commit3bed5265f9c792edfcd593eeaa93675711e5e264 (patch)
tree60fcbcc5048f276f07022b12d9b34245a6e8ae8d /debian/patches/0028-imsm-correct-num_data_stripes-in-metadata-map-for-mi.patch
parent9421e599c44cd50d3df4cd019cd3c53d9320e93d (diff)
Cherrypick master patches up to 20th of July 2018. LP: #1781427
Diffstat (limited to 'debian/patches/0028-imsm-correct-num_data_stripes-in-metadata-map-for-mi.patch')
-rw-r--r--debian/patches/0028-imsm-correct-num_data_stripes-in-metadata-map-for-mi.patch64
1 files changed, 64 insertions, 0 deletions
diff --git a/debian/patches/0028-imsm-correct-num_data_stripes-in-metadata-map-for-mi.patch b/debian/patches/0028-imsm-correct-num_data_stripes-in-metadata-map-for-mi.patch
new file mode 100644
index 00000000..57b4b366
--- /dev/null
+++ b/debian/patches/0028-imsm-correct-num_data_stripes-in-metadata-map-for-mi.patch
@@ -0,0 +1,64 @@
+From 4a353e6ec48e35437b27978add6cd2cd015f2cfe Mon Sep 17 00:00:00 2001
+From: Roman Sobanski <roman.sobanski@intel.com>
+Date: Fri, 8 Jun 2018 12:34:18 +0200
+Subject: [PATCH 28/40] imsm: correct num_data_stripes in metadata map for
+ migration
+
+When migrating an array from R0 to R10 num_data_stripes in metadata map
+will not be updated. Update it to allow correct migration process.
+Changes in R10 to R0 migration for clarity of code.
+
+Signed-off-by: Roman Sobanski <roman.sobanski@intel.com>
+Signed-off-by: Jes Sorensen <jsorensen@fb.com>
+---
+ super-intel.c | 16 ++++++++++------
+ 1 file changed, 10 insertions(+), 6 deletions(-)
+
+diff --git a/super-intel.c b/super-intel.c
+index a01be132..f011a31f 100644
+--- a/super-intel.c
++++ b/super-intel.c
+@@ -9543,12 +9543,6 @@ static int apply_takeover_update(struct imsm_update_takeover *u,
+ if (u->direction == R10_TO_R0) {
+ unsigned long long num_data_stripes;
+
+- map->num_domains = 1;
+- num_data_stripes = imsm_dev_size(dev) / 2;
+- num_data_stripes /= map->blocks_per_strip;
+- num_data_stripes /= map->num_domains;
+- set_num_data_stripes(map, num_data_stripes);
+-
+ /* Number of failed disks must be half of initial disk number */
+ if (imsm_count_failed(super, dev, MAP_0) !=
+ (map->num_members / 2))
+@@ -9574,10 +9568,15 @@ static int apply_takeover_update(struct imsm_update_takeover *u,
+ map->num_domains = 1;
+ map->raid_level = 0;
+ map->failed_disk_num = -1;
++ num_data_stripes = imsm_dev_size(dev) / 2;
++ num_data_stripes /= map->blocks_per_strip;
++ set_num_data_stripes(map, num_data_stripes);
+ }
+
+ if (u->direction == R0_TO_R10) {
+ void **space;
++ unsigned long long num_data_stripes;
++
+ /* update slots in current disk list */
+ for (dm = super->disks; dm; dm = dm->next) {
+ if (dm->index >= 0)
+@@ -9615,6 +9614,11 @@ static int apply_takeover_update(struct imsm_update_takeover *u,
+ map->map_state = IMSM_T_STATE_DEGRADED;
+ map->num_domains = 2;
+ map->raid_level = 1;
++ num_data_stripes = imsm_dev_size(dev) / 2;
++ num_data_stripes /= map->blocks_per_strip;
++ num_data_stripes /= map->num_domains;
++ set_num_data_stripes(map, num_data_stripes);
++
+ /* replace dev<->dev_new */
+ dv->dev = dev_new;
+ }
+--
+2.17.1
+