On Tue 19-09-17 13:53:06, Jens Axboe wrote: > Now that we have no external callers of wb_start_writeback(), > we can move the nr_pages == 0 logic into that function. > > Signed-off-by: Jens Axboe <axboe@xxxxxxxxx> ... > +static unsigned long get_nr_dirty_pages(void) > +{ > + return global_node_page_state(NR_FILE_DIRTY) + > + global_node_page_state(NR_UNSTABLE_NFS) + > + get_nr_dirty_inodes(); > +} > + > static void wb_start_writeback(struct bdi_writeback *wb, long nr_pages, > bool range_cyclic, enum wb_reason reason) > { > @@ -942,6 +953,12 @@ static void wb_start_writeback(struct bdi_writeback *wb, long nr_pages, > return; > > /* > + * If someone asked for zero pages, we write out the WORLD > + */ > + if (!nr_pages) > + nr_pages = get_nr_dirty_pages(); > + So for 'wb' we have a better estimate of the amount we should write - use wb_stat_sum(wb, WB_RECLAIMABLE) statistics - that is essentially dirty + unstable_nfs broken down to bdi_writeback. Honza -- Jan Kara <jack@xxxxxxxx> SUSE Labs, CR