Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 11 May 2012 17:48:10 +0200
From:      Mateusz Guzik <mjg@semihalf.com>
To:        Konstantin Belousov <kostikbel@gmail.com>
Cc:        svn-src-projects@freebsd.org, Grzegorz Bernacki <gber@freebsd.org>, src-committers@freebsd.org
Subject:   Re: svn commit: r233072 - projects/nand/sys/kern
Message-ID:  <20120511154810.GA99005@pcbsd-2342.semihalf.com>
In-Reply-To: <20120511104648.GM2358@deviant.kiev.zoral.com.ua>
References:  <20120317085116.GC1340@garage.freebsd.pl> <20120317161050.GI75778@deviant.kiev.zoral.com.ua> <4FA8FFB9.7090002@freebsd.org> <20120508095631.GV2358@deviant.kiev.zoral.com.ua> <4FA94609.3060306@freebsd.org> <20120510103105.GG2358@deviant.kiev.zoral.com.ua> <4FABC64F.3060502@freebsd.org> <20120510115857.GH2358@deviant.kiev.zoral.com.ua> <20120510164519.GA13258@pcbsd-2342.semihalf.com> <20120511104648.GM2358@deviant.kiev.zoral.com.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, May 11, 2012 at 01:46:48PM +0300, Konstantin Belousov wrote:
> On Thu, May 10, 2012 at 06:45:19PM +0200, Mateusz Guzik wrote:
> > http://people.freebsd.org/~raj/patches/misc/vfs_highdirtybuf.diff
> > 
> > callbacks are expected to increase flushed counter if they happend to
> > flush some buffers.
> I do not think this is right. You need to call a routine when getnewblk()
> is unable to find a buffer to recycle.
> 
> As I understand, in your situation with lot of managed buffers, the dirty
> queue could be just empty.

I don't think I follow. Is your concern that with a lot of managed buffers and
empty dirty queue nothing can be recycled? Or that managed buffers
affect calls to buf_do_flush?

I presume you talk about the code below the following:
        /*
         * If we exhausted our list, sleep as appropriate.  We may have to
         * wakeup various daemons and write out some dirty buffers.
         *
         * Generally we are sleeping due to insufficient buffer space.
         */

        if (bp == NULL) {

Conditions that cause bufdaemon weakups/buf_do_flush calls seem to be
not dependent on buffers being managed or not.

buf_do_flush with our change always calls registered callbacks and the
callback that we register calls code that knowns what nandfs managed
buffers are dirty and flushes those. Buffers from dirty queues (if any)
are flushed separately.

If I'm wrong or misunderstood you, please elaborate on problem you have
in mind.

> > 
> > Example proof-of-concept (will be cleaned up) change for nandfs:
> > http://people.freebsd.org/~raj/patches/misc/nandfs_vfs_highdirtybuf.diff
> > 
> > Does this look reasonable?
> > 

-- 
Mateusz Guzik <mjg semihalf.com>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120511154810.GA99005>