Date: Thu, 1 Jun 2000 10:33:19 -0700 (PDT) From: Matthew Dillon <dillon@apollo.backplane.com> To: Oleg Derevenetz <oleg@oleg.vsi.ru> Cc: freebsd-hackers@FreeBSD.ORG Subject: Re: vm_fault() problem Message-ID: <200006011733.KAA39949@apollo.backplane.com> References: <Pine.BSF.4.21.0006011257530.378-100000@oleg.vsi.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
:It seems to be a problem in vm/vm_fault() and
:vnode_pager_generic_putpages() in FreeBSD 3.x & 4.0.
:
:The following code illustrates the problem:
:
:#include <sys/types.h>
:#include <sys/mman.h>
:...
Yes, this is definitely a bug. I'll take a look at fixing it on
the weekend. I think what we have to do is allocate the file blocks
at the time the page is dirties instead of later on when we try
to flush the page out. It should be possible to do this in
vm/vm_fault.c line 255 (in vm_fault(), the call to vm_freeze_copyopts()).
This way if the filesystem runs out of space we can seg-fault the
process synchronously.
The problem as it stands now is that the pages are flushed
asynchronously, and so the bitmap allocation can occur at a random
time.
-Matt
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200006011733.KAA39949>
