diff options
Diffstat (limited to 'debian/patches/0040-Assemble-remove-the-protection-when-clustered-raid-d.patch')
-rw-r--r-- | debian/patches/0040-Assemble-remove-the-protection-when-clustered-raid-d.patch | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/debian/patches/0040-Assemble-remove-the-protection-when-clustered-raid-d.patch b/debian/patches/0040-Assemble-remove-the-protection-when-clustered-raid-d.patch new file mode 100644 index 00000000..22c1bc83 --- /dev/null +++ b/debian/patches/0040-Assemble-remove-the-protection-when-clustered-raid-d.patch @@ -0,0 +1,90 @@ +From 80d1256e98b4995b0a753678f6c7e4a8bb369741 Mon Sep 17 00:00:00 2001 +From: Guoqing Jiang <gqjiang@suse.com> +Date: Fri, 20 Jul 2018 16:05:14 +0800 +Subject: [PATCH 40/40] Assemble: remove the protection when clustered raid do + assemble + +For HA product, RA (resource agent) assembles cluster raid +through call below cmd: + +$MDADM --assemble $mddev --config=$RAIDCONF $MDADM_HOMEHOST + +Sometimes node can't assemble array because all the nodes +need to contend dlm lock, which causes node fence in automatic +test. + +And in fact, we don't need the protection since the assemble +cmd called by RA doesn't change superblock, so revert the +commit 76781701a487090172d32befae07671a10ea88ad ("Assemble: +provide protection when clustered raid do assemble") to remove +unneccessary protection. + +Signed-off-by: Guoqing Jiang <gqjiang@suse.com> +Signed-off-by: Jes Sorensen <jsorensen@fb.com> +--- + Assemble.c | 21 --------------------- + 1 file changed, 21 deletions(-) + +diff --git a/Assemble.c b/Assemble.c +index 0a7ab6f5..23892a37 100644 +--- a/Assemble.c ++++ b/Assemble.c +@@ -1348,9 +1348,6 @@ int Assemble(struct supertype *st, char *mddev, + char chosen_name[1024]; + struct map_ent *map = NULL; + struct map_ent *mp; +- int locked = 0; +- struct mdp_superblock_1 *sb; +- bitmap_super_t *bms; + + /* + * If any subdevs are listed, then any that don't +@@ -1381,12 +1378,6 @@ try_again: + * set of devices failed. Those are now marked as ->used==2 and + * we ignore them and try again + */ +- if (locked) +- /* +- * if come back try_again is called, then need to unlock first, +- * and lock again since the metadate is re-read. +- */ +- cluster_release_dlmlock(); + if (!st && ident->st) + st = ident->st; + if (c->verbose>0) +@@ -1404,14 +1395,6 @@ try_again: + if (!st || !st->sb || !content) + return 2; + +- sb = st->sb; +- bms = (bitmap_super_t*)(((char*)sb) + 4096); +- if (sb && bms->version == BITMAP_MAJOR_CLUSTERED) { +- locked = cluster_get_dlmlock(); +- if (locked != 1) +- return 1; +- } +- + /* We have a full set of devices - we now need to find the + * array device. + * However there is a risk that we are racing with "mdadm -I" +@@ -1542,8 +1525,6 @@ try_again: + err = assemble_container_content(st, mdfd, content, c, + chosen_name, NULL); + close(mdfd); +- if (locked == 1) +- cluster_release_dlmlock(); + return err; + } + +@@ -1888,8 +1869,6 @@ out: + close(mdfd); + + /* '2' means 'OK, but not started yet' */ +- if (locked == 1) +- cluster_release_dlmlock(); + if (rv == -1) { + free(devices); + return 1; +-- +2.17.1 + |