summaryrefslogtreecommitdiff
path: root/Monitor.c
diff options
context:
space:
mode:
authorMarcin Labun <marcin.labun@intel.com>2010-12-16 15:16:12 +0100
committerNeilBrown <neilb@suse.de>2010-12-21 09:07:08 +1100
commit5ec0f3738aaadfdf182b830df520731a544b45ee (patch)
treefb60880fde5803214a71462d40e2c2ca1716ab66 /Monitor.c
parent0d30ccec0e1e9ea6a78e7b7d9d0c8a540868e265 (diff)
Monitor: Check destination array domain early.
Destination arrays that do not have any domains are excluded from spare sharing. We can check it early, without searching for donor arrays. Signed-off-by: Marcin Labun <marcin.labun@intel.com> Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'Monitor.c')
-rw-r--r--Monitor.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/Monitor.c b/Monitor.c
index ce160f3e..e79f658b 100644
--- a/Monitor.c
+++ b/Monitor.c
@@ -767,8 +767,7 @@ static int move_spare(struct state *from, struct state *to,
return 0;
}
-static int check_donor(struct state *from, struct state *to,
- struct domainlist *domlist)
+static int check_donor(struct state *from, struct state *to)
{
struct state *sub;
@@ -790,8 +789,6 @@ static int check_donor(struct state *from, struct state *to,
return 0;
if (from->spare <= 0)
return 0;
- if (domlist == NULL)
- return 0;
return 1;
}
@@ -923,10 +920,15 @@ static void try_spare_migration(struct state *statelist, struct alert_info *info
to->metadata->ss->name);
if (to->spare_group)
domain_add(&domlist, to->spare_group);
-
+ /*
+ * No spare migration if the destination
+ * has no domain. Skip this array.
+ */
+ if (!domlist)
+ continue;
for (from=statelist ; from ; from=from->next) {
dev_t devid;
- if (!check_donor(from, to, domlist))
+ if (!check_donor(from, to))
continue;
if (from->metadata->ss->external)
devid = container_choose_spare(