FIX: Cannot exit monitor after takeover

When performing backward takeover to raid0 monitor cannot exit
for single raid0 array configuration.
Monitor is locked by communication (ping_manager()) after unfreeze()

Do not ping manager for raid0 array as they shouldn't be monitored.

Signed-off-by: Adam Kwolek <adam.kwolek@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
Adam Kwolek 2010-12-02 09:18:49 +01:00 committed by NeilBrown
parent e9a2ac028e
commit 5158aef126
1 changed files with 6 additions and 2 deletions

8
msg.c
View File

@ -381,6 +381,7 @@ void unblock_monitor(char *container, const int unfreeze)
{
struct mdstat_ent *ent, *e;
struct mdinfo *sra = NULL;
int to_ping = 0;
ent = mdstat_read(0, 0);
if (!ent) {
@ -394,11 +395,14 @@ void unblock_monitor(char *container, const int unfreeze)
if (!is_container_member(e, container))
continue;
sysfs_free(sra);
sra = sysfs_read(-1, e->devnum, GET_VERSION);
sra = sysfs_read(-1, e->devnum, GET_VERSION|GET_LEVEL);
if (sra->array.level > 0)
to_ping++;
if (unblock_subarray(sra, unfreeze))
fprintf(stderr, Name ": Failed to unfreeze %s\n", e->dev);
}
ping_monitor(container);
if (to_ping)
ping_monitor(container);
sysfs_free(sra);
free_mdstat(ent);