FIX: Honor !reshape state on wait_reshape() entry
When wait_reshape() function starts it can occurs that reshape is finished already, before wait_reshape() start. This can lead to wait for change state inside this function for a long time. To avoid this before wait we should test if finish conditions are not reached already. Signed-off-by: Adam Kwolek <adam.kwolek@intel.com> Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
a9d868c3a2
commit
92a19f1a78
14
Grow.c
14
Grow.c
|
@ -548,17 +548,17 @@ static void wait_reshape(struct mdinfo *sra)
|
|||
int fd = sysfs_get_fd(sra, NULL, "sync_action");
|
||||
char action[20];
|
||||
|
||||
do {
|
||||
if (fd < 0)
|
||||
return;
|
||||
|
||||
while (sysfs_fd_get_str(fd, action, 20) > 0 &&
|
||||
strncmp(action, "reshape", 7) == 0) {
|
||||
fd_set rfds;
|
||||
FD_ZERO(&rfds);
|
||||
FD_SET(fd, &rfds);
|
||||
select(fd+1, NULL, NULL, &rfds, NULL);
|
||||
|
||||
if (sysfs_fd_get_str(fd, action, 20) < 0) {
|
||||
close(fd);
|
||||
return;
|
||||
}
|
||||
} while (strncmp(action, "reshape", 7) == 0);
|
||||
}
|
||||
close(fd);
|
||||
}
|
||||
|
||||
static int reshape_super(struct supertype *st, long long size, int level,
|
||||
|
|
Loading…
Reference in New Issue