On 06/05/22(Fri) 22:16, Alexander Bluhm wrote:
> Same with this diff.
Thanks for testing. Here's a possible fix. The idea is to call
uvm_vnp_terminate() when recycling a vnode. This will flush any
pending pages that are still associated with the vnode. Ironically that
is what the comment above uvm_vnp_terminate() says, even if this has
never been true.
I find this approach less intrusive than removing the CANPERSIST flag.
I'd suggest we do that later.
Andrew, Alexander, could you test this and report back?
Thanks!
Index: kern/vfs_subr.c
===================================================================
RCS file: /cvs/src/sys/kern/vfs_subr.c,v
retrieving revision 1.315
diff -u -p -r1.315 vfs_subr.c
--- kern/vfs_subr.c 27 Mar 2022 16:19:39 -0000 1.315
+++ kern/vfs_subr.c 17 May 2022 15:28:30 -0000
@@ -459,6 +459,10 @@ getnewvnode(enum vtagtype tag, struct mo
vp->v_flag = 0;
vp->v_socket = NULL;
}
+ /*
+ * Clean out any VM data associated with the vnode.
+ */
+ uvm_vnp_terminate(vp);
cache_purge(vp);
vp->v_type = VNON;
vp->v_tag = tag;