Re: how to flush out cache.?
From: Stephan Uphoff (ups_at_tree.com)
Date: 04/22/04
- Previous message: Matthew Dillon: "Re: how to flush out cache.?"
- Maybe in reply to: Julian Elischer: "how to flush out cache.?"
- Next in thread: Matthew Dillon: "Re: how to flush out cache.?"
- Reply: Matthew Dillon: "Re: how to flush out cache.?"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
To: Matthew Dillon <dillon@apollo.backplane.com> Date: Wed, 21 Apr 2004 21:52:43 -0400
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.
( 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
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org"
- Previous message: Matthew Dillon: "Re: how to flush out cache.?"
- Maybe in reply to: Julian Elischer: "how to flush out cache.?"
- Next in thread: Matthew Dillon: "Re: how to flush out cache.?"
- Reply: Matthew Dillon: "Re: how to flush out cache.?"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Relevant Pages
|
|