Re: RFC - how to balance Dirty+Writeback in the face of slow writeback.

Andrew Morton
2006-08-17T15:14:28Z

On Thu, 17 Aug 2006 08:36:19 -0400
Trond Myklebust <trond.myklebust@fys.uio.no> wrote:

> On Wed, 2006-08-16 at 23:14 -0700, Andrew Morton wrote:
> > btw, one thing which afaik NFS _still_ doesn't do is to wake up processes
> > which are stuck in blk_congestion_wait() when NFS has retired a bunch of
> > writes. It should do so, otherwise NFS write-intensive workloads might end
> > up sleeping for too long. I guess the amount of buffering and hysteresis
> > we have in there has thus far prevented any problems from being observed.
>
> Are we to understand it that you consider blk_congestion_wait() to be an
> official API, and not just another block layer hack inside the VM?
>
> 'cos currently the only tools for waking up processes in
> blk_congestion_wait() are the two routines:
>
> static void clear_queue_congested(request_queue_t *q, int rw)
> and
> static void set_queue_congested(request_queue_t *q, int rw)
>
> in block/ll_rw_blk.c. Hardly a model of well thought out code...
>

We've been over this before...

Take a look at blk_congestion_wait(). It doesn't know about request
queues. We'd need a new

void writeback_congestion_end(int rw)
{
wake_up(congestion_wqh[rw]);
}

or similar.