aboutsummaryrefslogtreecommitdiff
path: root/sys/vm/vnode_pager.c
diff options
context:
space:
mode:
authorKonstantin Belousov <kib@FreeBSD.org>2020-08-16 20:52:24 +0000
committerKonstantin Belousov <kib@FreeBSD.org>2020-08-16 20:52:24 +0000
commit419e5698a02370f3aab9f2b096361123410aac65 (patch)
treec4bf72d769ca22a3f70f1a8d0d7556e3b3f691f9 /sys/vm/vnode_pager.c
parent37f253ed0ff80cd6a0937859a4c3c80c256f6d61 (diff)
Atomically update vm_object vnp_size, where atomic is available.
This will be used later, where it matters on 32bit arches. Reviewed by: markj Tested by: pho Sponsored by: The FreeBSD Foundation Differential revision: https://reviews.freebsd.org/D25968
Notes
Notes: svn path=/head/; revision=364285
Diffstat (limited to 'sys/vm/vnode_pager.c')
-rw-r--r--sys/vm/vnode_pager.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/sys/vm/vnode_pager.c b/sys/vm/vnode_pager.c
index 0a1518e94a24..f10153235b30 100644
--- a/sys/vm/vnode_pager.c
+++ b/sys/vm/vnode_pager.c
@@ -520,7 +520,11 @@ vnode_pager_setsize(struct vnode *vp, vm_ooffset_t nsize)
vm_page_xunbusy(m);
}
out:
+#if defined(__powerpc__) && !defined(__powerpc64__)
object->un_pager.vnp.vnp_size = nsize;
+#else
+ atomic_store_64(&object->un_pager.vnp.vnp_size, nsize);
+#endif
object->size = nobjsize;
VM_OBJECT_WUNLOCK(object);
}