o->unit_base = 8;
}
+#ifndef FIO_HAVE_ANY_FALLOCATE
+ /* Platform doesn't support any fallocate so force it to none */
+ o->fallocate_mode = FIO_FALLOCATE_NONE;
+#endif
+
#ifndef CONFIG_FDATASYNC
if (o->fdatasync_blocks) {
log_info("fio: this platform does not support fdatasync()"
{
const char *engine;
- /*
- * Engine has already been loaded.
- */
- if (td->io_ops)
- return 0;
if (!td->o.ioengine) {
log_err("fio: internal fault, no IO engine specified\n");
return 1;
}
+ if (td->io_ops) {
+ /* An engine is loaded, but the requested ioengine
+ * may have changed.
+ */
+ if (!strcmp(td->io_ops->name, td->o.ioengine)) {
+ /* The right engine is already loaded */
+ return 0;
+ }
+
+ /* Unload the old engine. */
+ free_ioengine(td);
+ }
+
engine = get_engine_name(td->o.ioengine);
td->io_ops = load_ioengine(td, engine);
if (!td->io_ops) {
}
if (!ret && !strcmp(opt, "ioengine")) {
- free_ioengine(td);
if (ioengine_load(td)) {
put_job(td);
td = NULL;