Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 21 Apr 2004 22:17:52 -0400
From:      Stephan Uphoff <ups@tree.com>
To:        Stephan Uphoff <ups@tree.com>
Cc:        Julian Elischer <julian@elischer.org>
Subject:   Re: how to flush out cache.? 
Message-ID:  <200404220217.WAA28285@stups.com>
In-Reply-To: Message from Stephan Uphoff <ups@tree.com>  of "Wed, 21 Apr 2004 21:52:43 EDT." <200404220152.VAA26897@stups.com> 

next in thread | previous in thread | raw e-mail | index | archive | help

Stephan Uphoff wrote:

> Matthew Dillon wrote:
> > :
> > :> 
> > :> mmap() and msync(..MS_INVALIDATE..) should work.
> > :
> > :hmmm that is rather interesting..
> > :I wonder if it would work....
> > :Maybe a vm guru could confirm this.. (under 4.x)
> > :
> > 
> >     Huh.  If I hadn't looked at the code I would have said that
> >     MS_INVALIDATE doesn't work in FreeBSD, but when I look at the code
> >     it sure looks like it ought to work!
> > 
> >     But, alas, it does not.  The invalidation request goes all the way
> >     through to the vnode pager but it looks like the vnode pager ignores
> >     it.
> > 
> >     MS_INVALIDATE -> OBJPC_INVAL -> VM_PAGER_PUT_INVAL -> IO_INVAL -> (ignored)
> > 
> >     IO_INVAL is defined to be 'invalidate after I/O completes', 
> >     not 'throw away the dirty data', but the only place it appears to be 
> >     implemented is in the NFS code.
> > 
> > 						-Matt
> 
> 
> Yes - but FreeBSD then calls vm_object_page_remove to remove the pages 
> from the vnode object. (vm_object_sync for 5.x or vm_map_clean for 4.x )
> 
> Mhhh .. 4.X  removes the pages without flushing if the file is not write 
> mapped.
> This means that anyone with read access can screw up a file.

A file with dirty (unflushed) pages.


> ( For example periodically throwing away pages from /var/log/wtmp ...)
> 5.x looks better - but there is a race condition that can cause the same thing.
> I think for msync() the vm_object_page_remove() function should be called with 
> clean_only set to TRUE to avoid throwing away valid changes.
> ( I will send-pr tomorrow )
> 
> 	Stephan
> 
> 
> 




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200404220217.WAA28285>