Merge branch 'master' of https://github.com/celestinechen/fio
[fio.git] / io_ddir.h
index 6adb7fb8b3aefd11c2050473971d9782763eaf28..280c1e796a2690b599f28ae453020d11cbc3b836 100644 (file)
--- a/io_ddir.h
+++ b/io_ddir.h
@@ -6,26 +6,26 @@ enum fio_ddir {
        DDIR_WRITE = 1,
        DDIR_TRIM = 2,
        DDIR_SYNC = 3,
-
        DDIR_DATASYNC,
        DDIR_SYNC_FILE_RANGE,
        DDIR_WAIT,
        DDIR_LAST,
        DDIR_INVAL = -1,
-};
+       DDIR_TIMEOUT = -2,
 
-enum {
        DDIR_RWDIR_CNT = 3,
        DDIR_RWDIR_SYNC_CNT = 4,
 };
 
+#define for_each_rw_ddir(ddir) for (enum fio_ddir ddir = 0; ddir < DDIR_RWDIR_CNT; ddir++)
+
 static inline const char *io_ddir_name(enum fio_ddir ddir)
 {
        static const char *name[] = { "read", "write", "trim", "sync",
                                        "datasync", "sync_file_range",
                                        "wait", };
 
-       if (ddir < DDIR_LAST)
+       if (ddir >= 0 && ddir < DDIR_LAST)
                return name[ddir];
 
        return "invalid";
@@ -42,6 +42,7 @@ enum td_ddir {
        TD_DDIR_RANDRW          = TD_DDIR_RW | TD_DDIR_RAND,
        TD_DDIR_RANDTRIM        = TD_DDIR_TRIM | TD_DDIR_RAND,
        TD_DDIR_TRIMWRITE       = TD_DDIR_TRIM | TD_DDIR_WRITE,
+       TD_DDIR_RANDTRIMWRITE   = TD_DDIR_RANDTRIM | TD_DDIR_WRITE,
 };
 
 #define td_read(td)            ((td)->o.td_ddir & TD_DDIR_READ)
@@ -52,6 +53,8 @@ enum td_ddir {
 #define file_randommap(td, f)  (!(td)->o.norandommap && fio_file_axmap((f)))
 #define td_trimwrite(td)       (((td)->o.td_ddir & TD_DDIR_TRIMWRITE) \
                                        == TD_DDIR_TRIMWRITE)
+#define td_randtrimwrite(td)   (((td)->o.td_ddir & TD_DDIR_RANDTRIMWRITE) \
+                                       == TD_DDIR_RANDTRIMWRITE)
 
 static inline int ddir_sync(enum fio_ddir ddir)
 {
@@ -68,7 +71,8 @@ static inline const char *ddir_str(enum td_ddir ddir)
 {
        static const char *__str[] = { NULL, "read", "write", "rw", "rand",
                                "randread", "randwrite", "randrw",
-                               "trim", NULL, "trimwrite", NULL, "randtrim" };
+                               "trim", NULL, "trimwrite", NULL, "randtrim",
+                               NULL, "randtrimwrite" };
 
        return __str[ddir];
 }