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