Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
if (td->terminate)
unlink(f->file_name);
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;
+ }
+ }
int put_file(struct thread_data *td, struct fio_file *f)
{
int put_file(struct thread_data *td, struct fio_file *f)
{
+ int f_ret = 0, ret = 0;
dprint(FD_FILE, "put file %s, ref=%d\n", f->file_name, f->references);
dprint(FD_FILE, "put file %s, ref=%d\n", f->file_name, f->references);
return 0;
if (should_fsync(td) && td->o.fsync_on_close)
return 0;
if (should_fsync(td) && td->o.fsync_on_close)
if (td->io_ops->close_file)
ret = td->io_ops->close_file(td, f);
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;
td->nr_open_files--;
f->flags &= ~FIO_FILE_OPEN;
return ret;