Re: [PATCH 2/5] writeback: dirty position control

Peter Zijlstra
2011-08-08T13:46:56Z

On Sat, 2011-08-06 at 16:44 +0800, Wu Fengguang wrote:
> +static unsigned long bdi_position_ratio(struct backing_dev_info *bdi,
> + unsigned long thresh,
> + unsigned long dirty,
> + unsigned long bdi_thresh,
> + unsigned long bdi_dirty)
> +{
> + unsigned long limit = hard_dirty_limit(thresh);
> + unsigned long origin;
> + unsigned long goal;
> + unsigned long long span;
> + unsigned long long pos_ratio; /* for scaling up/down the rate limit */
> +
> + if (unlikely(dirty >= limit))
> + return 0;
> +
> + /*
> + * global setpoint
> + */
> + goal = thresh - thresh / DIRTY_SCOPE;
> + origin = 4 * thresh;
> +
> + if (unlikely(origin < limit && dirty > (goal + origin) / 2)) {
> + origin = limit; /* auxiliary control line */
> + goal = (goal + origin) / 2;
> + pos_ratio >>= 1;

use before init?