diff options
Diffstat (limited to 'sys/fs')
-rw-r--r-- | sys/fs/nwfs/nwfs_io.c | 5 | ||||
-rw-r--r-- | sys/fs/smbfs/smbfs_io.c | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/sys/fs/nwfs/nwfs_io.c b/sys/fs/nwfs/nwfs_io.c index 84ae3cd..b74cd4a 100644 --- a/sys/fs/nwfs/nwfs_io.c +++ b/sys/fs/nwfs/nwfs_io.c @@ -612,8 +612,11 @@ nwfs_vinvalbuf(vp, td) } np->n_flag |= NFLUSHINPROG; - if (vp->v_bufobj.bo_object != NULL) + if (vp->v_bufobj.bo_object != NULL) { + VM_OBJECT_LOCK(vp->v_bufobj.bo_object); vm_object_page_clean(vp->v_bufobj.bo_object, 0, 0, OBJPC_SYNC); + VM_OBJECT_UNLOCK(vp->v_bufobj.bo_object); + } error = vinvalbuf(vp, V_SAVE, td, PCATCH, 0); while (error) { diff --git a/sys/fs/smbfs/smbfs_io.c b/sys/fs/smbfs/smbfs_io.c index 7e76a87..756ea01 100644 --- a/sys/fs/smbfs/smbfs_io.c +++ b/sys/fs/smbfs/smbfs_io.c @@ -684,8 +684,11 @@ smbfs_vinvalbuf(struct vnode *vp, struct thread *td) } np->n_flag |= NFLUSHINPROG; - if (vp->v_bufobj.bo_object != NULL) + if (vp->v_bufobj.bo_object != NULL) { + VM_OBJECT_LOCK(vp->v_bufobj.bo_object); vm_object_page_clean(vp->v_bufobj.bo_object, 0, 0, OBJPC_SYNC); + VM_OBJECT_UNLOCK(vp->v_bufobj.bo_object); + } error = vinvalbuf(vp, V_SAVE, td, PCATCH, 0); while (error) { |