diff options
Diffstat (limited to 'include/linux/writeback.h')
| -rw-r--r-- | include/linux/writeback.h | 33 | 
1 files changed, 27 insertions, 6 deletions
diff --git a/include/linux/writeback.h b/include/linux/writeback.h index 2b8963ff0f3..a378c295851 100644 --- a/include/linux/writeback.h +++ b/include/linux/writeback.h @@ -39,6 +39,23 @@ enum writeback_sync_modes {  };  /* + * why some writeback work was initiated + */ +enum wb_reason { +	WB_REASON_BACKGROUND, +	WB_REASON_TRY_TO_FREE_PAGES, +	WB_REASON_SYNC, +	WB_REASON_PERIODIC, +	WB_REASON_LAPTOP_TIMER, +	WB_REASON_FREE_MORE_MEM, +	WB_REASON_FS_FREE_SPACE, +	WB_REASON_FORKER_THREAD, + +	WB_REASON_MAX, +}; +extern const char *wb_reason_name[]; + +/*   * A control structure which tells the writeback code what to do.  These are   * always on the stack, and hence need no locking.  They are always initialised   * in a manner such that unspecified fields are set to zero. @@ -69,14 +86,17 @@ struct writeback_control {   */	  struct bdi_writeback;  int inode_wait(void *); -void writeback_inodes_sb(struct super_block *); -void writeback_inodes_sb_nr(struct super_block *, unsigned long nr); -int writeback_inodes_sb_if_idle(struct super_block *); -int writeback_inodes_sb_nr_if_idle(struct super_block *, unsigned long nr); +void writeback_inodes_sb(struct super_block *, enum wb_reason reason); +void writeback_inodes_sb_nr(struct super_block *, unsigned long nr, +							enum wb_reason reason); +int writeback_inodes_sb_if_idle(struct super_block *, enum wb_reason reason); +int writeback_inodes_sb_nr_if_idle(struct super_block *, unsigned long nr, +							enum wb_reason reason);  void sync_inodes_sb(struct super_block *); -long writeback_inodes_wb(struct bdi_writeback *wb, long nr_pages); +long writeback_inodes_wb(struct bdi_writeback *wb, long nr_pages, +				enum wb_reason reason);  long wb_do_writeback(struct bdi_writeback *wb, int force_wait); -void wakeup_flusher_threads(long nr_pages); +void wakeup_flusher_threads(long nr_pages, enum wb_reason reason);  /* writeback.h requires fs.h; it, too, is not included from here. */  static inline void wait_on_inode(struct inode *inode) @@ -143,6 +163,7 @@ unsigned long bdi_dirty_limit(struct backing_dev_info *bdi,  void __bdi_update_bandwidth(struct backing_dev_info *bdi,  			    unsigned long thresh, +			    unsigned long bg_thresh,  			    unsigned long dirty,  			    unsigned long bdi_thresh,  			    unsigned long bdi_dirty,  |