diff options
Diffstat (limited to 'include/linux/writeback.h')
| -rw-r--r-- | include/linux/writeback.h | 21 | 
1 files changed, 20 insertions, 1 deletions
diff --git a/include/linux/writeback.h b/include/linux/writeback.h index 76e8903cd20..cc97d6caf2b 100644 --- a/include/linux/writeback.h +++ b/include/linux/writeback.h @@ -34,6 +34,9 @@ struct writeback_control {  	enum writeback_sync_modes sync_mode;  	unsigned long *older_than_this;	/* If !NULL, only write back inodes  					   older than this */ +	unsigned long wb_start;         /* Time writeback_inodes_wb was +					   called. This is needed to avoid +					   extra jobs and livelock */  	long nr_to_write;		/* Write this many pages, and decrement  					   this for each page written */  	long pages_skipped;		/* Pages which were not written */ @@ -62,6 +65,15 @@ struct writeback_control {  	 * so we use a single control to update them  	 */  	unsigned no_nrwrite_index_update:1; + +	/* +	 * For WB_SYNC_ALL, the sb must always be pinned. For WB_SYNC_NONE, +	 * the writeback code will pin the sb for the caller. However, +	 * for eg umount, the caller does WB_SYNC_NONE but already has +	 * the sb pinned. If the below is set, caller already has the +	 * sb pinned. +	 */ +	unsigned sb_pinned:1;  };  /* @@ -70,6 +82,7 @@ struct writeback_control {  struct bdi_writeback;  int inode_wait(void *);  void writeback_inodes_sb(struct super_block *); +void writeback_inodes_sb_locked(struct super_block *);  int writeback_inodes_sb_if_idle(struct super_block *);  void sync_inodes_sb(struct super_block *);  void writeback_inodes_wbc(struct writeback_control *wbc); @@ -93,8 +106,14 @@ static inline void inode_sync_wait(struct inode *inode)  /*   * mm/page-writeback.c   */ -void laptop_io_completion(void); +#ifdef CONFIG_BLOCK +void laptop_io_completion(struct backing_dev_info *info);  void laptop_sync_completion(void); +void laptop_mode_sync(struct work_struct *work); +void laptop_mode_timer_fn(unsigned long data); +#else +static inline void laptop_sync_completion(void) { } +#endif  void throttle_vm_writeout(gfp_t gfp_mask);  /* These are exported to sysctl. */  |