projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
backend: terminate loop if we didn't do IO
[fio.git]
/
filesetup.c
diff --git
a/filesetup.c
b/filesetup.c
index b5628ce65bdb7d52d59e0da46a87439bacbdca50..76667547a2f4b518db6ca9bbfea823eeffbaa399 100644
(file)
--- a/
filesetup.c
+++ b/
filesetup.c
@@
-391,7
+391,7
@@
static int __file_invalidate_cache(struct thread_data *td, struct fio_file *f,
unsigned long long off,
unsigned long long len)
{
unsigned long long off,
unsigned long long len)
{
- int ret = 0;
+ int
errval = 0,
ret = 0;
#ifdef CONFIG_ESX
return 0;
#ifdef CONFIG_ESX
return 0;
@@
-408,11
+408,15
@@
static int __file_invalidate_cache(struct thread_data *td, struct fio_file *f,
dprint(FD_IO, "invalidate cache %s: %llu/%llu\n", f->file_name, off,
len);
dprint(FD_IO, "invalidate cache %s: %llu/%llu\n", f->file_name, off,
len);
- if (td->io_ops->invalidate)
+ if (td->io_ops->invalidate)
{
ret = td->io_ops->invalidate(td, f);
ret = td->io_ops->invalidate(td, f);
- else if (f->filetype == FIO_TYPE_FILE)
+ if (ret < 0)
+ errval = ret;
+ } else if (f->filetype == FIO_TYPE_FILE) {
ret = posix_fadvise(f->fd, off, len, POSIX_FADV_DONTNEED);
ret = posix_fadvise(f->fd, off, len, POSIX_FADV_DONTNEED);
- else if (f->filetype == FIO_TYPE_BD) {
+ if (ret)
+ errval = ret;
+ } else if (f->filetype == FIO_TYPE_BD) {
int retry_count = 0;
ret = blockdev_invalidate_cache(f);
int retry_count = 0;
ret = blockdev_invalidate_cache(f);
@@
-434,6
+438,8
@@
static int __file_invalidate_cache(struct thread_data *td, struct fio_file *f,
}
ret = 0;
}
}
ret = 0;
}
+ if (ret < 0)
+ errval = errno;
} else if (f->filetype == FIO_TYPE_CHAR || f->filetype == FIO_TYPE_PIPE)
ret = 0;
} else if (f->filetype == FIO_TYPE_CHAR || f->filetype == FIO_TYPE_PIPE)
ret = 0;
@@
-443,10
+449,8
@@
static int __file_invalidate_cache(struct thread_data *td, struct fio_file *f,
* function to flush eg block device caches. So just warn and
* continue on our way.
*/
* function to flush eg block device caches. So just warn and
* continue on our way.
*/
- if (ret) {
- log_info("fio: cache invalidation of %s failed: %s\n", f->file_name, strerror(errno));
- ret = 0;
- }
+ if (errval)
+ log_info("fio: cache invalidation of %s failed: %s\n", f->file_name, strerror(errval));
return 0;
return 0;