Merge branch 'for-4.15/block' of git://git.kernel.dk/linux-block
[sfrench/cifs-2.6.git] / include / linux / backing-dev-defs.h
index fff4cfa0c21df2117f99d93f7d6c7130d02c9d87..bfe86b54f6c149a6c8718f13417ecf7a796b7193 100644 (file)
@@ -25,6 +25,7 @@ enum wb_state {
        WB_shutting_down,       /* wb_shutdown() in progress */
        WB_writeback_running,   /* Writeback is in progress */
        WB_has_dirty_io,        /* Dirty inodes on ->b_{dirty|io|more_io} */
+       WB_start_all,           /* nr_pages == 0 (all) work pending */
 };
 
 enum wb_congested_state {
@@ -44,6 +45,28 @@ enum wb_stat_item {
 
 #define WB_STAT_BATCH (8*(1+ilog2(nr_cpu_ids)))
 
+/*
+ * why some writeback work was initiated
+ */
+enum wb_reason {
+       WB_REASON_BACKGROUND,
+       WB_REASON_VMSCAN,
+       WB_REASON_SYNC,
+       WB_REASON_PERIODIC,
+       WB_REASON_LAPTOP_TIMER,
+       WB_REASON_FREE_MORE_MEM,
+       WB_REASON_FS_FREE_SPACE,
+       /*
+        * There is no bdi forker thread any more and works are done
+        * by emergency worker, however, this is TPs userland visible
+        * and we'll be exposing exactly the same information,
+        * so it has a mismatch name.
+        */
+       WB_REASON_FORKER_THREAD,
+
+       WB_REASON_MAX,
+};
+
 /*
  * For cgroup writeback, multiple wb's may map to the same blkcg.  Those
  * wb's can operate mostly independently but should share the congested
@@ -116,6 +139,7 @@ struct bdi_writeback {
 
        struct fprop_local_percpu completions;
        int dirty_exceeded;
+       enum wb_reason start_all_reason;
 
        spinlock_t work_lock;           /* protects work_list & dwork scheduling */
        struct list_head work_list;