Don't completely fail for block device flushing failure

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/filesetup.c b/filesetup.c
index 0abce8c..fb92191 100644
--- a/filesetup.c
+++ b/filesetup.c
@@ -344,9 +344,13 @@
 		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) {