svn commit: r248165 - user/attilio/vmobj-readlock/sys/kern
Attilio Rao
attilio at FreeBSD.org
Mon Mar 11 14:50:46 UTC 2013
Author: attilio
Date: Mon Mar 11 14:50:45 2013
New Revision: 248165
URL: http://svnweb.freebsd.org/changeset/base/248165
Log:
Use vm_object read locking for brelse() and inmem().
Sponsored by: Isilon storage division
Modified:
user/attilio/vmobj-readlock/sys/kern/vfs_bio.c
Modified: user/attilio/vmobj-readlock/sys/kern/vfs_bio.c
==============================================================================
--- user/attilio/vmobj-readlock/sys/kern/vfs_bio.c Mon Mar 11 14:47:08 2013 (r248164)
+++ user/attilio/vmobj-readlock/sys/kern/vfs_bio.c Mon Mar 11 14:50:45 2013 (r248165)
@@ -1389,7 +1389,7 @@ brelse(struct buf *bp)
*/
resid = bp->b_bufsize;
foff = bp->b_offset;
- VM_OBJECT_WLOCK(obj);
+ VM_OBJECT_RLOCK(obj);
for (i = 0; i < bp->b_npages; i++) {
int had_bogus = 0;
@@ -1437,7 +1437,7 @@ brelse(struct buf *bp)
resid -= PAGE_SIZE - (foff & PAGE_MASK);
foff = (foff + PAGE_SIZE) & ~(off_t)PAGE_MASK;
}
- VM_OBJECT_WUNLOCK(obj);
+ VM_OBJECT_RUNLOCK(obj);
if (bp->b_flags & (B_INVAL | B_RELBUF))
vfs_vmio_release(bp);
@@ -2468,7 +2468,7 @@ inmem(struct vnode * vp, daddr_t blkno)
size = vp->v_mount->mnt_stat.f_iosize;
off = (vm_ooffset_t)blkno * (vm_ooffset_t)vp->v_mount->mnt_stat.f_iosize;
- VM_OBJECT_WLOCK(obj);
+ VM_OBJECT_RLOCK(obj);
for (toff = 0; toff < vp->v_mount->mnt_stat.f_iosize; toff += tinc) {
m = vm_page_lookup(obj, OFF_TO_IDX(off + toff));
if (!m)
@@ -2480,7 +2480,7 @@ inmem(struct vnode * vp, daddr_t blkno)
(vm_offset_t) ((toff + off) & PAGE_MASK), tinc) == 0)
goto notinmem;
}
- VM_OBJECT_WUNLOCK(obj);
+ VM_OBJECT_RUNLOCK(obj);
return 1;
notinmem:
More information about the svn-src-user
mailing list