Re: [PATCH 5/5] writeback: IO-less balance_dirty_pages()

Wu Fengguang
2011-08-10T03:26:44Z

On Wed, Aug 10, 2011 at 02:15:43AM +0800, Vivek Goyal wrote:
> On Sat, Aug 06, 2011 at 04:44:52PM +0800, Wu Fengguang wrote:
>
> [..]
> > - trace_balance_dirty_start(bdi);
> > - if (bdi_nr_reclaimable > task_bdi_thresh) {
> > - pages_written += writeback_inodes_wb(&bdi->wb,
> > - write_chunk);
> > - trace_balance_dirty_written(bdi, pages_written);
> > - if (pages_written >= write_chunk)
> > - break; /* We've done our duty */
> > + if (unlikely(!writeback_in_progress(bdi)))
> > + bdi_start_background_writeback(bdi);
> > +
> > + base_bw = bdi->dirty_ratelimit;
> > + bw = bdi_position_ratio(bdi, dirty_thresh, nr_dirty,
> > + bdi_thresh, bdi_dirty);
>
> For the sake of consistency of usage of varibale naming how about using
>
> pos_ratio = bdi_position_ratio()?

OK!

> > + if (unlikely(bw == 0)) {
> > + pause = MAX_PAUSE;
> > + goto pause;
> > }
> > + bw = (u64)base_bw * bw >> BANDWIDTH_CALC_SHIFT;
>
> So far bw had pos_ratio as value now it will be replaced with actual
> bandwidth as value. It makes code confusing. So using pos_ratio will
> help.
>
> bw = (u64)base_bw * pos_ratio >> BANDWIDTH_CALC_SHIFT;

Yeah it makes good sense. I'll change to.

rate = (u64)base_rate * pos_ratio >> BANDWIDTH_CALC_SHIFT;

Thanks,
Fengguang