and limited to 'size' in total (if that is given). If not
given, each created file is the same size.
+fill_device=bool Sets size to something really large and waits for ENOSPC (no
+ space left on device) as the terminating condition. Only makes
+ sense with sequential write.
+
blocksize=siint
bs=siint The block size used for the io units. Defaults to 4k. Values
can be given for both read and writes. If a single siint is
* device/file sizes are zero and no size given, punt
*/
if ((!total_size || total_size == -1ULL) && !td->o.size &&
- !(td->io_ops->flags & FIO_NOIO)) {
+ !(td->io_ops->flags & FIO_NOIO) && !td->o.fill_device) {
log_err("%s: you need to specify size=\n", td->o.name);
td_verror(td, EINVAL, "total_file_size");
return 1;
}
}
+ if (td->o.fill_device && td->error == ENOSPC) {
+ td->error = 0;
+ td->terminate = 1;
+ }
if (!td->error) {
struct fio_file *f;
unsigned int iodepth_batch;
unsigned long long size;
+ unsigned int fill_device;
unsigned long long file_size_low;
unsigned long long file_size_high;
unsigned long long start_offset;
o->time_based = 0;
}
+ if (o->fill_device && !o->size)
+ o->size = ULONG_LONG_MAX;
+
return 0;
}
.minval = 1,
.help = "Total size of device or files",
},
+ {
+ .name = "fill_device",
+ .type = FIO_OPT_BOOL,
+ .off1 = td_var_offset(fill_device),
+ .help = "Write until an ENOSPC error occurs",
+ .def = "0",
+ },
{
.name = "filesize",
.type = FIO_OPT_STR_VAL,