projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
splice: if splicing fails with EINVAL, it's most likely missing fs support
[fio.git]
/
engines
/
splice.c
diff --git
a/engines/splice.c
b/engines/splice.c
index 868f6e0d3b6977ee3b9b0dea52ba3c52045c90b8..03bc7ffcbc12d37e1360c05c5fefc9a132254f93 100644
(file)
--- a/
engines/splice.c
+++ b/
engines/splice.c
@@
-130,6
+130,10
@@
restart:
munmap(map, mmap_len);
goto restart;
}
munmap(map, mmap_len);
goto restart;
}
+ if (errno == EBADF) {
+ ret = -EBADF;
+ break;
+ }
td_verror(td, errno, "vmsplice");
break;
} else if (!ret) {
td_verror(td, errno, "vmsplice");
break;
} else if (!ret) {
@@
-228,8
+232,12
@@
static int fio_spliceio_queue(struct thread_data *td, struct io_u *io_u)
io_u->error = errno;
}
io_u->error = errno;
}
- if (io_u->error)
+ if (io_u->error)
{
td_verror(td, io_u->error, "xfer");
td_verror(td, io_u->error, "xfer");
+ if (io_u->error == EINVAL)
+ log_err("fio: looks like splice doesn't work on this"
+ " file system\n");
+ }
return FIO_Q_COMPLETED;
}
return FIO_Q_COMPLETED;
}
@@
-242,7
+250,6
@@
static void fio_spliceio_cleanup(struct thread_data *td)
close(sd->pipe[0]);
close(sd->pipe[1]);
free(sd);
close(sd->pipe[0]);
close(sd->pipe[1]);
free(sd);
- td->io_ops->data = NULL;
}
}
}
}