From owner-cvs-all Thu Sep 24 13:16:18 1998 Return-Path: Received: (from daemon@localhost) by hub.freebsd.org (8.8.8/8.8.8) id NAA04237 for cvs-all-outgoing; Thu, 24 Sep 1998 13:16:18 -0700 (PDT) (envelope-from owner-cvs-all) Received: from apollo.backplane.com (apollo.backplane.com [209.157.86.2]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id NAA04232 for ; Thu, 24 Sep 1998 13:16:17 -0700 (PDT) (envelope-from dillon@backplane.com) Received: (dillon@localhost) by apollo.backplane.com (8.9.1/8.6.5) id NAA21591; Thu, 24 Sep 1998 13:16:11 -0700 (PDT) Date: Thu, 24 Sep 1998 13:16:11 -0700 (PDT) From: Matthew Dillon Message-Id: <199809242016.NAA21591@apollo.backplane.com> To: Luoqi Chen Cc: committers@FreeBSD.ORG Subject: Re: Having some serious file write / mmap inconsistancy problems Sender: owner-cvs-all@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk :> * There are a number of situations where the pages can be disassociated :> from the bp. vm_hold_free_pages() will disassociate the pages, :> allocbuf() may disassociate pages, and vfs_vmio_release() will :> disassociate the pages. All of these can occur in situations where :> B_DELWRI is completely ignored. :> :It is very serious if these could ever happen. Could you add some printf :statements at the beginning of these functions to check if the B_DELWRI :flag is set for the buffer? : :-lq Yah, I've started to add debugging stuff. What about line 672-680 of kern/vfs_bio.c ? In brelse(): ... if (bp->b_flags & (B_INVAL | B_RELBUF)) vfs_vmio_release(bp); } else if (bp->b_flags & B_VMIO) { if (bp->b_flags & (B_INVAL | B_RELBUF)) vfs_vmio_release(bp); } Is it possible for B_DELWRI to be set at these points in the code? If vfs_vmio_release() gets called with B_DELWRI set, I think we have a problem. -Matt Matthew Dillon Engineering, HiWay Technologies, Inc. & BEST Internet Communications & God knows what else. (Please include original email in any response)