}
 }
 
+static int queue_write_hint_show(void *data, struct seq_file *m)
+{
+       struct request_queue *q = data;
+       int i;
+
+       for (i = 0; i < BLK_MAX_WRITE_HINTS; i++)
+               seq_printf(m, "hint%d: %llu\n", i, q->write_hints[i]);
+
+       return 0;
+}
+
+static ssize_t queue_write_hint_store(void *data, const char __user *buf,
+                                     size_t count, loff_t *ppos)
+{
+       struct request_queue *q = data;
+       int i;
+
+       for (i = 0; i < BLK_MAX_WRITE_HINTS; i++)
+               q->write_hints[i] = 0;
+
+       return count;
+}
+
 static int queue_poll_stat_show(void *data, struct seq_file *m)
 {
        struct request_queue *q = data;
        {"poll_stat", 0400, queue_poll_stat_show},
        {"requeue_list", 0400, .seq_ops = &queue_requeue_list_seq_ops},
        {"state", 0600, queue_state_show, queue_state_write},
+       {"write_hints", 0600, queue_write_hint_show, queue_write_hint_store},
        {},
 };
 
 
        void                    *rq_alloc_data;
 
        struct work_struct      release_work;
+
+#define BLK_MAX_WRITE_HINTS    5
+       u64                     write_hints[BLK_MAX_WRITE_HINTS];
 };
 
 #define QUEUE_FLAG_QUEUED      1       /* uses generic tag queueing */