sem.c: cleanup
[fio.git] / io_u.c
diff --git a/io_u.c b/io_u.c
index faa1c5e36a8d84ac558d6867a7e796ec5a71d8fe..04d7dcbd2fc368397a5e4765e6e702d438cbbc80 100644 (file)
--- a/io_u.c
+++ b/io_u.c
@@ -328,8 +328,12 @@ void put_io_u(struct thread_data *td, struct io_u *io_u)
        assert((io_u->flags & IO_U_F_FREE) == 0);
        io_u->flags |= IO_U_F_FREE;
 
-       if (io_u->file)
-               put_file(td, io_u->file);
+       if (io_u->file) {
+               int ret = put_file(td, io_u->file);
+
+               if (ret)
+                       td_verror(td, ret, "file close");
+       }
 
        io_u->file = NULL;
        list_del(&io_u->list);
@@ -557,7 +561,7 @@ static struct fio_file *get_next_file_rand(struct thread_data *td, int goodf,
                long r = os_random_long(&td->next_file_state);
 
                fno = (unsigned int) ((double) td->o.nr_files * (r / (RAND_MAX + 1.0)));
-               f = &td->files[fno];
+               f = td->files[fno];
                if (f->flags & FIO_FILE_DONE)
                        continue;
 
@@ -578,7 +582,7 @@ static struct fio_file *get_next_file_rr(struct thread_data *td, int goodf,
        struct fio_file *f;
 
        do {
-               f = &td->files[td->next_file];
+               f = td->files[td->next_file];
 
                td->next_file++;
                if (td->next_file >= td->o.nr_files)
@@ -661,6 +665,7 @@ set_file:
                 * td_io_close() does a put_file() as well, so no need to
                 * do that here.
                 */
+               unlock_file(io_u->file);
                io_u->file = NULL;
                td_io_close_file(td, f);
                f->flags |= FIO_FILE_DONE;
@@ -820,8 +825,6 @@ static void io_completed(struct thread_data *td, struct io_u *io_u,
                td->io_bytes[idx] += bytes;
                td->this_io_bytes[idx] += bytes;
 
-               io_u->file->last_completed_pos = io_u->endpos;
-
                usec = utime_since(&io_u->issue_time, &icd->time);
 
                add_clat_sample(td, idx, usec);