svn commit: r253488 - in user/attilio/vmobj-fullread/sys: cddl/contrib/opensolaris/uts/common/fs/zfs kern vm
Attilio Rao
attilio at FreeBSD.org
Sat Jul 20 09:18:49 UTC 2013
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 */
More information about the svn-src-user
mailing list