mirror of
https://github.com/linux-apfs/apfstests.git
synced 2026-05-01 15:01:44 -07:00
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>
This commit is contained in:
committed by
Rich Johnston
parent
812838f86d
commit
a16f0cfe3a
@@ -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--;
|
||||
|
||||
+5
-4
@@ -437,16 +437,17 @@ 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;
|
||||
}
|
||||
}
|
||||
|
||||
test_fd = open(fname, flags, 0644);
|
||||
if (test_fd < 0) {
|
||||
|
||||
+7
-4
@@ -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);
|
||||
|
||||
+4
-2
@@ -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");*/
|
||||
|
||||
Reference in New Issue
Block a user