Re: how to flush out cache.?

From: Stephan Uphoff (ups_at_tree.com)
Date: 04/22/04

  • Next message: Stephan Uphoff: "Re: how to flush out cache.?"
    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"


  • Next message: Stephan Uphoff: "Re: how to flush out cache.?"

    Relevant Pages

    • Re: how to flush out cache.?
      ... On Wed, 21 Apr 2004, Matthew Dillon wrote: ... > Huh. ... > through to the vnode pager but it looks like the vnode pager ignores ... > not 'throw away the dirty data', but the only place it appears to be ...
      (freebsd-hackers)
    • Re: how to flush out cache.?
      ... Stephan Uphoff wrote: ... >> Huh. ... >> it sure looks like it ought to work! ... >> through to the vnode pager but it looks like the vnode pager ignores ...
      (freebsd-hackers)
    • Re: how to flush out cache.?
      ... :hmmm that is rather interesting.. ... MS_INVALIDATE doesn't work in FreeBSD, but when I look at the code ... through to the vnode pager but it looks like the vnode pager ignores ... implemented is in the NFS code. ...
      (freebsd-hackers)