Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 20 Jul 2013 09:18:48 +0000 (UTC)
From:      Attilio Rao <attilio@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r253488 - in user/attilio/vmobj-fullread/sys: cddl/contrib/opensolaris/uts/common/fs/zfs kern vm
Message-ID:  <201307200918.r6K9ImD2091375@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: attilio
Date: Sat Jul 20 09:18:47 2013
New Revision: 253488
URL: http://svnweb.freebsd.org/changeset/base/253488

Log:
  Remove VM_ALLOC_IGN_RBUSY.
  
  Sponsored by:	EMC / Isilon storage division

Modified:
  user/attilio/vmobj-fullread/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
  user/attilio/vmobj-fullread/sys/kern/vfs_bio.c
  user/attilio/vmobj-fullread/sys/vm/vm_page.c
  user/attilio/vmobj-fullread/sys/vm/vm_page.h

Modified: user/attilio/vmobj-fullread/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
==============================================================================
--- user/attilio/vmobj-fullread/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c	Sat Jul 20 08:38:34 2013	(r253487)
+++ user/attilio/vmobj-fullread/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c	Sat Jul 20 09:18:47 2013	(r253488)
@@ -488,7 +488,7 @@ mappedread_sf(vnode_t *vp, int nbytes, u
 		int bytes = MIN(PAGESIZE, len);
 
 		pp = vm_page_grab(obj, OFF_TO_IDX(start), VM_ALLOC_RBUSY |
-		    VM_ALLOC_NORMAL | VM_ALLOC_RETRY | VM_ALLOC_IGN_RBUSY);
+		    VM_ALLOC_NORMAL | VM_ALLOC_RETRY);
 		if (pp->valid == 0) {
 			zfs_vmobject_wunlock(obj);
 			va = zfs_map_page(pp, &sf);

Modified: user/attilio/vmobj-fullread/sys/kern/vfs_bio.c
==============================================================================
--- user/attilio/vmobj-fullread/sys/kern/vfs_bio.c	Sat Jul 20 08:38:34 2013	(r253487)
+++ user/attilio/vmobj-fullread/sys/kern/vfs_bio.c	Sat Jul 20 09:18:47 2013	(r253488)
@@ -3488,9 +3488,9 @@ allocbuf(struct buf *bp, int size)
 				 * pages are vfs_busy_pages().
 				 */
 				m = vm_page_grab(obj, OFF_TO_IDX(bp->b_offset) +
-				    bp->b_npages, VM_ALLOC_NOBUSY |
+				    bp->b_npages, VM_ALLOC_RBUSY |
 				    VM_ALLOC_SYSTEM | VM_ALLOC_WIRED |
-				    VM_ALLOC_RETRY | VM_ALLOC_IGN_RBUSY |
+				    VM_ALLOC_RETRY |
 				    VM_ALLOC_COUNT(desiredpages - bp->b_npages));
 				if (m->valid == 0)
 					bp->b_flags &= ~B_CACHE;
@@ -3535,6 +3535,11 @@ allocbuf(struct buf *bp, int size)
 				toff += tinc;
 				tinc = PAGE_SIZE;
 			}
+			while ((bp->b_npages - onpages) != 0) {
+				m = bp->b_pages[onpages];
+				vm_page_busy_runlock(m);
+				++onpages;
+			}
 			VM_OBJECT_WUNLOCK(obj);
 
 			/*

Modified: user/attilio/vmobj-fullread/sys/vm/vm_page.c
==============================================================================
--- user/attilio/vmobj-fullread/sys/vm/vm_page.c	Sat Jul 20 08:38:34 2013	(r253487)
+++ user/attilio/vmobj-fullread/sys/vm/vm_page.c	Sat Jul 20 09:18:47 2013	(r253488)
@@ -891,8 +891,7 @@ vm_page_sleep_if_busy(vm_page_t m, const
 	    ("vm_page_sleep_if_busy: VM_ALLOC_NOBUSY with read object lock"));
 
 	if ((busyflags & VM_ALLOC_NOBUSY) != 0) {
-		cond = (busyflags & VM_ALLOC_IGN_RBUSY) != 0 ?
-		    vm_page_busy_wlocked(m) : vm_page_busy_locked(m);
+		cond = vm_page_busy_locked(m);
 	} else if ((busyflags & VM_ALLOC_RBUSY) != 0)
 		cond = !vm_page_busy_tryrlock(m);
 	else
@@ -2533,16 +2532,12 @@ vm_page_grab(vm_object_t object, vm_pind
 	origwlock = VM_OBJECT_WOWNED(object);
 	KASSERT((allocflags & VM_ALLOC_RETRY) != 0,
 	    ("vm_page_grab: VM_ALLOC_RETRY is required"));
-	KASSERT((allocflags & VM_ALLOC_RBUSY) == 0 ||
-	    (allocflags & VM_ALLOC_IGN_RBUSY) != 0,
-	    ("vm_page_grab: VM_ALLOC_RBUSY/VM_ALLOC_IGN_RBUSY mismatch"));
 	KASSERT((allocflags & VM_ALLOC_NOBUSY) == 0 || origwlock != 0,
 	    ("vm_page_grab: VM_ALLOC_NOBUSY with object read lock"));
 retrylookup:
 	if ((m = vm_page_lookup(object, pindex)) != NULL) {
 		if (vm_page_sleep_if_busy(m, "pgrbwt", allocflags &
-		    (VM_ALLOC_NOBUSY | VM_ALLOC_RBUSY | VM_ALLOC_IGN_RBUSY),
-		    TRUE))
+		    (VM_ALLOC_NOBUSY | VM_ALLOC_RBUSY), TRUE))
 			goto retrylookup;
 		else {
 			if ((allocflags & VM_ALLOC_WIRED) != 0) {
@@ -2565,8 +2560,7 @@ retrylookup:
 		VM_OBJECT_WLOCK(object);
 		goto retrylookup;
 	}
-	m = vm_page_alloc(object, pindex, allocflags & ~(VM_ALLOC_RETRY |
-	    VM_ALLOC_IGN_RBUSY));
+	m = vm_page_alloc(object, pindex, allocflags & ~VM_ALLOC_RETRY);
 	if (m == NULL) {
 		VM_OBJECT_WUNLOCK(object);
 		VM_WAIT;

Modified: user/attilio/vmobj-fullread/sys/vm/vm_page.h
==============================================================================
--- user/attilio/vmobj-fullread/sys/vm/vm_page.h	Sat Jul 20 08:38:34 2013	(r253487)
+++ user/attilio/vmobj-fullread/sys/vm/vm_page.h	Sat Jul 20 09:18:47 2013	(r253488)
@@ -368,7 +368,7 @@ vm_page_t PHYS_TO_VM_PAGE(vm_paddr_t pa)
 #define	VM_ALLOC_NOBUSY		0x0200	/* Do not busy the page */
 #define	VM_ALLOC_IFCACHED	0x0400	/* Fail if the page is not cached */
 #define	VM_ALLOC_IFNOTCACHED	0x0800	/* Fail if the page is cached */
-#define	VM_ALLOC_IGN_RBUSY	0x1000	/* vm_page_grab() only */
+#define	VM_ALLOC_UNUSED13	0x1000	/* -- available -- */
 #define	VM_ALLOC_NODUMP		0x2000	/* don't include in dump */
 #define	VM_ALLOC_RBUSY		0x4000	/* Read busy the page */
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201307200918.r6K9ImD2091375>