From owner-freebsd-hackers Thu Jun 1 10:33:36 2000 Delivered-To: freebsd-hackers@freebsd.org Received: from apollo.backplane.com (apollo.backplane.com [216.240.41.2]) by hub.freebsd.org (Postfix) with ESMTP id 13ADF37BE3A for ; Thu, 1 Jun 2000 10:33:28 -0700 (PDT) (envelope-from dillon@apollo.backplane.com) Received: (from dillon@localhost) by apollo.backplane.com (8.9.3/8.9.1) id KAA39949; Thu, 1 Jun 2000 10:33:19 -0700 (PDT) (envelope-from dillon) Date: Thu, 1 Jun 2000 10:33:19 -0700 (PDT) From: Matthew Dillon Message-Id: <200006011733.KAA39949@apollo.backplane.com> To: Oleg Derevenetz Cc: freebsd-hackers@FreeBSD.ORG Subject: Re: vm_fault() problem References: Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG :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 :#include :... 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