t/zbd: avoid test case 31 failure with small devices
[fio.git] / os / os-linux.h
index 2f9f7e796dace80b8a609942e019858c60b91782..c5cd6515813146d4f63e0d17427a1b8ee2d9efe1 100644 (file)
@@ -125,13 +125,24 @@ enum {
 #define IOPRIO_BITS            16
 #define IOPRIO_CLASS_SHIFT     13
 
+#define IOPRIO_HINT_BITS       10
+#define IOPRIO_HINT_SHIFT      3
+
 #define IOPRIO_MIN_PRIO                0       /* highest priority */
 #define IOPRIO_MAX_PRIO                7       /* lowest priority */
 
 #define IOPRIO_MIN_PRIO_CLASS  0
 #define IOPRIO_MAX_PRIO_CLASS  3
 
-static inline int ioprio_value(int ioprio_class, int ioprio)
+#define IOPRIO_MIN_PRIO_HINT   0
+#define IOPRIO_MAX_PRIO_HINT   ((1 << IOPRIO_HINT_BITS) - 1)
+
+#define ioprio_class(ioprio)   ((ioprio) >> IOPRIO_CLASS_SHIFT)
+#define ioprio(ioprio)         ((ioprio) & IOPRIO_MAX_PRIO)
+#define ioprio_hint(ioprio)    \
+       (((ioprio) >> IOPRIO_HINT_SHIFT) & IOPRIO_MAX_PRIO_HINT)
+
+static inline int ioprio_value(int ioprio_class, int ioprio, int ioprio_hint)
 {
        /*
         * If no class is set, assume BE
@@ -139,23 +150,23 @@ static inline int ioprio_value(int ioprio_class, int ioprio)
         if (!ioprio_class)
                 ioprio_class = IOPRIO_CLASS_BE;
 
-       return (ioprio_class << IOPRIO_CLASS_SHIFT) | ioprio;
+       return (ioprio_class << IOPRIO_CLASS_SHIFT) |
+               (ioprio_hint << IOPRIO_HINT_SHIFT) |
+               ioprio;
 }
 
 static inline bool ioprio_value_is_class_rt(unsigned int priority)
 {
-       return (priority >> IOPRIO_CLASS_SHIFT) == IOPRIO_CLASS_RT;
+       return ioprio_class(priority) == IOPRIO_CLASS_RT;
 }
 
-static inline int ioprio_set(int which, int who, int ioprio_class, int ioprio)
+static inline int ioprio_set(int which, int who, int ioprio_class, int ioprio,
+                            int ioprio_hint)
 {
        return syscall(__NR_ioprio_set, which, who,
-                      ioprio_value(ioprio_class, ioprio));
+                      ioprio_value(ioprio_class, ioprio, ioprio_hint));
 }
 
-#define ioprio_class(ioprio)   ((ioprio) >> IOPRIO_CLASS_SHIFT)
-#define ioprio(ioprio)         ((ioprio) & 7)
-
 #ifndef CONFIG_HAVE_GETTID
 static inline int gettid(void)
 {