]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
imsm: use timeout when waiting for reshape progress
authorArtur Paszkiewicz <artur.paszkiewicz@intel.com>
Tue, 5 Jan 2016 16:16:15 +0000 (17:16 +0100)
committerNeilBrown <neilb@suse.com>
Thu, 7 Jan 2016 00:09:53 +0000 (11:09 +1100)
Waiting for reshape progress is done by using select() on sync_completed
to block until an exception condition is signalled on the
filedescriptor. This happens when the attribute's value is updated by
the kernel, but if the array is stopped when mdadm is blocked on
select() this will never happen, because this attribute is then removed
and apparently the kernel doesn't do sysfs_notify() when removing a
sysfs attribute. So set a 3 second timeout for the sysfs_wait() call.

Signed-off-by: Artur Paszkiewicz <artur.paszkiewicz@intel.com>
Signed-off-by: NeilBrown <neilb@suse.com>
super-intel.c

index b8368163877139b7332ffa8ddab2bab3c30af67c..3b3d561a0da21373a5e7ed12aa3748533728c342 100644 (file)
@@ -10393,7 +10393,8 @@ int wait_for_reshape_imsm(struct mdinfo *sra, int ndata)
 
        do {
                char action[20];
-               sysfs_wait(fd, NULL);
+               int timeout = 3000;
+               sysfs_wait(fd, &timeout);
                if (sysfs_get_str(sra, NULL, "sync_action",
                                  action, 20) > 0 &&
                                strncmp(action, "reshape", 7) != 0) {