Revamp file locking
[fio.git] / io_u.c
diff --git a/io_u.c b/io_u.c
index 7ac31a0d297872fe82168e74cff63cfce1880dcb..5a3157a24c498e123db83914eb36e904f1890e24 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)
@@ -764,10 +768,9 @@ struct io_u *get_io_u(struct thread_data *td)
         * Set io data pointers.
         */
        io_u->endpos = io_u->offset + io_u->buflen;
-out:
        io_u->xfer_buf = io_u->buf;
        io_u->xfer_buflen = io_u->buflen;
-
+out:
        if (!td_io_prep(td, io_u)) {
                fio_gettime(&io_u->start_time, NULL);
                return io_u;
@@ -821,8 +824,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);