Fix problem with f->last_completed_pos not being correct on requeues

This causes an unnecessary seek. Usually this is just noise, but if
the device isn't seekable, it becomes a real problem.

Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/fio.c b/fio.c
index 160d533..296ac34 100644
--- a/fio.c
+++ b/fio.c
@@ -332,6 +332,7 @@
 				ret = -io_u->error;
 			else if (io_u->resid) {
 				int bytes = io_u->xfer_buflen - io_u->resid;
+				struct fio_file *f = io_u->file;
 
 				/*
 				 * zero read, fail
@@ -345,8 +346,9 @@
 				io_u->xfer_buflen = io_u->resid;
 				io_u->xfer_buf += bytes;
 				io_u->offset += bytes;
+				f->last_completed_pos = io_u->offset;
 
-				if (io_u->offset == io_u->file->real_file_size)
+				if (io_u->offset == f->real_file_size)
 					goto sync_done;
 
 				requeue_io_u(td, &io_u);
@@ -446,6 +448,7 @@
 				ret = -io_u->error;
 			else if (io_u->resid) {
 				int bytes = io_u->xfer_buflen - io_u->resid;
+				struct fio_file *f = io_u->file;
 
 				/*
 				 * zero read, fail
@@ -459,8 +462,9 @@
 				io_u->xfer_buflen = io_u->resid;
 				io_u->xfer_buf += bytes;
 				io_u->offset += bytes;
+				f->last_completed_pos = io_u->offset;
 
-				if (io_u->offset == io_u->file->real_file_size)
+				if (io_u->offset == f->real_file_size)
 					goto sync_done;
 
 				requeue_io_u(td, &io_u);