: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 [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message