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>