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>
