writeback: pass in '0' for nr_pages writeback in laptop mode
Laptop mode really wants to writeback the number of dirty pages and inodes. Instead of calculating this in the caller, just pass in 0 and let wakeup_flusher_threads() handle it. Use the new wakeup_flusher_threads_bdi() instead of rolling our own. Acked-by: Johannes Weiner <hannes@cmpxchg.org> Tested-by: Chris Mason <clm@fb.com> Signed-off-by: Jens Axboe <axboe@kernel.dk> Reviewed-by: Jan Kara <jack@suse.cz> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
		
							parent
							
								
									595043e5f9
								
							
						
					
					
						commit
						0ab29fd0ac
					
				| @ -1980,23 +1980,8 @@ int dirty_writeback_centisecs_handler(struct ctl_table *table, int write, | ||||
| void laptop_mode_timer_fn(unsigned long data) | ||||
| { | ||||
| 	struct request_queue *q = (struct request_queue *)data; | ||||
| 	int nr_pages = global_node_page_state(NR_FILE_DIRTY) + | ||||
| 		global_node_page_state(NR_UNSTABLE_NFS); | ||||
| 	struct bdi_writeback *wb; | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * We want to write everything out, not just down to the dirty | ||||
| 	 * threshold | ||||
| 	 */ | ||||
| 	if (!bdi_has_dirty_io(q->backing_dev_info)) | ||||
| 		return; | ||||
| 
 | ||||
| 	rcu_read_lock(); | ||||
| 	list_for_each_entry_rcu(wb, &q->backing_dev_info->wb_list, bdi_node) | ||||
| 		if (wb_has_dirty_io(wb)) | ||||
| 			wb_start_writeback(wb, nr_pages, | ||||
| 						WB_REASON_LAPTOP_TIMER); | ||||
| 	rcu_read_unlock(); | ||||
| 	wakeup_flusher_threads_bdi(q->backing_dev_info, WB_REASON_LAPTOP_TIMER); | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user