aboutsummaryrefslogtreecommitdiff
path: root/sys/vm/vnode_pager.c
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2024-01-08 05:18:40 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2024-01-11 16:44:53 +0000
commitb068bb09a1a82d9fef0e939ad6135443a959e290 (patch)
tree6fee997307b644c5ba3fa39fd1215bb74a330c68 /sys/vm/vnode_pager.c
parent1f62718d8ba26d813d8c2e826ac5f4caee4c6730 (diff)
Diffstat (limited to 'sys/vm/vnode_pager.c')
-rw-r--r--sys/vm/vnode_pager.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/sys/vm/vnode_pager.c b/sys/vm/vnode_pager.c
index f9fb1ba23655..d32fec845043 100644
--- a/sys/vm/vnode_pager.c
+++ b/sys/vm/vnode_pager.c
@@ -1690,3 +1690,30 @@ vnode_pager_getvp(vm_object_t object, struct vnode **vpp, bool *vp_heldp)
{
*vpp = object->handle;
}
+
+static void
+vnode_pager_clean1(struct vnode *vp, int sync_flags)
+{
+ struct vm_object *obj;
+
+ ASSERT_VOP_LOCKED(vp, "needs lock for writes");
+ obj = vp->v_object;
+ if (obj == NULL)
+ return;
+
+ VM_OBJECT_WLOCK(obj);
+ vm_object_page_clean(obj, 0, 0, sync_flags);
+ VM_OBJECT_WUNLOCK(obj);
+}
+
+void
+vnode_pager_clean_sync(struct vnode *vp)
+{
+ vnode_pager_clean1(vp, OBJPC_SYNC);
+}
+
+void
+vnode_pager_clean_async(struct vnode *vp)
+{
+ vnode_pager_clean1(vp, 0);
+}