summaryrefslogtreecommitdiff
path: root/sys/nfsserver/nfs_serv.c
diff options
context:
space:
mode:
authorAttilio Rao <attilio@FreeBSD.org>2013-03-09 02:32:23 +0000
committerAttilio Rao <attilio@FreeBSD.org>2013-03-09 02:32:23 +0000
commit89f6b8632cc94bca2738b4fcc26e1189ef4f5dde (patch)
tree382de98b1c7b142a92ed9c04ab1ea90d5a1c3a06 /sys/nfsserver/nfs_serv.c
parentc934116100c5a3574cb1bde0dc0b80b6b41d7e54 (diff)
downloadsrc-test2-89f6b8632cc94bca2738b4fcc26e1189ef4f5dde.tar.gz
src-test2-89f6b8632cc94bca2738b4fcc26e1189ef4f5dde.zip
Notes
Diffstat (limited to 'sys/nfsserver/nfs_serv.c')
-rw-r--r--sys/nfsserver/nfs_serv.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/nfsserver/nfs_serv.c b/sys/nfsserver/nfs_serv.c
index bef72afea337..2e7d8b0caff7 100644
--- a/sys/nfsserver/nfs_serv.c
+++ b/sys/nfsserver/nfs_serv.c
@@ -87,6 +87,7 @@ __FBSDID("$FreeBSD$");
#include <sys/sysctl.h>
#include <sys/bio.h>
#include <sys/buf.h>
+#include <sys/rwlock.h>
#include <vm/vm.h>
#include <vm/vm_extern.h>
@@ -3332,9 +3333,9 @@ nfsrv_commit(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
*/
if (vp->v_object &&
(vp->v_object->flags & OBJ_MIGHTBEDIRTY)) {
- VM_OBJECT_LOCK(vp->v_object);
+ VM_OBJECT_WLOCK(vp->v_object);
vm_object_page_clean(vp->v_object, 0, 0, OBJPC_SYNC);
- VM_OBJECT_UNLOCK(vp->v_object);
+ VM_OBJECT_WUNLOCK(vp->v_object);
}
error = VOP_FSYNC(vp, MNT_WAIT, curthread);
} else {
@@ -3363,10 +3364,10 @@ nfsrv_commit(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp,
if (vp->v_object &&
(vp->v_object->flags & OBJ_MIGHTBEDIRTY)) {
- VM_OBJECT_LOCK(vp->v_object);
+ VM_OBJECT_WLOCK(vp->v_object);
vm_object_page_clean(vp->v_object, off, off + cnt,
OBJPC_SYNC);
- VM_OBJECT_UNLOCK(vp->v_object);
+ VM_OBJECT_WUNLOCK(vp->v_object);
}
bo = &vp->v_bufobj;