summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <treehugger-gerrit@google.com>2016-06-28 21:30:42 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2016-06-28 21:30:42 +0000
commitd937202a3b23e6908c2109d5a96da237ee9cbba8 (patch)
treed22e7c16bf737670ad0d31ebe566d04a489ff9c6
parent0380bb5f26d3df1d6d2933da1c8ced11fe0ef38f (diff)
parentc1eb02e560462434f96139e6d9d3398112ac8203 (diff)
downloadextras-d937202a3b23e6908c2109d5a96da237ee9cbba8.tar.gz
Merge "pagingtest: fix large read errors"
-rw-r--r--tests/pagingtest/pagingtest.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/tests/pagingtest/pagingtest.c b/tests/pagingtest/pagingtest.c
index 17a4ad4c..158d8a36 100644
--- a/tests/pagingtest/pagingtest.c
+++ b/tests/pagingtest/pagingtest.c
@@ -4,6 +4,7 @@
#include <fcntl.h>
#include <stdbool.h>
#include <stdio.h>
+#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <sys/mman.h>
@@ -17,6 +18,8 @@
int create_tmp_file(char *filename, off_t size) {
void *buf;
+ uint8_t *tmp_buf;
+ off_t tmp_size;
ssize_t rc;
int fd;
int urandom;
@@ -49,17 +52,19 @@ int create_tmp_file(char *filename, off_t size) {
goto err_mmap;
}
- rc = read(urandom, buf, size);
+ tmp_buf = buf;
+ tmp_size = size;
+ do {
+ rc = read(urandom, tmp_buf, tmp_size);
- if (rc < 0) {
- fprintf(stderr, "write random data failed: %s\n", strerror(errno));
- goto err;
- }
+ if (rc < 0) {
+ fprintf(stderr, "write random data failed: %s\n", strerror(errno));
+ goto err;
+ }
- if (rc != size) {
- fprintf(stderr, "write random data incomplete: received %zd, expected %jd\n", rc, (intmax_t)size);
- goto err;
- }
+ tmp_buf += rc;
+ tmp_size -= rc;
+ } while (tmp_size > 0);
if (madvise(buf, size, MADV_DONTNEED)) {
fprintf(stderr, "madvise DONTNEED failed: %s\n", strerror(errno));