Fix size setting on raw devices
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/filesetup.c b/filesetup.c
index 40a1663..161f63e 100644
--- a/filesetup.c
+++ b/filesetup.c
@@ -138,6 +138,9 @@
{
int ret = 0;
+ if (f->flags & FIO_SIZE_KNOWN)
+ return 0;
+
if (f->filetype == FIO_TYPE_FILE)
ret = file_size(td, f);
else if (f->filetype == FIO_TYPE_BD)
@@ -153,6 +156,7 @@
return 1;
}
+ f->flags |= FIO_SIZE_KNOWN;
return 0;
}
@@ -280,6 +284,9 @@
clear_error(td);
else
td->io_ops->close_file(td, f);
+
+ if (f->real_file_size == -1ULL && td->o.size)
+ f->real_file_size = td->o.size / td->o.nr_files;
}
}
@@ -321,7 +328,7 @@
/*
* device/file sizes are zero and no size given, punt
*/
- if (!total_size && !td->o.size) {
+ if ((!total_size || total_size == -1ULL) && !td->o.size) {
log_err("%s: you need to specify size=\n", td->o.name);
td_verror(td, EINVAL, "total_file_size");
return 1;
@@ -386,6 +393,7 @@
if (!(f->flags & FIO_FILE_EXTEND))
continue;
+ assert(f->filetype == FIO_TYPE_FILE);
f->flags &= ~FIO_FILE_EXTEND;
f->real_file_size = f->io_size;
err = extend_file(td, f);