diff options
author | Marcin Labun <marcin.labun@intel.com> | 2010-12-16 15:16:12 +0100 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2010-12-21 09:07:08 +1100 |
commit | 5ec0f3738aaadfdf182b830df520731a544b45ee (patch) | |
tree | fb60880fde5803214a71462d40e2c2ca1716ab66 /Monitor.c | |
parent | 0d30ccec0e1e9ea6a78e7b7d9d0c8a540868e265 (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.c | 14 |
1 files changed, 8 insertions, 6 deletions
@@ -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( |