Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 13 Oct 2001 09:18:19 -0700 (PDT)
From:      Matt Dillon <dillon@earth.backplane.com>
To:        Dag-Erling Smorgrav <des@ofug.org>
Cc:        Mike Silbersack <silby@silby.com>, <cvs-committers@FreeBSD.ORG>, <cvs-all@FreeBSD.ORG>
Subject:   Re: cvs commit: src/sys/vm vnode_pager.c
Message-ID:  <200110131618.f9DGIJ543530@earth.backplane.com>
References:  <20011012145142.L29945-100000@achilles.silby.com> <200110122026.f9CKQMS35969@earth.backplane.com> <200110130005.f9D05Fb37190@earth.backplane.com> <xzpzo6vh9ms.fsf@flood.ping.uio.no>

next in thread | previous in thread | raw e-mail | index | archive | help

:
:Matt Dillon <dillon@earth.backplane.com> writes:
:>     Hmm.  in re-reading this I think I have to clarify something...
:>     when I said 'before the dirty buffer is flushed' I meant that if you
:>     write() a small file and then mmap/access it before the buf_daemon
:>     gets around to flushing the buffer that was diritied by the write, then
:>     the mmap/access will put the page into the weird state.  The same thing
:>     can occur if you mmap() a file shared+RW and modify the fragment via
:>     the mmap.
:
:Hmm, cvsup doesn't seem to use mmap for I/O.  What do you mean by
:"access" in this context?
:
:DES
:-- 
:Dag-Erling Smorgrav - des@ofug.org

    Any mmap()'d access (read or write) to a recently modified file can
    trigger the problem.  If the file is not mmap()d the problem does not
    occur because write() only modifies those dirty bits within the range
    of the file.  It's the page fault that causes the dirty bits to be
    forced to VM_PAGE_BITS_ALL (extending them past the file EOF).  If
    the page in question is backed by a filesystem fragment on the physical
    disk rather then a filesystem block, the problem can occur.

    Your particular case may or may not have anything to do with this bug.
    If you are running cvsup or running a cvsupd or otherwise doing things
    that scan the file tree, mounting with 'noatime' is the most important
    thing you need to do.

						-Matt


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




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