syslet engine: submission latency numbers
authorJens Axboe <jens.axboe@oracle.com>
Tue, 27 Feb 2007 18:47:13 +0000 (19:47 +0100)
committerJens Axboe <jens.axboe@oracle.com>
Tue, 27 Feb 2007 18:47:13 +0000 (19:47 +0100)
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
engines/syslet-rw.c

index 4b1b263..8ab217f 100644 (file)
@@ -187,6 +187,23 @@ static unsigned long thread_stack_alloc()
        return (unsigned long) malloc(THREAD_STACK_SIZE) + THREAD_STACK_SIZE;
 }
 
+static void fio_syslet_queued(struct thread_data *td, struct syslet_data *sd)
+{
+       struct syslet_uatom *atom;
+       struct timeval now;
+
+       fio_gettime(&now, NULL);
+
+       atom = sd->head;
+       while (atom) {
+               struct io_u *io_u = atom->private;
+
+               memcpy(&io_u->issue_time, &now, sizeof(now));
+               io_u_queued(td, io_u);
+               atom = atom->next;
+       }
+}
+
 static int fio_syslet_commit(struct thread_data *td)
 {
        struct syslet_data *sd = td->io_ops->data;
@@ -200,6 +217,8 @@ static int fio_syslet_commit(struct thread_data *td)
        if (!sd->ahu.new_thread_stack)
                sd->ahu.new_thread_stack = thread_stack_alloc();
 
+       fio_syslet_queued(td, sd);
+
        /*
         * On sync completion, the atom is returned. So on NULL return
         * it's queued asynchronously.