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>
This commit is contained in:
parent
0d30ccec0e
commit
5ec0f3738a
14
Monitor.c
14
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(
|
||||
|
|
Loading…
Reference in New Issue