diff options
author | Christoph Hellwig <hch@infradead.org> | 2013-11-07 17:00:45 +0000 |
---|---|---|
committer | Rich Johnston <rjohnston@sgi.com> | 2013-11-09 13:06:44 -0600 |
commit | a16f0cfe3ad2f02109f31333703ca6f78ed6127d (patch) | |
tree | 51ef414740b5f1ee145104e7554eaf4d9bf5219b | |
parent | 812838f86d57b1182bec62b5d472037392ab7966 (diff) |
xfstests: posix_memalign and io_submit do not set errno
posix_memalign and io_submit do not set errno, but rather return the
error respectively the negated error directly.
Found this out while figuring out why 240 reported an impossible error
from io_submit when run on NFS.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Mark Tinguely <tinguely@sgi.com>
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>
-rw-r--r-- | src/aio-dio-regress/aiodio_sparse2.c | 27 | ||||
-rw-r--r-- | src/fsync-tester.c | 15 | ||||
-rw-r--r-- | src/randholes.c | 11 | ||||
-rw-r--r-- | src/trunc.c | 6 |
4 files changed, 36 insertions, 23 deletions
diff --git a/src/aio-dio-regress/aiodio_sparse2.c b/src/aio-dio-regress/aiodio_sparse2.c index 79aa9241..51ede5bb 100644 --- a/src/aio-dio-regress/aiodio_sparse2.c +++ b/src/aio-dio-regress/aiodio_sparse2.c @@ -117,8 +117,10 @@ void aiodio_sparse(char *filename, int align, int writesize, int startoffset, in for (i = 0; i < num_aio; i++) { void *bufptr; - if (posix_memalign(&bufptr, align, writesize)) { - perror("cannot malloc aligned memory"); + w = posix_memalign(&bufptr, align, writesize); + if (w) { + fprintf(stderr, "cannot malloc aligned memory: %s\n", + strerror(w)); close(fd); unlink(filename); return; @@ -131,8 +133,10 @@ void aiodio_sparse(char *filename, int align, int writesize, int startoffset, in /* * start the 1st num_aio write requests */ - if ((w = io_submit(myctx, num_aio, iocbs)) < 0) { - perror("io_submit failed"); + w = io_submit(myctx, num_aio, iocbs); + if (w < 0) { + fprintf(stderr, "io_submit failed: %s\n", + strerror(-w)); close(fd); unlink(filename); return; @@ -182,10 +186,11 @@ void aiodio_sparse(char *filename, int align, int writesize, int startoffset, in /* start next write */ io_prep_pwrite(iocbp, fd, iocbp->u.c.buf, writesize, offset); offset += step; - if ((w = io_submit(myctx, 1, &iocbp)) < 0) { - fprintf(stderr, "io_submit failed at offset %lld\n", - (long long)offset); - perror(""); + w = io_submit(myctx, 1, &iocbp); + if (w < 0) { + fprintf(stderr, "io_submit failed at offset %lld: %s\n", + (long long)offset, + strerror(-w)); break; } if (debug) @@ -200,8 +205,10 @@ void aiodio_sparse(char *filename, int align, int writesize, int startoffset, in int n; struct iocb *iocbp; - if ((n = io_getevents(myctx, 1, 1, &event, 0)) != 1) { - perror("io_getevents failed"); + n = io_getevents(myctx, 1, 1, &event, 0); + if (n != 1) { + fprintf(stderr, "io_getevents failed: %s\n", + strerror(-n)); break; } aio_inflight--; diff --git a/src/fsync-tester.c b/src/fsync-tester.c index 1c03ed02..657e00f1 100644 --- a/src/fsync-tester.c +++ b/src/fsync-tester.c @@ -437,15 +437,16 @@ int main(int argc, char **argv) if (direct_io) { flags |= O_DIRECT; ret = posix_memalign((void **)&buf, getpagesize(), 4096); - if (ret) - buf = NULL; + if (ret) { + fprintf(stderr, "Error allocating buf: %d\n", ret); + return 1; + } } else { buf = malloc(4096); - } - - if (!buf) { - fprintf(stderr, "Error allocating buf: %d\n", errno); - return 1; + if (!buf) { + fprintf(stderr, "Error allocating buf: %d\n", errno); + return 1; + } } test_fd = open(fname, flags, 0644); diff --git a/src/randholes.c b/src/randholes.c index 545ee8ed..5ad602ea 100644 --- a/src/randholes.c +++ b/src/randholes.c @@ -193,11 +193,13 @@ writeblks(char *fname, int fd, size_t alignment) __uint64_t offset; char *buffer = NULL; int block; + int ret; struct flock64 fl; if (!test) { - if (posix_memalign((void **) &buffer, alignment, blocksize)) { - perror("malloc"); + ret = posix_memalign((void **) &buffer, alignment, blocksize); + if (ret) { + fprintf(stderr, "posix_memalign: %s\n", strerror(ret)); exit(1); } memset(buffer, 0, blocksize); @@ -279,8 +281,9 @@ readblks(int fd, size_t alignment) if (alloconly) return 0; xfer = READ_XFER*blocksize; - if (posix_memalign((void **) &buffer, alignment, xfer)) { - perror("malloc"); + err = posix_memalign((void **) &buffer, alignment, xfer); + if (err) { + fprintf(stderr, "posix_memalign: %s\n", strerror(err)); exit(1); } memset(buffer, 0, xfer); diff --git a/src/trunc.c b/src/trunc.c index 38fb21f6..c6098523 100644 --- a/src/trunc.c +++ b/src/trunc.c @@ -69,10 +69,12 @@ while((c=getopt(argc,argv,"f:"))!=EOF) { } err = posix_memalign((void **)&buf, ALIGNMENT, BUFSIZE); - if (err < 0) perror("posix_memalign failed"); + if (err) + fprintf(stderr, "posix_memalign failed: %s\n", strerror(err)); err = posix_memalign((void **)&goodbuf, ALIGNMENT, BUFSIZE); - if (err < 0) perror("posix_memalign failed"); + if (err) + fprintf(stderr, "posix_memalign failed: %s\n", strerror(err)); err = unlink(filename); /* if (err < 0) perror("unlink failed");*/ |