how to flush out cache.?
Matthew Dillon
dillon at apollo.backplane.com
Thu Apr 22 19:53:36 PDT 2004
(taking hackers off to reduce noise)
I think all that needs to happen to fix this problem is to call
vm_object_page_remove() with the clean_only flag set to TRUE instead
of FALSE.
Wired pages, e.g. pages in the buffer cache, will not be removed, but
that's ok because memory-mapped pages tend to not get buffer cache
associations until the system decides to flush the pages.
Fixing the buffer cache issue would have to occur in the actual
VNODE I/O operation, which would only occur for VM_PROT_WRITE operations,
which I think is just fine. The I/O op will have access to the
invalidation request as a flag and it can simply do what NFS does which
is flag the buffer to be destroyed on I/O completion. If that is done,
then by the time we get to the second pass the buffer should be gone and
the vm_object_page_remove() function will find a normal, unwired page and
properly remove it.
I'll test this out in DragonFly and email Stephan and Julian a followup.
-Matt
More information about the freebsd-hackers
mailing list