Subject: Re: PR/34293 CVS commit: src/sys/dev
To: YAMAMOTO Takashi <>
From: Michael van Elst <>
List: netbsd-bugs
Date: 09/04/2006 07:22:32
On Mon, Sep 04, 2006 at 09:26:22AM +0900, YAMAMOTO Takashi wrote:

> > But if that is
> > a problem, the feedback loop can be put into both vndread()/vndwrite().
> why is it enough?

It is not enough, but it catches the case where the device is
accessed directly instead of through a filesystem.

> > >  I suspect
> > >  throttling the caller in vnd only hides the problem;
> > 
> > No, it prevents the problem. The writer needs to be throttled to
> > not overwhelm the consumer because in this case it just eats up
> > all memory. That necessary feedback loop is created by the patch.
> can you explain how it prevents the problem while vndthread() already has
> the same check?

vndthread() does not have the same check. vndthread() is the consumer,
you have to stop the producer that allocates all the buffers.

> while vndthread is working on behalf of the pagedaemon here,
> it is not a pagedaemon.  so it can't get special treatment for pagedaemon
> from buffer cache etc and can deadlock.

In my case it is definitely not working on behalf of the pagedaemon.

                                Michael van Elst
                                "A potential Snark may lurk in every tree."