]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Fix mdstat_wait_fd
authorNeilBrown <neilb@suse.de>
Tue, 19 Aug 2008 04:55:07 +0000 (14:55 +1000)
committerNeilBrown <neilb@suse.de>
Tue, 19 Aug 2008 04:55:07 +0000 (14:55 +1000)
It didn't necessarily wait for the fd.

Signed-off-by: NeilBrown <neilb@suse.de>
mdstat.c

index 4bb29d85c822237e1a0244ff477561f125e0e5c5..00714b485905be156fb33ce2d009b02171cd8154 100644 (file)
--- a/mdstat.c
+++ b/mdstat.c
@@ -260,25 +260,31 @@ void mdstat_wait(int seconds)
 {
        fd_set fds;
        struct timeval tm;
+       int maxfd = 0;
        FD_ZERO(&fds);
-       if (mdstat_fd >= 0)
+       if (mdstat_fd >= 0) {
                FD_SET(mdstat_fd, &fds);
+               maxfd = mdstat_fd;
+       }
        tm.tv_sec = seconds;
        tm.tv_usec = 0;
-       select(mdstat_fd >2 ? mdstat_fd+1:3, NULL, NULL, &fds, &tm);
+       select(maxfd + 1, NULL, NULL, &fds, &tm);
 }
 
 void mdstat_wait_fd(int fd, const sigset_t *sigmask)
 {
        fd_set fds, rfds;
+       int maxfd = fd;
 
        FD_ZERO(&fds);
        FD_ZERO(&rfds);
        if (mdstat_fd >= 0)
                FD_SET(mdstat_fd, &fds);
        FD_SET(fd, &rfds);
+       if (mdstat_fd > maxfd)
+               maxfd = mdstat_fd;
 
-       pselect(mdstat_fd >2 ? mdstat_fd+1:3, &rfds, NULL, &fds,
+       pselect(maxfd + 1, &rfds, NULL, &fds,
                NULL, sigmask);
 }