summaryrefslogtreecommitdiffstats
path: root/sys/fs/tmpfs/tmpfs_vnops.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/fs/tmpfs/tmpfs_vnops.c')
-rw-r--r--sys/fs/tmpfs/tmpfs_vnops.c44
1 files changed, 22 insertions, 22 deletions
diff --git a/sys/fs/tmpfs/tmpfs_vnops.c b/sys/fs/tmpfs/tmpfs_vnops.c
index d62f357..54c95ff 100644
--- a/sys/fs/tmpfs/tmpfs_vnops.c
+++ b/sys/fs/tmpfs/tmpfs_vnops.c
@@ -447,7 +447,7 @@ tmpfs_nocacheread(vm_object_t tobj, vm_pindex_t idx,
vm_page_t m;
int error, rv;
- VM_OBJECT_LOCK(tobj);
+ VM_OBJECT_WLOCK(tobj);
m = vm_page_grab(tobj, idx, VM_ALLOC_WIRED |
VM_ALLOC_NORMAL | VM_ALLOC_RETRY);
if (m->valid != VM_PAGE_BITS_ALL) {
@@ -457,20 +457,20 @@ tmpfs_nocacheread(vm_object_t tobj, vm_pindex_t idx,
vm_page_lock(m);
vm_page_free(m);
vm_page_unlock(m);
- VM_OBJECT_UNLOCK(tobj);
+ VM_OBJECT_WUNLOCK(tobj);
return (EIO);
}
} else
vm_page_zero_invalid(m, TRUE);
}
- VM_OBJECT_UNLOCK(tobj);
+ VM_OBJECT_WUNLOCK(tobj);
error = uiomove_fromphys(&m, offset, tlen, uio);
- VM_OBJECT_LOCK(tobj);
+ VM_OBJECT_WLOCK(tobj);
vm_page_lock(m);
vm_page_unwire(m, TRUE);
vm_page_unlock(m);
vm_page_wakeup(m);
- VM_OBJECT_UNLOCK(tobj);
+ VM_OBJECT_WUNLOCK(tobj);
return (error);
}
@@ -513,7 +513,7 @@ tmpfs_mappedread(vm_object_t vobj, vm_object_t tobj, size_t len, struct uio *uio
offset = addr & PAGE_MASK;
tlen = MIN(PAGE_SIZE - offset, len);
- VM_OBJECT_LOCK(vobj);
+ VM_OBJECT_WLOCK(vobj);
lookupvpg:
if (((m = vm_page_lookup(vobj, idx)) != NULL) &&
vm_page_is_valid(m, offset, tlen)) {
@@ -527,11 +527,11 @@ lookupvpg:
goto lookupvpg;
}
vm_page_busy(m);
- VM_OBJECT_UNLOCK(vobj);
+ VM_OBJECT_WUNLOCK(vobj);
error = uiomove_fromphys(&m, offset, tlen, uio);
- VM_OBJECT_LOCK(vobj);
+ VM_OBJECT_WLOCK(vobj);
vm_page_wakeup(m);
- VM_OBJECT_UNLOCK(vobj);
+ VM_OBJECT_WUNLOCK(vobj);
return (error);
} else if (m != NULL && uio->uio_segflg == UIO_NOCOPY) {
KASSERT(offset == 0,
@@ -546,7 +546,7 @@ lookupvpg:
goto lookupvpg;
}
vm_page_busy(m);
- VM_OBJECT_UNLOCK(vobj);
+ VM_OBJECT_WUNLOCK(vobj);
sched_pin();
sf = sf_buf_alloc(m, SFB_CPUPRIVATE);
ma = (char *)sf_buf_kva(sf);
@@ -559,14 +559,14 @@ lookupvpg:
}
sf_buf_free(sf);
sched_unpin();
- VM_OBJECT_LOCK(vobj);
+ VM_OBJECT_WLOCK(vobj);
if (error == 0)
m->valid = VM_PAGE_BITS_ALL;
vm_page_wakeup(m);
- VM_OBJECT_UNLOCK(vobj);
+ VM_OBJECT_WUNLOCK(vobj);
return (error);
}
- VM_OBJECT_UNLOCK(vobj);
+ VM_OBJECT_WUNLOCK(vobj);
error = tmpfs_nocacheread(tobj, idx, offset, tlen, uio);
return (error);
@@ -636,7 +636,7 @@ tmpfs_mappedwrite(vm_object_t vobj, vm_object_t tobj, size_t len, struct uio *ui
offset = addr & PAGE_MASK;
tlen = MIN(PAGE_SIZE - offset, len);
- VM_OBJECT_LOCK(vobj);
+ VM_OBJECT_WLOCK(vobj);
lookupvpg:
if (((vpg = vm_page_lookup(vobj, idx)) != NULL) &&
vm_page_is_valid(vpg, offset, tlen)) {
@@ -651,15 +651,15 @@ lookupvpg:
}
vm_page_busy(vpg);
vm_page_undirty(vpg);
- VM_OBJECT_UNLOCK(vobj);
+ VM_OBJECT_WUNLOCK(vobj);
error = uiomove_fromphys(&vpg, offset, tlen, uio);
} else {
if (vm_page_is_cached(vobj, idx))
vm_page_cache_free(vobj, idx, idx + 1);
- VM_OBJECT_UNLOCK(vobj);
+ VM_OBJECT_WUNLOCK(vobj);
vpg = NULL;
}
- VM_OBJECT_LOCK(tobj);
+ VM_OBJECT_WLOCK(tobj);
tpg = vm_page_grab(tobj, idx, VM_ALLOC_WIRED |
VM_ALLOC_NORMAL | VM_ALLOC_RETRY);
if (tpg->valid != VM_PAGE_BITS_ALL) {
@@ -675,14 +675,14 @@ lookupvpg:
} else
vm_page_zero_invalid(tpg, TRUE);
}
- VM_OBJECT_UNLOCK(tobj);
+ VM_OBJECT_WUNLOCK(tobj);
if (vpg == NULL)
error = uiomove_fromphys(&tpg, offset, tlen, uio);
else {
KASSERT(vpg->valid == VM_PAGE_BITS_ALL, ("parts of vpg invalid"));
pmap_copy_page(vpg, tpg);
}
- VM_OBJECT_LOCK(tobj);
+ VM_OBJECT_WLOCK(tobj);
if (error == 0) {
KASSERT(tpg->valid == VM_PAGE_BITS_ALL,
("parts of tpg invalid"));
@@ -693,11 +693,11 @@ lookupvpg:
vm_page_unlock(tpg);
vm_page_wakeup(tpg);
out:
- VM_OBJECT_UNLOCK(tobj);
+ VM_OBJECT_WUNLOCK(tobj);
if (vpg != NULL) {
- VM_OBJECT_LOCK(vobj);
+ VM_OBJECT_WLOCK(vobj);
vm_page_wakeup(vpg);
- VM_OBJECT_UNLOCK(vobj);
+ VM_OBJECT_WUNLOCK(vobj);
}
return (error);
OpenPOWER on IntegriCloud