Date: Thu, 21 Feb 2013 15:02:37 +0000 (UTC) From: Attilio Rao <attilio@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r247096 - in user/attilio/vmobj-rwlock/sys: arm/arm arm/at91 arm/econa arm/s3c2xx0 arm/sa11x0 arm/xscale/i80321 arm/xscale/i8134x arm/xscale/ixp425 arm/xscale/pxa cddl/compat/opensolari... Message-ID: <201302211502.r1LF2b7j059082@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: attilio Date: Thu Feb 21 15:02:36 2013 New Revision: 247096 URL: http://svnweb.freebsd.org/changeset/base/247096 Log: Fix other architectures and ZFS. Sponsored by: EMC / Isilon storage division Added: user/attilio/vmobj-rwlock/sys/cddl/compat/opensolaris/kern/opensolaris_vm.c (contents, props changed) user/attilio/vmobj-rwlock/sys/cddl/compat/opensolaris/sys/freebsd_rwlock.h (contents, props changed) user/attilio/vmobj-rwlock/sys/cddl/compat/opensolaris/sys/vm.h (contents, props changed) Modified: user/attilio/vmobj-rwlock/sys/arm/arm/machdep.c user/attilio/vmobj-rwlock/sys/arm/at91/at91_machdep.c user/attilio/vmobj-rwlock/sys/arm/econa/econa_machdep.c user/attilio/vmobj-rwlock/sys/arm/s3c2xx0/s3c24x0_machdep.c user/attilio/vmobj-rwlock/sys/arm/sa11x0/assabet_machdep.c user/attilio/vmobj-rwlock/sys/arm/xscale/i80321/ep80219_machdep.c user/attilio/vmobj-rwlock/sys/arm/xscale/i80321/iq31244_machdep.c user/attilio/vmobj-rwlock/sys/arm/xscale/i8134x/crb_machdep.c user/attilio/vmobj-rwlock/sys/arm/xscale/ixp425/avila_machdep.c user/attilio/vmobj-rwlock/sys/arm/xscale/pxa/pxa_machdep.c user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_context.h user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c user/attilio/vmobj-rwlock/sys/conf/files user/attilio/vmobj-rwlock/sys/ia64/ia64/machdep.c user/attilio/vmobj-rwlock/sys/mips/adm5120/adm5120_machdep.c user/attilio/vmobj-rwlock/sys/mips/alchemy/alchemy_machdep.c user/attilio/vmobj-rwlock/sys/mips/beri/beri_machdep.c user/attilio/vmobj-rwlock/sys/mips/cavium/octeon_machdep.c user/attilio/vmobj-rwlock/sys/mips/gxemul/gxemul_machdep.c user/attilio/vmobj-rwlock/sys/mips/idt/idt_machdep.c user/attilio/vmobj-rwlock/sys/mips/malta/malta_machdep.c user/attilio/vmobj-rwlock/sys/mips/mips/machdep.c user/attilio/vmobj-rwlock/sys/mips/rt305x/rt305x_machdep.c user/attilio/vmobj-rwlock/sys/mips/sentry5/s5_machdep.c user/attilio/vmobj-rwlock/sys/mips/sibyte/sb_machdep.c user/attilio/vmobj-rwlock/sys/modules/zfs/Makefile user/attilio/vmobj-rwlock/sys/pc98/pc98/machdep.c user/attilio/vmobj-rwlock/sys/powerpc/aim/machdep.c user/attilio/vmobj-rwlock/sys/powerpc/aim/mmu_oea.c user/attilio/vmobj-rwlock/sys/powerpc/aim/mmu_oea64.c user/attilio/vmobj-rwlock/sys/powerpc/aim/moea64_native.c user/attilio/vmobj-rwlock/sys/powerpc/booke/machdep.c user/attilio/vmobj-rwlock/sys/powerpc/ps3/mmu_ps3.c user/attilio/vmobj-rwlock/sys/sparc64/sparc64/machdep.c user/attilio/vmobj-rwlock/sys/sparc64/sparc64/tsb.c Modified: user/attilio/vmobj-rwlock/sys/arm/arm/machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/arm/arm/machdep.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/arm/arm/machdep.c Thu Feb 21 15:02:36 2013 (r247096) @@ -70,6 +70,7 @@ __FBSDID("$FreeBSD$"); #include <sys/mutex.h> #include <sys/pcpu.h> #include <sys/ptrace.h> +#include <sys/rwlock.h> #include <sys/signalvar.h> #include <sys/syscallsubr.h> #include <sys/sysctl.h> Modified: user/attilio/vmobj-rwlock/sys/arm/at91/at91_machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/arm/at91/at91_machdep.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/arm/at91/at91_machdep.c Thu Feb 21 15:02:36 2013 (r247096) @@ -61,6 +61,7 @@ __FBSDID("$FreeBSD$"); #include <sys/pcpu.h> #include <sys/proc.h> #include <sys/ptrace.h> +#include <sys/rwlock.h> #include <sys/cons.h> #include <sys/bio.h> #include <sys/bus.h> Modified: user/attilio/vmobj-rwlock/sys/arm/econa/econa_machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/arm/econa/econa_machdep.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/arm/econa/econa_machdep.c Thu Feb 21 15:02:36 2013 (r247096) @@ -53,6 +53,7 @@ __FBSDID("$FreeBSD$"); #include <sys/pcpu.h> #include <sys/proc.h> #include <sys/ptrace.h> +#include <sys/rwlock.h> #include <sys/cons.h> #include <sys/bio.h> #include <sys/bus.h> Modified: user/attilio/vmobj-rwlock/sys/arm/s3c2xx0/s3c24x0_machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/arm/s3c2xx0/s3c24x0_machdep.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/arm/s3c2xx0/s3c24x0_machdep.c Thu Feb 21 15:02:36 2013 (r247096) @@ -63,6 +63,7 @@ __FBSDID("$FreeBSD$"); #include <sys/pcpu.h> #include <sys/proc.h> #include <sys/ptrace.h> +#include <sys/rwlock.h> #include <sys/cons.h> #include <sys/bio.h> #include <sys/bus.h> Modified: user/attilio/vmobj-rwlock/sys/arm/sa11x0/assabet_machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/arm/sa11x0/assabet_machdep.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/arm/sa11x0/assabet_machdep.c Thu Feb 21 15:02:36 2013 (r247096) @@ -66,6 +66,7 @@ __FBSDID("$FreeBSD$"); #include <sys/pcpu.h> #include <sys/proc.h> #include <sys/ptrace.h> +#include <sys/rwlock.h> #include <sys/cons.h> #include <sys/bio.h> #include <sys/bus.h> Modified: user/attilio/vmobj-rwlock/sys/arm/xscale/i80321/ep80219_machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/arm/xscale/i80321/ep80219_machdep.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/arm/xscale/i80321/ep80219_machdep.c Thu Feb 21 15:02:36 2013 (r247096) @@ -63,6 +63,7 @@ __FBSDID("$FreeBSD$"); #include <sys/pcpu.h> #include <sys/proc.h> #include <sys/ptrace.h> +#include <sys/rwlock.h> #include <sys/cons.h> #include <sys/bio.h> #include <sys/bus.h> Modified: user/attilio/vmobj-rwlock/sys/arm/xscale/i80321/iq31244_machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/arm/xscale/i80321/iq31244_machdep.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/arm/xscale/i80321/iq31244_machdep.c Thu Feb 21 15:02:36 2013 (r247096) @@ -63,6 +63,7 @@ __FBSDID("$FreeBSD$"); #include <sys/pcpu.h> #include <sys/proc.h> #include <sys/ptrace.h> +#include <sys/rwlock.h> #include <sys/cons.h> #include <sys/bio.h> #include <sys/bus.h> Modified: user/attilio/vmobj-rwlock/sys/arm/xscale/i8134x/crb_machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/arm/xscale/i8134x/crb_machdep.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/arm/xscale/i8134x/crb_machdep.c Thu Feb 21 15:02:36 2013 (r247096) @@ -63,6 +63,7 @@ __FBSDID("$FreeBSD$"); #include <sys/pcpu.h> #include <sys/proc.h> #include <sys/ptrace.h> +#include <sys/rwlock.h> #include <sys/cons.h> #include <sys/bio.h> #include <sys/bus.h> Modified: user/attilio/vmobj-rwlock/sys/arm/xscale/ixp425/avila_machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/arm/xscale/ixp425/avila_machdep.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/arm/xscale/ixp425/avila_machdep.c Thu Feb 21 15:02:36 2013 (r247096) @@ -63,6 +63,7 @@ __FBSDID("$FreeBSD$"); #include <sys/pcpu.h> #include <sys/proc.h> #include <sys/ptrace.h> +#include <sys/rwlock.h> #include <sys/cons.h> #include <sys/bio.h> #include <sys/bus.h> Modified: user/attilio/vmobj-rwlock/sys/arm/xscale/pxa/pxa_machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/arm/xscale/pxa/pxa_machdep.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/arm/xscale/pxa/pxa_machdep.c Thu Feb 21 15:02:36 2013 (r247096) @@ -65,6 +65,7 @@ __FBSDID("$FreeBSD$"); #include <sys/pcpu.h> #include <sys/proc.h> #include <sys/ptrace.h> +#include <sys/rwlock.h> #include <sys/cons.h> #include <sys/bio.h> #include <sys/bus.h> Added: user/attilio/vmobj-rwlock/sys/cddl/compat/opensolaris/kern/opensolaris_vm.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/attilio/vmobj-rwlock/sys/cddl/compat/opensolaris/kern/opensolaris_vm.c Thu Feb 21 15:02:36 2013 (r247096) @@ -0,0 +1,84 @@ +/*- + * Copyright (c) 2013 EMC Corp. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <sys/cdefs.h> + +#include <sys/param.h> +#include <sys/lock.h> +#include <sys/freebsd_rwlock.h> + +#include <vm/vm.h> +#include <vm/vm_param.h> +#include <vm/vm_object.h> +#include <vm/vm_page.h> +#include <vm/vm_pager.h> + +int +vm_pagerret_bad(void) +{ + + return (VM_PAGER_BAD); +} + +int +vm_pagerret_error(void) +{ + + return (VM_PAGER_ERROR); +} + +int +vm_pagerret_ok(void) +{ + + return (VM_PAGER_OK); +} + +void +zfs_vmobject_assert_wlocked(vm_object_t object) +{ + + /* + * This is not ideal because FILE/LINE used by assertions will not + * be too helpful, but it must be an hard function for + * compatibility reasons. + */ + VM_OBJECT_LOCK_ASSERT(object, RA_WLOCKED); +} + +void +zfs_vmobject_wlock(vm_object_t object) +{ + + VM_OBJECT_WLOCK(object); +} + +void +zfs_vmobject_wunlock(vm_object_t object) +{ + + VM_OBJECT_WUNLOCK(object); +} Added: user/attilio/vmobj-rwlock/sys/cddl/compat/opensolaris/sys/freebsd_rwlock.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/attilio/vmobj-rwlock/sys/cddl/compat/opensolaris/sys/freebsd_rwlock.h Thu Feb 21 15:02:36 2013 (r247096) @@ -0,0 +1,34 @@ +/*- + * Copyright (c) 2013 EMC Corp. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _OPENSOLARIS_SYS_FREEBSD_RWLOCK_H_ +#define _OPENSOLARIS_SYS_FREEBSD_RWLOCK_H_ + +#include_next <sys/rwlock.h> + +#endif Added: user/attilio/vmobj-rwlock/sys/cddl/compat/opensolaris/sys/vm.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/attilio/vmobj-rwlock/sys/cddl/compat/opensolaris/sys/vm.h Thu Feb 21 15:02:36 2013 (r247096) @@ -0,0 +1,44 @@ +/*- + * Copyright (c) 2013 EMC Corp. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _OPENSOLARIS_SYS_VM_H_ +#define _OPENSOLARIS_SYS_VM_H_ + +#ifdef _KERNEL + +int vm_pagerret_bad(void); +int vm_pagerret_error(void); +int vm_pagerret_ok(void); + +void zfs_vmobject_assert_wlocked(vm_object_t object); +void zfs_vmobject_wlock(vm_object_t object); +void zfs_vmobject_wunlock(vm_object_t object); + +#endif /* _KERNEL */ + +#endif /* _OPENSOLARIS_SYS_VM_H_ */ Modified: user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_context.h ============================================================================== --- user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_context.h Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_context.h Thu Feb 21 15:02:36 2013 (r247096) @@ -94,7 +94,6 @@ extern "C" { #include <vm/vm.h> #include <vm/vm_page.h> #include <vm/vm_object.h> -#include <vm/vm_pager.h> #include <vm/vm_kern.h> #include <vm/vm_map.h> /* There is clash. vm_map.h defines the two below and vdev_cache.c use them. */ Modified: user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Thu Feb 21 15:02:36 2013 (r247096) @@ -33,6 +33,7 @@ #include <sys/sysmacros.h> #include <sys/resource.h> #include <sys/vfs.h> +#include <sys/vm.h> #include <sys/vnode.h> #include <sys/file.h> #include <sys/stat.h> @@ -329,7 +330,7 @@ page_busy(vnode_t *vp, int64_t start, in vm_page_t pp; obj = vp->v_object; - VM_OBJECT_LOCK_ASSERT(obj, MA_OWNED); + zfs_vmobject_assert_wlocked(obj); for (;;) { if ((pp = vm_page_lookup(obj, OFF_TO_IDX(start))) != NULL && @@ -377,7 +378,7 @@ page_hold(vnode_t *vp, int64_t start) vm_page_t pp; obj = vp->v_object; - VM_OBJECT_LOCK_ASSERT(obj, MA_OWNED); + zfs_vmobject_assert_wlocked(obj); for (;;) { if ((pp = vm_page_lookup(obj, OFF_TO_IDX(start))) != NULL && @@ -450,7 +451,7 @@ update_pages(vnode_t *vp, int64_t start, ASSERT(obj != NULL); off = start & PAGEOFFSET; - VM_OBJECT_WLOCK(obj); + zfs_vmobject_wlock(obj); for (start &= PAGEMASK; len > 0; start += PAGESIZE) { vm_page_t pp; int nbytes = imin(PAGESIZE - off, len); @@ -467,23 +468,23 @@ update_pages(vnode_t *vp, int64_t start, ("zfs update_pages: unbusy page in putpages case")); KASSERT(!pmap_page_is_write_mapped(pp), ("zfs update_pages: writable page in putpages case")); - VM_OBJECT_WUNLOCK(obj); + zfs_vmobject_wunlock(obj); va = zfs_map_page(pp, &sf); (void) dmu_write(os, oid, start, nbytes, va, tx); zfs_unmap_page(sf); - VM_OBJECT_WLOCK(obj); + zfs_vmobject_wlock(obj); vm_page_undirty(pp); } else if ((pp = page_busy(vp, start, off, nbytes)) != NULL) { - VM_OBJECT_WUNLOCK(obj); + zfs_vmobject_wunlock(obj); va = zfs_map_page(pp, &sf); (void) dmu_read(os, oid, start+off, nbytes, va+off, DMU_READ_PREFETCH);; zfs_unmap_page(sf); - VM_OBJECT_WLOCK(obj); + zfs_vmobject_wlock(obj); page_unbusy(pp); } len -= nbytes; @@ -491,7 +492,7 @@ update_pages(vnode_t *vp, int64_t start, } if (segflg != UIO_NOCOPY) vm_object_pip_wakeupn(obj, 0); - VM_OBJECT_WUNLOCK(obj); + zfs_vmobject_wunlock(obj); } /* @@ -523,7 +524,7 @@ mappedread_sf(vnode_t *vp, int nbytes, u ASSERT(obj != NULL); ASSERT((uio->uio_loffset & PAGEOFFSET) == 0); - VM_OBJECT_WLOCK(obj); + zfs_vmobject_wlock(obj); for (start = uio->uio_loffset; len > 0; start += PAGESIZE) { int bytes = MIN(PAGESIZE, len); @@ -531,14 +532,14 @@ mappedread_sf(vnode_t *vp, int nbytes, u VM_ALLOC_NORMAL | VM_ALLOC_RETRY | VM_ALLOC_IGN_SBUSY); if (pp->valid == 0) { vm_page_io_start(pp); - VM_OBJECT_WUNLOCK(obj); + zfs_vmobject_wunlock(obj); va = zfs_map_page(pp, &sf); error = dmu_read(os, zp->z_id, start, bytes, va, DMU_READ_PREFETCH); if (bytes != PAGESIZE && error == 0) bzero(va + bytes, PAGESIZE - bytes); zfs_unmap_page(sf); - VM_OBJECT_WLOCK(obj); + zfs_vmobject_wlock(obj); vm_page_io_finish(pp); vm_page_lock(pp); if (error) { @@ -555,7 +556,7 @@ mappedread_sf(vnode_t *vp, int nbytes, u uio->uio_offset += bytes; len -= bytes; } - VM_OBJECT_WUNLOCK(obj); + zfs_vmobject_wunlock(obj); return (error); } @@ -587,7 +588,7 @@ mappedread(vnode_t *vp, int nbytes, uio_ start = uio->uio_loffset; off = start & PAGEOFFSET; - VM_OBJECT_WLOCK(obj); + zfs_vmobject_wlock(obj); for (start &= PAGEMASK; len > 0; start += PAGESIZE) { vm_page_t pp; uint64_t bytes = MIN(PAGESIZE - off, len); @@ -596,23 +597,23 @@ mappedread(vnode_t *vp, int nbytes, uio_ struct sf_buf *sf; caddr_t va; - VM_OBJECT_WUNLOCK(obj); + zfs_vmobject_wunlock(obj); va = zfs_map_page(pp, &sf); error = uiomove(va + off, bytes, UIO_READ, uio); zfs_unmap_page(sf); - VM_OBJECT_WLOCK(obj); + zfs_vmobject_wlock(obj); page_unhold(pp); } else { - VM_OBJECT_WUNLOCK(obj); + zfs_vmobject_wunlock(obj); error = dmu_read_uio(os, zp->z_id, uio, bytes); - VM_OBJECT_WLOCK(obj); + zfs_vmobject_wlock(obj); } len -= bytes; off = 0; if (error) break; } - VM_OBJECT_WUNLOCK(obj); + zfs_vmobject_wunlock(obj); return (error); } @@ -5683,7 +5684,7 @@ zfs_getpages(struct vnode *vp, vm_page_t mfirst = m[reqstart]; mlast = m[reqstart + reqsize - 1]; - VM_OBJECT_WLOCK(object); + zfs_vmobject_wlock(object); for (i = 0; i < reqstart; i++) { vm_page_lock(m[i]); @@ -5699,9 +5700,9 @@ zfs_getpages(struct vnode *vp, vm_page_t if (mreq->valid && reqsize == 1) { if (mreq->valid != VM_PAGE_BITS_ALL) vm_page_zero_invalid(mreq, TRUE); - VM_OBJECT_WUNLOCK(object); + zfs_vmobject_wunlock(object); ZFS_EXIT(zfsvfs); - return (VM_PAGER_OK); + return (vm_pagerret_ok()); } PCPU_INC(cnt.v_vnodein); @@ -5715,16 +5716,16 @@ zfs_getpages(struct vnode *vp, vm_page_t vm_page_unlock(m[i]); } } - VM_OBJECT_WUNLOCK(object); + zfs_vmobject_wunlock(object); ZFS_EXIT(zfsvfs); - return (VM_PAGER_BAD); + return (vm_pagerret_bad()); } lsize = PAGE_SIZE; if (IDX_TO_OFF(mlast->pindex) + lsize > object->un_pager.vnp.vnp_size) lsize = object->un_pager.vnp.vnp_size - IDX_TO_OFF(mlast->pindex); - VM_OBJECT_WUNLOCK(object); + zfs_vmobject_wunlock(object); for (i = reqstart; i < reqstart + reqsize; i++) { size = PAGE_SIZE; @@ -5740,7 +5741,7 @@ zfs_getpages(struct vnode *vp, vm_page_t break; } - VM_OBJECT_WLOCK(object); + zfs_vmobject_wlock(object); for (i = reqstart; i < reqstart + reqsize; i++) { if (!error) @@ -5750,11 +5751,11 @@ zfs_getpages(struct vnode *vp, vm_page_t vm_page_readahead_finish(m[i]); } - VM_OBJECT_WUNLOCK(object); + zfs_vmobject_wunlock(object); ZFS_ACCESSTIME_STAMP(zfsvfs, zp); ZFS_EXIT(zfsvfs); - return (error ? VM_PAGER_ERROR : VM_PAGER_OK); + return (error ? vm_pagerret_error() : vm_pagerret_ok()); } static int Modified: user/attilio/vmobj-rwlock/sys/conf/files ============================================================================== --- user/attilio/vmobj-rwlock/sys/conf/files Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/conf/files Thu Feb 21 15:02:36 2013 (r247096) @@ -157,6 +157,7 @@ cddl/compat/opensolaris/kern/opensolaris cddl/compat/opensolaris/kern/opensolaris_taskq.c optional zfs compile-with "${ZFS_C}" cddl/compat/opensolaris/kern/opensolaris_uio.c optional zfs compile-with "${ZFS_C}" cddl/compat/opensolaris/kern/opensolaris_vfs.c optional zfs compile-with "${ZFS_C}" +cddl/compat/opensolaris/kern/opensolaris_vm.c optional zfs compile-with "${ZFS_C}" cddl/compat/opensolaris/kern/opensolaris_zone.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/common/acl/acl_common.c optional zfs compile-with "${ZFS_C}" cddl/contrib/opensolaris/common/avl/avl.c optional zfs compile-with "${ZFS_C}" Modified: user/attilio/vmobj-rwlock/sys/ia64/ia64/machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/ia64/ia64/machdep.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/ia64/ia64/machdep.c Thu Feb 21 15:02:36 2013 (r247096) @@ -55,6 +55,7 @@ __FBSDID("$FreeBSD$"); #include <sys/ptrace.h> #include <sys/random.h> #include <sys/reboot.h> +#include <sys/rwlock.h> #include <sys/sched.h> #include <sys/signalvar.h> #include <sys/syscall.h> Modified: user/attilio/vmobj-rwlock/sys/mips/adm5120/adm5120_machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/mips/adm5120/adm5120_machdep.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/mips/adm5120/adm5120_machdep.c Thu Feb 21 15:02:36 2013 (r247096) @@ -53,7 +53,6 @@ __FBSDID("$FreeBSD$"); #include <vm/vm.h> #include <vm/vm_object.h> #include <vm/vm_page.h> -#include <vm/vm_pager.h> #include <machine/cache.h> #include <machine/clock.h> Modified: user/attilio/vmobj-rwlock/sys/mips/alchemy/alchemy_machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/mips/alchemy/alchemy_machdep.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/mips/alchemy/alchemy_machdep.c Thu Feb 21 15:02:36 2013 (r247096) @@ -53,7 +53,6 @@ __FBSDID("$FreeBSD$"); #include <vm/vm.h> #include <vm/vm_object.h> #include <vm/vm_page.h> -#include <vm/vm_pager.h> #include <machine/cache.h> #include <machine/clock.h> Modified: user/attilio/vmobj-rwlock/sys/mips/beri/beri_machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/mips/beri/beri_machdep.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/mips/beri/beri_machdep.c Thu Feb 21 15:02:36 2013 (r247096) @@ -64,7 +64,6 @@ __FBSDID("$FreeBSD$"); #include <vm/vm.h> #include <vm/vm_object.h> #include <vm/vm_page.h> -#include <vm/vm_pager.h> #include <machine/clock.h> #include <machine/cpu.h> Modified: user/attilio/vmobj-rwlock/sys/mips/cavium/octeon_machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/mips/cavium/octeon_machdep.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/mips/cavium/octeon_machdep.c Thu Feb 21 15:02:36 2013 (r247096) @@ -55,7 +55,6 @@ __FBSDID("$FreeBSD$"); #include <vm/vm.h> #include <vm/vm_object.h> #include <vm/vm_page.h> -#include <vm/vm_pager.h> #include <machine/atomic.h> #include <machine/cache.h> Modified: user/attilio/vmobj-rwlock/sys/mips/gxemul/gxemul_machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/mips/gxemul/gxemul_machdep.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/mips/gxemul/gxemul_machdep.c Thu Feb 21 15:02:36 2013 (r247096) @@ -52,7 +52,6 @@ __FBSDID("$FreeBSD$"); #include <vm/vm.h> #include <vm/vm_object.h> #include <vm/vm_page.h> -#include <vm/vm_pager.h> #include <machine/clock.h> #include <machine/cpu.h> Modified: user/attilio/vmobj-rwlock/sys/mips/idt/idt_machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/mips/idt/idt_machdep.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/mips/idt/idt_machdep.c Thu Feb 21 15:02:36 2013 (r247096) @@ -55,7 +55,6 @@ __FBSDID("$FreeBSD$"); #include <vm/vm.h> #include <vm/vm_object.h> #include <vm/vm_page.h> -#include <vm/vm_pager.h> #include <machine/cache.h> #include <machine/clock.h> Modified: user/attilio/vmobj-rwlock/sys/mips/malta/malta_machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/mips/malta/malta_machdep.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/mips/malta/malta_machdep.c Thu Feb 21 15:02:36 2013 (r247096) @@ -54,7 +54,6 @@ __FBSDID("$FreeBSD$"); #include <vm/vm.h> #include <vm/vm_object.h> #include <vm/vm_page.h> -#include <vm/vm_pager.h> #include <machine/clock.h> #include <machine/cpu.h> Modified: user/attilio/vmobj-rwlock/sys/mips/mips/machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/mips/mips/machdep.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/mips/mips/machdep.c Thu Feb 21 15:02:36 2013 (r247096) @@ -58,6 +58,7 @@ __FBSDID("$FreeBSD$"); #include <sys/mbuf.h> #include <sys/msgbuf.h> #include <sys/reboot.h> +#include <sys/rwlock.h> #include <sys/sched.h> #include <sys/sysctl.h> #include <sys/sysproto.h> Modified: user/attilio/vmobj-rwlock/sys/mips/rt305x/rt305x_machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/mips/rt305x/rt305x_machdep.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/mips/rt305x/rt305x_machdep.c Thu Feb 21 15:02:36 2013 (r247096) @@ -54,7 +54,6 @@ __FBSDID("$FreeBSD$"); #include <vm/vm.h> #include <vm/vm_object.h> #include <vm/vm_page.h> -#include <vm/vm_pager.h> #include <machine/cache.h> #include <machine/clock.h> Modified: user/attilio/vmobj-rwlock/sys/mips/sentry5/s5_machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/mips/sentry5/s5_machdep.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/mips/sentry5/s5_machdep.c Thu Feb 21 15:02:36 2013 (r247096) @@ -53,7 +53,6 @@ __FBSDID("$FreeBSD$"); #include <vm/vm.h> #include <vm/vm_object.h> #include <vm/vm_page.h> -#include <vm/vm_pager.h> #include <machine/cache.h> #include <machine/clock.h> Modified: user/attilio/vmobj-rwlock/sys/mips/sibyte/sb_machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/mips/sibyte/sb_machdep.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/mips/sibyte/sb_machdep.c Thu Feb 21 15:02:36 2013 (r247096) @@ -55,7 +55,6 @@ __FBSDID("$FreeBSD$"); #include <vm/vm.h> #include <vm/vm_object.h> #include <vm/vm_page.h> -#include <vm/vm_pager.h> #include <machine/cache.h> #include <machine/clock.h> Modified: user/attilio/vmobj-rwlock/sys/modules/zfs/Makefile ============================================================================== --- user/attilio/vmobj-rwlock/sys/modules/zfs/Makefile Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/modules/zfs/Makefile Thu Feb 21 15:02:36 2013 (r247096) @@ -28,6 +28,7 @@ SRCS+= opensolaris_sysevent.c SRCS+= opensolaris_taskq.c SRCS+= opensolaris_uio.c SRCS+= opensolaris_vfs.c +SRCS+= opensolaris_vm.c SRCS+= opensolaris_zone.c _A=${.CURDIR}/../../cddl/contrib/opensolaris/common/atomic Modified: user/attilio/vmobj-rwlock/sys/pc98/pc98/machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/pc98/pc98/machdep.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/pc98/pc98/machdep.c Thu Feb 21 15:02:36 2013 (r247096) @@ -80,6 +80,7 @@ __FBSDID("$FreeBSD$"); #include <sys/pcpu.h> #include <sys/ptrace.h> #include <sys/reboot.h> +#include <sys/rwlock.h> #include <sys/sched.h> #include <sys/signalvar.h> #ifdef SMP Modified: user/attilio/vmobj-rwlock/sys/powerpc/aim/machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/powerpc/aim/machdep.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/powerpc/aim/machdep.c Thu Feb 21 15:02:36 2013 (r247096) @@ -84,6 +84,7 @@ __FBSDID("$FreeBSD$"); #include <sys/mutex.h> #include <sys/ptrace.h> #include <sys/reboot.h> +#include <sys/rwlock.h> #include <sys/signalvar.h> #include <sys/syscallsubr.h> #include <sys/sysctl.h> Modified: user/attilio/vmobj-rwlock/sys/powerpc/aim/mmu_oea.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/powerpc/aim/mmu_oea.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/powerpc/aim/mmu_oea.c Thu Feb 21 15:02:36 2013 (r247096) @@ -136,7 +136,6 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_object.h> #include <vm/vm_extern.h> #include <vm/vm_pageout.h> -#include <vm/vm_pager.h> #include <vm/uma.h> #include <machine/cpu.h> Modified: user/attilio/vmobj-rwlock/sys/powerpc/aim/mmu_oea64.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/powerpc/aim/mmu_oea64.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/powerpc/aim/mmu_oea64.c Thu Feb 21 15:02:36 2013 (r247096) @@ -140,7 +140,6 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_object.h> #include <vm/vm_extern.h> #include <vm/vm_pageout.h> -#include <vm/vm_pager.h> #include <vm/uma.h> #include <machine/_inttypes.h> Modified: user/attilio/vmobj-rwlock/sys/powerpc/aim/moea64_native.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/powerpc/aim/moea64_native.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/powerpc/aim/moea64_native.c Thu Feb 21 15:02:36 2013 (r247096) @@ -117,7 +117,6 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_object.h> #include <vm/vm_extern.h> #include <vm/vm_pageout.h> -#include <vm/vm_pager.h> #include <machine/md_var.h> #include <machine/mmuvar.h> Modified: user/attilio/vmobj-rwlock/sys/powerpc/booke/machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/powerpc/booke/machdep.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/powerpc/booke/machdep.c Thu Feb 21 15:02:36 2013 (r247096) @@ -101,6 +101,7 @@ __FBSDID("$FreeBSD$"); #include <sys/kernel.h> #include <sys/lock.h> #include <sys/mutex.h> +#include <sys/rwlock.h> #include <sys/sysctl.h> #include <sys/exec.h> #include <sys/ktr.h> Modified: user/attilio/vmobj-rwlock/sys/powerpc/ps3/mmu_ps3.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/powerpc/ps3/mmu_ps3.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/powerpc/ps3/mmu_ps3.c Thu Feb 21 15:02:36 2013 (r247096) @@ -45,7 +45,6 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_object.h> #include <vm/vm_extern.h> #include <vm/vm_pageout.h> -#include <vm/vm_pager.h> #include <vm/uma.h> #include <powerpc/aim/mmu_oea64.h> Modified: user/attilio/vmobj-rwlock/sys/sparc64/sparc64/machdep.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/sparc64/sparc64/machdep.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/sparc64/sparc64/machdep.c Thu Feb 21 15:02:36 2013 (r247096) @@ -65,6 +65,7 @@ __FBSDID("$FreeBSD$"); #include <sys/pcpu.h> #include <sys/ptrace.h> #include <sys/reboot.h> +#include <sys/rwlock.h> #include <sys/signalvar.h> #include <sys/smp.h> #include <sys/syscallsubr.h> Modified: user/attilio/vmobj-rwlock/sys/sparc64/sparc64/tsb.c ============================================================================== --- user/attilio/vmobj-rwlock/sys/sparc64/sparc64/tsb.c Thu Feb 21 12:52:18 2013 (r247095) +++ user/attilio/vmobj-rwlock/sys/sparc64/sparc64/tsb.c Thu Feb 21 15:02:36 2013 (r247096) @@ -53,7 +53,6 @@ __FBSDID("$FreeBSD$"); #include <vm/vm_object.h> #include <vm/vm_extern.h> #include <vm/vm_pageout.h> -#include <vm/vm_pager.h> #include <machine/cpufunc.h> #include <machine/frame.h>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201302211502.r1LF2b7j059082>