fio: add libpmem engine
[fio.git] / iolog.h
diff --git a/iolog.h b/iolog.h
index 60ee3e920f48e3b1f0fa67aa51f7083e9c32d2c4..bc3a0b5fea93770fa39309fb71526c751e803034 100644 (file)
--- a/iolog.h
+++ b/iolog.h
@@ -4,7 +4,7 @@
 #include "lib/rbtree.h"
 #include "lib/ieee754.h"
 #include "flist.h"
-#include "ioengine.h"
+#include "ioengines.h"
 
 /*
  * Use for maintaining statistics
@@ -117,7 +117,7 @@ struct io_log {
         */
        struct io_stat avg_window[DDIR_RWDIR_CNT];
        unsigned long avg_msec;
-       unsigned long avg_last;
+       unsigned long avg_last[DDIR_RWDIR_CNT];
 
        /*
         * Windowed latency histograms, for keeping track of when we need to
@@ -131,6 +131,11 @@ struct io_log {
        pthread_mutex_t chunk_lock;
        unsigned int chunk_seq;
        struct flist_head chunk_list;
+
+       pthread_mutex_t deferred_free_lock;
+#define IOLOG_MAX_DEFER        8
+       void *deferred_items[IOLOG_MAX_DEFER];
+       unsigned int deferred;
 };
 
 /*
@@ -259,7 +264,7 @@ struct log_params {
 
 static inline bool per_unit_log(struct io_log *log)
 {
-       return log && !log->avg_msec;
+       return log && (!log->avg_msec || log->log_gz || log->log_gz_store);
 }
 
 static inline bool inline_log(struct io_log *log)
@@ -271,7 +276,7 @@ static inline bool inline_log(struct io_log *log)
 
 static inline void ipo_bytes_align(unsigned int replay_align, struct io_piece *ipo)
 {
-       if (replay_align)
+       if (!replay_align)
                return;
 
        ipo->offset &= ~(replay_align - (uint64_t)1);