Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 12 Oct 2001 17:05:15 -0700 (PDT)
From:      Matt Dillon <dillon@earth.backplane.com>
To:        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:  <200110130005.f9D05Fb37190@earth.backplane.com>
References:  <20011012145142.L29945-100000@achilles.silby.com> <200110122026.f9CKQMS35969@earth.backplane.com>

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

:    It depends heavily on the situation.  A file typically must be written
:    through an mmap(), or a recently-write()en file must be mmap()'d and
:    then accessed via the mmap() before the dirty buffer is flushed.  Only
:    the last page of a file can get into this state and typically only
:    if it is stored as a single fragment by the filesystem - i.e. the
:    physical I/O executed by the filesystem is less then a page. 

    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.

    Any other sequence of events will NOT manifest the bug.  Writing a file
    and not accessing it via mmap, or mmap() a file for read access which
    was flushed to disk long ago... those will not cause the bug to manifest.

						-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?200110130005.f9D05Fb37190>