client: improve poll() loop

Signed-off-by: Jens Axboe <axboe@kernel.dk>
diff --git a/client.c b/client.c
index 5f0f710..b632241 100644
--- a/client.c
+++ b/client.c
@@ -31,9 +31,11 @@
 };
 
 enum {
+	Client_created		= 0,
 	Client_connected	= 1,
 	Client_started		= 2,
 	Client_stopped		= 3,
+	Client_exited		= 4,
 };
 
 static FLIST_HEAD(client_list);
@@ -525,14 +527,16 @@
 
 		assert(i == nr_clients);
 
-		ret = poll(pfds, nr_clients, 100);
-		if (ret < 0) {
-			if (errno == EINTR)
+		do {
+			ret = poll(pfds, nr_clients, 100);
+			if (ret < 0) {
+				if (errno == EINTR)
+					continue;
+				log_err("fio: poll clients: %s\n", strerror(errno));
+				break;
+			} else if (!ret)
 				continue;
-			log_err("fio: poll clients: %s\n", strerror(errno));
-			break;
-		} else if (!ret)
-			continue;
+		} while (ret <= 0);
 
 		for (i = 0; i < nr_clients; i++) {
 			if (!(pfds[i].revents & POLLIN))