f->file_offset = td->o.start_offset;
- if (f->filetype != FIO_TYPE_FILE)
- continue;
if (!total_file_size)
continue;
+ if (f->filetype != FIO_TYPE_FILE) {
+ if (!f->file_size)
+ f->file_size = total_file_size / td->o.nr_files;
+ continue;
+ }
+
if (f->flags & FIO_FILE_EXISTS) {
if ((f->file_size > td->o.size / td->o.nr_files) ||
!f->file_size)
if (td->o.unlink)
f->flags |= FIO_FILE_UNLINK;
+ f->flags |= FIO_FILE_NOSORT;
err = create_file(td, f);
if (err)
break;
ret = madvise(f->mmap, f->file_size, MADV_DONTNEED);
else if (f->filetype == FIO_TYPE_FILE)
ret = fadvise(f->fd, f->file_offset, f->file_size, POSIX_FADV_DONTNEED);
- else if (f->filetype == FIO_TYPE_BD)
+ else if (f->filetype == FIO_TYPE_BD) {
ret = blockdev_invalidate_cache(f->fd);
- else if (f->filetype == FIO_TYPE_CHAR)
+ if (ret < 0 && errno == EACCES && geteuid()) {
+ log_err("fio: only root may flush block devices. Cache flush bypassed!\n");
+ ret = 0;
+ }
+ } else if (f->filetype == FIO_TYPE_CHAR)
ret = 0;
if (ret < 0) {