diff --git a/client.c b/client.c
index 96b844c..52440f0 100644
--- a/client.c
+++ b/client.c
@@ -89,6 +89,30 @@
 		INIT_FLIST_HEAD(&client_hash[i]);
 }
 
+static int read_data(int fd, void *data, size_t size)
+{
+	ssize_t ret;
+
+	while (size) {
+		ret = read(fd, data, size);
+		if (ret < 0) {
+			if (errno == EAGAIN || errno == EINTR)
+				continue;
+			break;
+		} else if (!ret)
+			break;
+		else {
+			data += ret;
+			size -= ret;
+		}
+	}
+
+	if (size)
+		return EAGAIN;
+
+	return 0;
+}
+
 static void fio_client_json_init(void)
 {
 	if (output_format != FIO_OUTPUT_JSON)
@@ -691,21 +715,7 @@
 
 	len = sb.st_size;
 	p = buf;
-	do {
-		ret = read(fd, p, len);
-		if (ret > 0) {
-			len -= ret;
-			if (!len)
-				break;
-			p += ret;
-			continue;
-		} else if (!ret)
-			break;
-		else if (errno == EAGAIN || errno == EINTR)
-			continue;
-	} while (1);
-
-	if (len) {
+	if (read_data(fd, p, len)) {
 		log_err("fio: failed reading job file %s\n", filename);
 		close(fd);
 		free(pdu);
@@ -1330,28 +1340,6 @@
 	fio_net_send_cmd(fd, FIO_NET_CMD_SENDFILE, rep, size, &tag, NULL);
 }
 
-static int read_data(int fd, void *data, size_t size)
-{
-	ssize_t ret;
-
-	while (size) {
-		ret = read(fd, data, size);
-		if (ret < 0)
-			return errno;
-		else if (!ret)
-			break;
-		else {
-			data += ret;
-			size -= ret;
-		}
-	}
-
-	if (size)
-		return EAGAIN;
-
-	return 0;
-}
-
 static int send_file(struct fio_client *client, struct cmd_sendfile *pdu,
 		     uint64_t tag)
 {
