From: Christoph Hellwig <hch@infradead.org>
To: xfs@oss.sgi.com
Subject: [PATCH] xfstests: posix_memalign and io_submit do not set errno
Date: Thu, 7 Nov 2013 09:00:45 -0800 [thread overview]
Message-ID: <20131107170045.GA6599@infradead.org> (raw)
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>
diff --git a/src/aio-dio-regress/aiodio_sparse2.c b/src/aio-dio-regress/aiodio_sparse2.c
index 79aa924..51ede5b 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 1c03ed0..657e00f 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 545ee8e..5ad602e 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 38fb21f..c609852 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");*/
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next reply other threads:[~2013-11-07 17:00 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-07 17:00 Christoph Hellwig [this message]
2013-11-07 17:53 ` [PATCH] xfstests: posix_memalign and io_submit do not set errno Mark Tinguely
2013-11-07 18:13 ` Carlos Maiolino
2013-11-10 1:07 ` Rich Johnston
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20131107170045.GA6599@infradead.org \
--to=hch@infradead.org \
--cc=xfs@oss.sgi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.