On Fri 22-05-15 17:13:52, Tejun Heo wrote: > For cgroup writeback support, all bdi-wide operations should be > distributed to all its wb's (bdi_writeback's). > > This patch updates laptop_mode_timer_fn() so that it invokes > wb_start_writeback() on all wb's rather than just the root one. As > the intent is writing out all dirty data, there's no reason to split > the number of pages to write. > > Signed-off-by: Tejun Heo <tj@xxxxxxxxxx> > Cc: Jens Axboe <axboe@xxxxxxxxx> > Cc: Jan Kara <jack@xxxxxxx> Looks good. You can add: Reviewed-by: Jan Kara <jack@xxxxxxxx> Honza > --- > mm/page-writeback.c | 12 +++++++++--- > 1 file changed, 9 insertions(+), 3 deletions(-) > > diff --git a/mm/page-writeback.c b/mm/page-writeback.c > index 6301af2..682e3a6 100644 > --- a/mm/page-writeback.c > +++ b/mm/page-writeback.c > @@ -1723,14 +1723,20 @@ void laptop_mode_timer_fn(unsigned long data) > struct request_queue *q = (struct request_queue *)data; > int nr_pages = global_page_state(NR_FILE_DIRTY) + > global_page_state(NR_UNSTABLE_NFS); > + struct bdi_writeback *wb; > + struct wb_iter iter; > > /* > * We want to write everything out, not just down to the dirty > * threshold > */ > - if (bdi_has_dirty_io(&q->backing_dev_info)) > - wb_start_writeback(&q->backing_dev_info.wb, nr_pages, true, > - WB_REASON_LAPTOP_TIMER); > + if (!bdi_has_dirty_io(&q->backing_dev_info)) > + return; > + > + bdi_for_each_wb(wb, &q->backing_dev_info, &iter, 0) > + if (wb_has_dirty_io(wb)) > + wb_start_writeback(wb, nr_pages, true, > + WB_REASON_LAPTOP_TIMER); > } > > /* > -- > 2.4.0 > -- Jan Kara <jack@xxxxxxx> SUSE Labs, CR -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>