From 98e1ac4e1a2c7386a1064277f7e67c4736fb6e65 Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Thu, 6 Mar 2008 11:56:48 +0100 Subject: [PATCH] Be more careful about catching fsync() errors Signed-off-by: Jens Axboe --- filesetup.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/filesetup.c b/filesetup.c index 08c365d9..f8e4d77c 100644 --- a/filesetup.c +++ b/filesetup.c @@ -96,8 +96,12 @@ static int extend_file(struct thread_data *td, struct fio_file *f) if (td->terminate) unlink(f->file_name); - else if (td->o.create_fsync) - fsync(f->fd); + else if (td->o.create_fsync) { + if (fsync(f->fd) < 0) { + td_verror(td, errno, "fsync"); + goto err; + } + } free(b); done: @@ -687,7 +691,7 @@ void get_file(struct fio_file *f) int put_file(struct thread_data *td, struct fio_file *f) { - int ret = 0; + int f_ret = 0, ret = 0; dprint(FD_FILE, "put file %s, ref=%d\n", f->file_name, f->references); @@ -699,11 +703,14 @@ int put_file(struct thread_data *td, struct fio_file *f) return 0; if (should_fsync(td) && td->o.fsync_on_close) - fsync(f->fd); + f_ret = fsync(f->fd); if (td->io_ops->close_file) ret = td->io_ops->close_file(td, f); + if (!ret) + ret = !f_ret; + td->nr_open_files--; f->flags &= ~FIO_FILE_OPEN; return ret; -- 2.25.1