summaryrefslogtreecommitdiff
path: root/super-intel.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2013-07-11 09:48:25 +1000
committerNeilBrown <neilb@suse.de>2013-07-11 12:26:15 +1000
commit85ca499c6b65c8999bd905dd17c0a37707abd77e (patch)
tree9adb97cfc2b9e40229f99a98dd45b10bee6e37fe /super-intel.c
parent3afaff930c4840911ebf114f43fdd5d93c07af1f (diff)
IMSM: fix wait_for_reshape_imsm
This was waiting on "reshape_position" which doesn't get update events. Before sysfs_wait was introduced, the code to wait didn't wait at all, so it spun. With sysfs_wait, it would wait forever. Change to wait in sync_completed which does get events. Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'super-intel.c')
-rw-r--r--super-intel.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/super-intel.c b/super-intel.c
index 27c725fc..baea13cc 100644
--- a/super-intel.c
+++ b/super-intel.c
@@ -10125,7 +10125,7 @@ exit_imsm_reshape_super:
******************************************************************************/
int wait_for_reshape_imsm(struct mdinfo *sra, int ndata)
{
- int fd = sysfs_get_fd(sra, NULL, "reshape_position");
+ int fd = sysfs_get_fd(sra, NULL, "sync_completed");
unsigned long long completed;
/* to_complete : new sync_max position */
unsigned long long to_complete = sra->reshape_progress;
@@ -10144,10 +10144,10 @@ int wait_for_reshape_imsm(struct mdinfo *sra, int ndata)
return 0;
}
- if (completed > to_complete) {
+ if (completed > position_to_set) {
dprintf("imsm: wait_for_reshape_imsm() "
"wrong next position to set %llu (%llu)\n",
- to_complete, completed);
+ to_complete, position_to_set);
close(fd);
return -1;
}
@@ -10174,7 +10174,7 @@ int wait_for_reshape_imsm(struct mdinfo *sra, int ndata)
close(fd);
return 1;
}
- } while (completed < to_complete);
+ } while (completed < position_to_set);
close(fd);
return 0;