Date: Mon, 11 Mar 2013 14:50:46 +0000 (UTC) From: Attilio Rao <attilio@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r248165 - user/attilio/vmobj-readlock/sys/kern Message-ID: <201303111450.r2BEok6X075648@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201303111450.r2BEok6X075648>