svn commit: r250858 - user/attilio/vmobj-readlock/sys/kern
Attilio Rao
attilio at FreeBSD.org
Tue May 21 16:34:45 UTC 2013
Author: attilio
Date: Tue May 21 16:34:44 2013
New Revision: 250858
URL: http://svnweb.freebsd.org/changeset/base/250858
Log:
o Relax assert in vfs_buf_test_cache() (even if it is unlikely to be
exploited, it is more fair).
o Use read-locking in vfs_bio_bzero_buf() because it should be fine to
do so.
Sponsored by: EMC / 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 Tue May 21 15:48:35 2013 (r250857)
+++ user/attilio/vmobj-readlock/sys/kern/vfs_bio.c Tue May 21 16:34:44 2013 (r250858)
@@ -478,7 +478,7 @@ vfs_buf_test_cache(struct buf *bp,
vm_page_t m)
{
- VM_OBJECT_ASSERT_WLOCKED(m->object);
+ VM_OBJECT_ASSERT_LOCKED(m->object);
if (bp->b_flags & B_CACHE) {
int base = (foff + off) & PAGE_MASK;
if (vm_page_is_valid(m, base, size) == 0)
@@ -4215,7 +4215,7 @@ vfs_bio_bzero_buf(struct buf *bp, int ba
} else {
BUF_CHECK_UNMAPPED(bp);
n = PAGE_SIZE - (base & PAGE_MASK);
- VM_OBJECT_WLOCK(bp->b_bufobj->bo_object);
+ VM_OBJECT_RLOCK(bp->b_bufobj->bo_object);
for (i = base / PAGE_SIZE; size > 0 && i < bp->b_npages; ++i) {
m = bp->b_pages[i];
if (n > size)
@@ -4225,7 +4225,7 @@ vfs_bio_bzero_buf(struct buf *bp, int ba
size -= n;
n = PAGE_SIZE;
}
- VM_OBJECT_WUNLOCK(bp->b_bufobj->bo_object);
+ VM_OBJECT_RUNLOCK(bp->b_bufobj->bo_object);
}
}
More information about the svn-src-user
mailing list