Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 23 Oct 2012 21:03:11 +0200
From:      Pawel Jakub Dawidek <pjd@FreeBSD.org>
To:        Konstantin Belousov <kib@FreeBSD.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r241896 - in head: . cddl/contrib/opensolaris/lib/libzpool/common/sys share/man/man9 sys/cam/ctl sys/cddl/compat/opensolaris/kern sys/cddl/compat/opensolaris/sys sys/cddl/contrib/openso...
Message-ID:  <20121023190311.GA1620@garage.freebsd.pl>
In-Reply-To: <201210221750.q9MHot26061585@svn.freebsd.org>
References:  <201210221750.q9MHot26061585@svn.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--pf9I7BMVVzbSWLtt
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Mon, Oct 22, 2012 at 05:50:55PM +0000, Konstantin Belousov wrote:
> Author: kib
> Date: Mon Oct 22 17:50:54 2012
> New Revision: 241896
> URL: http://svn.freebsd.org/changeset/base/241896
>=20
> Log:
>   Remove the support for using non-mpsafe filesystem modules.
>  =20
>   In particular, do not lock Giant conditionally when calling into the
>   filesystem module, remove the VFS_LOCK_GIANT() and related
>   macros. Stop handling buffers belonging to non-mpsafe filesystems.
>  =20
>   The VFS_VERSION is bumped to indicate the interface change which does
>   not result in the interface signatures changes.
>  =20
>   Conducted and reviewed by:	attilio
>   Tested by:	pho

FINALLY!

> Deleted:
>   head/share/man/man9/VFS_LOCK_GIANT.9
> Modified:
>   head/ObsoleteFiles.inc
>   head/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h
>   head/share/man/man9/Makefile
>   head/share/man/man9/namei.9
>   head/sys/cam/ctl/ctl_backend_block.c
>   head/sys/cddl/compat/opensolaris/kern/opensolaris_kobj.c
>   head/sys/cddl/compat/opensolaris/kern/opensolaris_lookup.c
>   head/sys/cddl/compat/opensolaris/sys/vnode.h
>   head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c
>   head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
>   head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
>   head/sys/compat/linprocfs/linprocfs.c
>   head/sys/compat/linux/linux_file.c
>   head/sys/compat/linux/linux_misc.c
>   head/sys/compat/ndis/subr_ndis.c
>   head/sys/compat/svr4/svr4_misc.c
>   head/sys/conf/NOTES
>   head/sys/conf/options
>   head/sys/dev/hwpmc/hwpmc_mod.c
>   head/sys/dev/md/md.c
>   head/sys/dev/nand/nandsim_swap.c
>   head/sys/dev/xen/blkback/blkback.c
>   head/sys/fs/nfs/nfs_commonport.c
>   head/sys/fs/nfsserver/nfs_nfsdport.c
>   head/sys/fs/procfs/procfs_map.c
>   head/sys/fs/unionfs/union_subr.c
>   head/sys/geom/geom_vfs.c
>   head/sys/geom/journal/g_journal.c
>   head/sys/i386/ibcs2/ibcs2_misc.c
>   head/sys/kern/imgact_elf.c
>   head/sys/kern/kern_acct.c
>   head/sys/kern/kern_alq.c
>   head/sys/kern/kern_ctf.c
>   head/sys/kern/kern_descrip.c
>   head/sys/kern/kern_exec.c
>   head/sys/kern/kern_exit.c
>   head/sys/kern/kern_gzio.c
>   head/sys/kern/kern_jail.c
>   head/sys/kern/kern_ktrace.c
>   head/sys/kern/kern_linker.c
>   head/sys/kern/kern_proc.c
>   head/sys/kern/kern_sig.c
>   head/sys/kern/link_elf.c
>   head/sys/kern/link_elf_obj.c
>   head/sys/kern/sys_process.c
>   head/sys/kern/uipc_syscalls.c
>   head/sys/kern/uipc_usrreq.c
>   head/sys/kern/vfs_acl.c
>   head/sys/kern/vfs_aio.c
>   head/sys/kern/vfs_bio.c
>   head/sys/kern/vfs_cache.c
>   head/sys/kern/vfs_default.c
>   head/sys/kern/vfs_extattr.c
>   head/sys/kern/vfs_init.c
>   head/sys/kern/vfs_lookup.c
>   head/sys/kern/vfs_mount.c
>   head/sys/kern/vfs_mountroot.c
>   head/sys/kern/vfs_subr.c
>   head/sys/kern/vfs_syscalls.c
>   head/sys/kern/vfs_vnops.c
>   head/sys/nfsserver/nfs.h
>   head/sys/nfsserver/nfs_serv.c
>   head/sys/nfsserver/nfs_srvsubs.c
>   head/sys/nlm/nlm_prot_impl.c
>   head/sys/security/audit/audit_arg.c
>   head/sys/security/audit/audit_syscalls.c
>   head/sys/security/audit/audit_worker.c
>   head/sys/security/mac/mac_process.c
>   head/sys/security/mac/mac_syscalls.c
>   head/sys/sys/buf.h
>   head/sys/sys/bufobj.h
>   head/sys/sys/mount.h
>   head/sys/sys/namei.h
>   head/sys/ufs/ffs/ffs_alloc.c
>   head/sys/ufs/ffs/ffs_softdep.c
>   head/sys/ufs/ufs/ufs_quota.c
>   head/sys/vm/vm_fault.c
>   head/sys/vm/vm_mmap.c
>   head/sys/vm/vm_object.c
>   head/sys/vm/vm_pageout.c
>   head/sys/vm/vnode_pager.c
>=20
> Modified: head/ObsoleteFiles.inc
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- head/ObsoleteFiles.inc	Mon Oct 22 17:47:37 2012	(r241895)
> +++ head/ObsoleteFiles.inc	Mon Oct 22 17:50:54 2012	(r241896)
> @@ -38,6 +38,8 @@
>  #   xargs -n1 | sort | uniq -d;
>  # done
> =20
> +# 20121022: VFS_LOCK_GIANT elimination
> +OLD_FILES+=3Dusr/share/man/man9/VFS_LOCK_GIANT.9.gz
>  # 20121004: remove incomplete unwind.h
>  OLD_FILES+=3Dusr/include/clang/3.2/unwind.h
>  # 20120908: pf cleanup
>=20
> Modified: head/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_conte=
xt.h
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- head/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h	M=
on Oct 22 17:47:37 2012	(r241895)
> +++ head/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h	M=
on Oct 22 17:50:54 2012	(r241896)
> @@ -430,14 +430,6 @@ extern int fop_getattr(vnode_t *vp, vatt
> =20
>  #define	vn_lock(vp, type)
>  #define	VOP_UNLOCK(vp, type)
> -#ifdef VFS_LOCK_GIANT
> -#undef VFS_LOCK_GIANT
> -#endif
> -#define	VFS_LOCK_GIANT(mp)	0
> -#ifdef VFS_UNLOCK_GIANT
> -#undef VFS_UNLOCK_GIANT
> -#endif
> -#define	VFS_UNLOCK_GIANT(vfslocked)
> =20
>  extern int vn_open(char *path, int x1, int oflags, int mode, vnode_t **v=
pp,
>      int x2, int x3);
>=20
> Modified: head/share/man/man9/Makefile
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- head/share/man/man9/Makefile	Mon Oct 22 17:47:37 2012	(r241895)
> +++ head/share/man/man9/Makefile	Mon Oct 22 17:50:54 2012	(r241896)
> @@ -280,7 +280,6 @@ MAN=3D	accept_filter.9 \
>  	vfs_getnewfsid.9 \
>  	vfs_getopt.9 \
>  	vfs_getvfs.9 \
> -	VFS_LOCK_GIANT.9 \
>  	VFS_MOUNT.9 \
>  	vfs_mount.9 \
>  	vfs_mountedfrom.9 \
> @@ -1413,7 +1412,6 @@ MLINKS+=3Dvfs_getopt.9 vfs_copyopt.9 \
>  	vfs_getopt.9 vfs_setopt.9 \
>  	vfs_getopt.9 vfs_setopt_part.9 \
>  	vfs_getopt.9 vfs_setopts.9
> -MLINKS+=3DVFS_LOCK_GIANT.9 VFS_UNLOCK_GIANT.9
>  MLINKS+=3Dvhold.9 vdrop.9 \
>  	vhold.9 vdropl.9 \
>  	vhold.9 vholdl.9
>=20
> Modified: head/share/man/man9/namei.9
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- head/share/man/man9/namei.9	Mon Oct 22 17:47:37 2012	(r241895)
> +++ head/share/man/man9/namei.9	Mon Oct 22 17:50:54 2012	(r241896)
> @@ -168,19 +168,6 @@ This flag allows the
>  function to return the parent (directory) vnode in an unlocked state.
>  The parent vnode must be released separately by using
>  .Xr vrele 9 .
> -.It Dv MPSAFE
> -With this flag set,
> -.Fn namei
> -will conditionally acquire
> -.Va Giant
> -if it is required by a traversed file system.
> -MPSAFE callers should pass the results of
> -.Fn NDHASGIANT
> -to
> -.Xr VFS_UNLOCK_GIANT
> -in order to conditionally release
> -.Va Giant
> -if necessary.
>  .It Dv NOCACHE
>  Avoid
>  .Fn namei
> @@ -354,7 +341,6 @@ An attempt is made to modify a file or d
>  .Xr uio 9 ,
>  .Xr uma 9 ,
>  .Xr VFS 9 ,
> -.Xr VFS_UNLOCK_GIANT 9 ,
>  .Xr vnode 9 ,
>  .Xr vput 9 ,
>  .Xr vref 9
>=20
> Modified: head/sys/cam/ctl/ctl_backend_block.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- head/sys/cam/ctl/ctl_backend_block.c	Mon Oct 22 17:47:37 2012	(r24189=
5)
> +++ head/sys/cam/ctl/ctl_backend_block.c	Mon Oct 22 17:50:54 2012	(r24189=
6)
> @@ -594,14 +594,12 @@ ctl_be_block_flush_file(struct ctl_be_bl
>  {
>  	union ctl_io *io;
>  	struct mount *mountpoint;
> -	int vfs_is_locked, error, lock_flags;
> +	int error, lock_flags;
> =20
>  	DPRINTF("entered\n");
> =20
>  	io =3D beio->io;
> =20
> -	vfs_is_locked =3D VFS_LOCK_GIANT(be_lun->vn->v_mount);
> -
>         	(void) vn_start_write(be_lun->vn, &mountpoint, V_WAIT);
> =20
>  	if (MNT_SHARED_WRITES(mountpoint)
> @@ -621,8 +619,6 @@ ctl_be_block_flush_file(struct ctl_be_bl
> =20
>  	vn_finished_write(mountpoint);
> =20
> -	VFS_UNLOCK_GIANT(vfs_is_locked);
> -
>  	if (error =3D=3D 0)
>  		ctl_set_success(&io->scsiio);
>  	else {
> @@ -648,7 +644,7 @@ ctl_be_block_dispatch_file(struct ctl_be
>  	union ctl_io *io;
>  	struct uio xuio;
>  	struct iovec *xiovec;
> -	int vfs_is_locked, flags;
> +	int flags;
>  	int error, i;
> =20
>  	DPRINTF("entered\n");
> @@ -681,7 +677,6 @@ ctl_be_block_dispatch_file(struct ctl_be
>  		xiovec->iov_len =3D beio->sg_segs[i].len;
>  	}
> =20
> -	vfs_is_locked =3D VFS_LOCK_GIANT(be_lun->vn->v_mount);
>  	if (beio->bio_cmd =3D=3D BIO_READ) {
>  		vn_lock(be_lun->vn, LK_SHARED | LK_RETRY);
> =20
> @@ -754,7 +749,6 @@ ctl_be_block_dispatch_file(struct ctl_be
> =20
>  		vn_finished_write(mountpoint);
>          }
> -        VFS_UNLOCK_GIANT(vfs_is_locked);
> =20
>  	/*
>  	 * If we got an error, set the sense data to "MEDIUM ERROR" and
> @@ -1478,7 +1472,6 @@ ctl_be_block_close(struct ctl_be_block_l
>  	DROP_GIANT();
>  	if (be_lun->vn) {
>  		int flags =3D FREAD | FWRITE;
> -		int vfs_is_locked =3D 0;
> =20
>  		switch (be_lun->dev_type) {
>  		case CTL_BE_BLOCK_DEV:
> @@ -1490,7 +1483,6 @@ ctl_be_block_close(struct ctl_be_block_l
>  			}
>  			break;
>  		case CTL_BE_BLOCK_FILE:
> -			vfs_is_locked =3D VFS_LOCK_GIANT(be_lun->vn->v_mount);
>  			break;
>  		case CTL_BE_BLOCK_NONE:
>  		default:
> @@ -1505,7 +1497,6 @@ ctl_be_block_close(struct ctl_be_block_l
>  		case CTL_BE_BLOCK_DEV:
>  			break;
>  		case CTL_BE_BLOCK_FILE:
> -			VFS_UNLOCK_GIANT(vfs_is_locked);
>  			if (be_lun->backend.file.cred !=3D NULL) {
>  				crfree(be_lun->backend.file.cred);
>  				be_lun->backend.file.cred =3D NULL;
> @@ -1529,7 +1520,6 @@ ctl_be_block_open(struct ctl_be_block_so
>  	struct nameidata nd;
>  	int		 flags;
>  	int		 error;
> -	int		 vfs_is_locked;
> =20
>  	/*
>  	 * XXX KDM allow a read-only option?
> @@ -1587,8 +1577,6 @@ ctl_be_block_open(struct ctl_be_block_so
>  		return (error);
>  	}
> =20
> -	vfs_is_locked =3D NDHASGIANT(&nd);
> -
>  	NDFREE(&nd, NDF_ONLY_PNBUF);
>  	=09
>  	be_lun->vn =3D nd.ni_vp;
> @@ -1604,7 +1592,6 @@ ctl_be_block_open(struct ctl_be_block_so
>  			 "%s is not a disk or file", be_lun->dev_path);
>  	}
>  	VOP_UNLOCK(be_lun->vn, 0);
> -	VFS_UNLOCK_GIANT(vfs_is_locked);
> =20
>  	if (error !=3D 0) {
>  		ctl_be_block_close(be_lun);
> @@ -2090,7 +2077,7 @@ ctl_be_block_modify(struct ctl_be_block_
>  {
>  	struct ctl_lun_modify_params *params;
>  	struct ctl_be_block_lun *be_lun;
> -	int vfs_is_locked, error;
> +	int error;
> =20
>  	params =3D &req->reqdata.modify;
> =20
> @@ -2120,7 +2107,6 @@ ctl_be_block_modify(struct ctl_be_block_
>  		}
>  	}
> =20
> -	vfs_is_locked =3D VFS_LOCK_GIANT(be_lun->vn->v_mount);
>  	vn_lock(be_lun->vn, LK_SHARED | LK_RETRY);
> =20
>  	if (be_lun->vn->v_type =3D=3D VREG)
> @@ -2129,7 +2115,6 @@ ctl_be_block_modify(struct ctl_be_block_
>  		error =3D ctl_be_block_modify_dev(be_lun, req);
> =20
>  	VOP_UNLOCK(be_lun->vn, 0);
> -	VFS_UNLOCK_GIANT(vfs_is_locked);
> =20
>  	if (error !=3D 0)
>  		goto bailout_error;
>=20
> Modified: head/sys/cddl/compat/opensolaris/kern/opensolaris_kobj.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- head/sys/cddl/compat/opensolaris/kern/opensolaris_kobj.c	Mon Oct 22 1=
7:47:37 2012	(r241895)
> +++ head/sys/cddl/compat/opensolaris/kern/opensolaris_kobj.c	Mon Oct 22 1=
7:50:54 2012	(r241896)
> @@ -69,7 +69,7 @@ kobj_open_file_vnode(const char *file)
>  	struct thread *td =3D curthread;
>  	struct filedesc *fd;
>  	struct nameidata nd;
> -	int error, flags, vfslocked;
> +	int error, flags;
> =20
>  	fd =3D td->td_proc->p_fd;
>  	FILEDESC_XLOCK(fd);
> @@ -84,15 +84,13 @@ kobj_open_file_vnode(const char *file)
>  	FILEDESC_XUNLOCK(fd);
> =20
>  	flags =3D FREAD | O_NOFOLLOW;
> -	NDINIT(&nd, LOOKUP, MPSAFE, UIO_SYSSPACE, file, td);
> +	NDINIT(&nd, LOOKUP, 0, UIO_SYSSPACE, file, td);
>  	error =3D vn_open_cred(&nd, &flags, 0, 0, curthread->td_ucred, NULL);
>  	if (error !=3D 0)
>  		return (NULL);
> -	vfslocked =3D NDHASGIANT(&nd);
>  	NDFREE(&nd, NDF_ONLY_PNBUF);
>  	/* We just unlock so we hold a reference. */
>  	VOP_UNLOCK(nd.ni_vp, 0);
> -	VFS_UNLOCK_GIANT(vfslocked);
>  	return (nd.ni_vp);
>  }
> =20
> @@ -130,15 +128,13 @@ kobj_get_filesize_vnode(struct _buf *fil
>  {
>  	struct vnode *vp =3D file->ptr;
>  	struct vattr va;
> -	int error, vfslocked;
> +	int error;
> =20
> -	vfslocked =3D VFS_LOCK_GIANT(vp->v_mount);
>  	vn_lock(vp, LK_SHARED | LK_RETRY);
>  	error =3D VOP_GETATTR(vp, &va, curthread->td_ucred);
>  	VOP_UNLOCK(vp, 0);
>  	if (error =3D=3D 0)
>  		*size =3D (uint64_t)va.va_size;
> -	VFS_UNLOCK_GIANT(vfslocked);
>  	return (error);
>  }
> =20
> @@ -171,7 +167,7 @@ kobj_read_file_vnode(struct _buf *file,=20
>  	struct thread *td =3D curthread;
>  	struct uio auio;
>  	struct iovec aiov;
> -	int error, vfslocked;
> +	int error;
> =20
>  	bzero(&aiov, sizeof(aiov));
>  	bzero(&auio, sizeof(auio));
> @@ -187,11 +183,9 @@ kobj_read_file_vnode(struct _buf *file,=20
>  	auio.uio_resid =3D size;
>  	auio.uio_td =3D td;
> =20
> -	vfslocked =3D VFS_LOCK_GIANT(vp->v_mount);
>  	vn_lock(vp, LK_SHARED | LK_RETRY);
>  	error =3D VOP_READ(vp, &auio, IO_UNIT | IO_SYNC, td->td_ucred);
>  	VOP_UNLOCK(vp, 0);
> -	VFS_UNLOCK_GIANT(vfslocked);
>  	return (error !=3D 0 ? -1 : size - auio.uio_resid);
>  }
> =20
> @@ -221,14 +215,7 @@ void
>  kobj_close_file(struct _buf *file)
>  {
> =20
> -	if (file->mounted) {
> -		struct vnode *vp =3D file->ptr;
> -		struct thread *td =3D curthread;
> -		int vfslocked;
> -
> -		vfslocked =3D VFS_LOCK_GIANT(vp->v_mount);
> -		vn_close(vp, FREAD, td->td_ucred, td);
> -		VFS_UNLOCK_GIANT(vfslocked);
> -	}
> +	if (file->mounted)
> +		vn_close(file->ptr, FREAD, curthread->td_ucred, curthread);
>  	kmem_free(file, sizeof(*file));
>  }
>=20
> Modified: head/sys/cddl/compat/opensolaris/kern/opensolaris_lookup.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- head/sys/cddl/compat/opensolaris/kern/opensolaris_lookup.c	Mon Oct 22=
 17:47:37 2012	(r241895)
> +++ head/sys/cddl/compat/opensolaris/kern/opensolaris_lookup.c	Mon Oct 22=
 17:50:54 2012	(r241896)
> @@ -54,7 +54,7 @@ lookupnameat(char *dirname, enum uio_seg
>  	vref(startvp);
>  	ltype =3D VOP_ISLOCKED(startvp);
>  	VOP_UNLOCK(startvp, 0);
> -	NDINIT_ATVP(&nd, LOOKUP, LOCKLEAF | MPSAFE | follow, seg, dirname,
> +	NDINIT_ATVP(&nd, LOOKUP, LOCKLEAF | follow, seg, dirname,
>  	    startvp, curthread);
>  	error =3D namei(&nd);
>  	*compvpp =3D nd.ni_vp;
>=20
> Modified: head/sys/cddl/compat/opensolaris/sys/vnode.h
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- head/sys/cddl/compat/opensolaris/sys/vnode.h	Mon Oct 22 17:47:37 2012=
	(r241895)
> +++ head/sys/cddl/compat/opensolaris/sys/vnode.h	Mon Oct 22 17:50:54 2012=
	(r241896)
> @@ -193,7 +193,7 @@ vn_openat(char *pnamep, enum uio_seg seg
> =20
>  	if (startvp !=3D NULL)
>  		vref(startvp);
> -	NDINIT_ATVP(&nd, operation, MPSAFE, UIO_SYSSPACE, pnamep, startvp, td);
> +	NDINIT_ATVP(&nd, operation, 0, UIO_SYSSPACE, pnamep, startvp, td);
>  	filemode |=3D O_NOFOLLOW;
>  	error =3D vn_open_cred(&nd, &filemode, createmode, 0, td->td_ucred, NUL=
L);
>  	NDFREE(&nd, NDF_ONLY_PNBUF);
> @@ -223,13 +223,12 @@ zfs_vn_rdwr(enum uio_rw rw, vnode_t *vp,
>      ssize_t *residp)
>  {
>  	struct thread *td =3D curthread;
> -	int error, vfslocked;
> +	int error;
>  	ssize_t resid;
> =20
>  	ASSERT(ioflag =3D=3D 0);
>  	ASSERT(ulimit =3D=3D RLIM64_INFINITY);
> =20
> -	vfslocked =3D VFS_LOCK_GIANT(vp->v_mount);
>  	if (rw =3D=3D UIO_WRITE) {
>  		ioflag =3D IO_SYNC;
>  	} else {
> @@ -237,7 +236,6 @@ zfs_vn_rdwr(enum uio_rw rw, vnode_t *vp,
>  	}
>  	error =3D vn_rdwr(rw, vp, base, len, offset, seg, ioflag, cr, NOCRED,
>  	    &resid, td);
> -	VFS_UNLOCK_GIANT(vfslocked);
>  	if (residp !=3D NULL)
>  		*residp =3D (ssize_t)resid;
>  	return (error);
> @@ -249,11 +247,10 @@ static __inline int
>  zfs_vop_fsync(vnode_t *vp, int flag, cred_t *cr)
>  {
>  	struct mount *mp;
> -	int error, vfslocked;
> +	int error;
> =20
>  	ASSERT(flag =3D=3D FSYNC);
> =20
> -	vfslocked =3D VFS_LOCK_GIANT(vp->v_mount);
>  	if ((error =3D vn_start_write(vp, &mp, V_WAIT | PCATCH)) !=3D 0)
>  		goto drop;
>  	vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
> @@ -261,7 +258,6 @@ zfs_vop_fsync(vnode_t *vp, int flag, cre
>  	VOP_UNLOCK(vp, 0);
>  	vn_finished_write(mp);
>  drop:
> -	VFS_UNLOCK_GIANT(vfslocked);
>  	return (error);
>  }
>  #define	VOP_FSYNC(vp, flag, cr, ct)	zfs_vop_fsync((vp), (flag), (cr))
> @@ -269,14 +265,12 @@ drop:
>  static __inline int
>  zfs_vop_close(vnode_t *vp, int flag, int count, offset_t offset, cred_t =
*cr)
>  {
> -	int error, vfslocked;
> +	int error;
> =20
>  	ASSERT(count =3D=3D 1);
>  	ASSERT(offset =3D=3D 0);
> =20
> -	vfslocked =3D VFS_LOCK_GIANT(vp->v_mount);
>  	error =3D vn_close(vp, flag, cr, curthread);
> -	VFS_UNLOCK_GIANT(vfslocked);
>  	return (error);
>  }
>  #define	VOP_CLOSE(vp, oflags, count, offset, cr, ct)			\
>=20
> Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c	Mon O=
ct 22 17:47:37 2012	(r241895)
> +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c	Mon O=
ct 22 17:50:54 2012	(r241896)
> @@ -54,7 +54,7 @@ vdev_file_open(vdev_t *vd, uint64_t *psi
>  	vdev_file_t *vf;
>  	vnode_t *vp;
>  	vattr_t vattr;
> -	int error, vfslocked;
> +	int error;
> =20
>  	/*
>  	 * We must have a pathname, and it must be absolute.
> @@ -114,11 +114,9 @@ skip_open:
>  	 * Determine the physical size of the file.
>  	 */
>  	vattr.va_mask =3D AT_SIZE;
> -	vfslocked =3D VFS_LOCK_GIANT(vp->v_mount);
>  	vn_lock(vp, LK_SHARED | LK_RETRY);
>  	error =3D VOP_GETATTR(vp, &vattr, kcred);
>  	VOP_UNLOCK(vp, 0);
> -	VFS_UNLOCK_GIANT(vfslocked);
>  	if (error) {
>  		(void) VOP_CLOSE(vp, spa_mode(vd->vdev_spa), 1, 0, kcred, NULL);
>  		vd->vdev_stat.vs_aux =3D VDEV_AUX_OPEN_FAILED;
>=20
> Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c	Mon O=
ct 22 17:47:37 2012	(r241895)
> +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c	Mon O=
ct 22 17:50:54 2012	(r241896)
> @@ -1092,14 +1092,12 @@ zfs_get_done(zgd_t *zgd, int error)
>  {
>  	znode_t *zp =3D zgd->zgd_private;
>  	objset_t *os =3D zp->z_zfsvfs->z_os;
> -	int vfslocked;
> =20
>  	if (zgd->zgd_db)
>  		dmu_buf_rele(zgd->zgd_db, zgd);
> =20
>  	zfs_range_unlock(zgd->zgd_rl);
> =20
> -	vfslocked =3D VFS_LOCK_GIANT(zp->z_zfsvfs->z_vfs);
>  	/*
>  	 * Release the vnode asynchronously as we currently have the
>  	 * txg stopped from syncing.
> @@ -1110,7 +1108,6 @@ zfs_get_done(zgd_t *zgd, int error)
>  		zil_add_block(zgd->zgd_zilog, zgd->zgd_bp);
> =20
>  	kmem_free(zgd, sizeof (zgd_t));
> -	VFS_UNLOCK_GIANT(vfslocked);
>  }
> =20
>  #ifdef DEBUG
> @@ -6337,7 +6334,7 @@ vop_getextattr {
>  	}
> =20
>  	flags =3D FREAD;
> -	NDINIT_ATVP(&nd, LOOKUP, NOFOLLOW | MPSAFE, UIO_SYSSPACE, attrname,
> +	NDINIT_ATVP(&nd, LOOKUP, NOFOLLOW, UIO_SYSSPACE, attrname,
>  	    xvp, td);
>  	error =3D vn_open_cred(&nd, &flags, 0, 0, ap->a_cred, NULL);
>  	vp =3D nd.ni_vp;
> @@ -6405,7 +6402,7 @@ vop_deleteextattr {
>  		return (error);
>  	}
> =20
> -	NDINIT_ATVP(&nd, DELETE, NOFOLLOW | LOCKPARENT | LOCKLEAF | MPSAFE,
> +	NDINIT_ATVP(&nd, DELETE, NOFOLLOW | LOCKPARENT | LOCKLEAF,
>  	    UIO_SYSSPACE, attrname, xvp, td);
>  	error =3D namei(&nd);
>  	vp =3D nd.ni_vp;
> @@ -6472,7 +6469,7 @@ vop_setextattr {
>  	}
> =20
>  	flags =3D FFLAGS(O_WRONLY | O_CREAT);
> -	NDINIT_ATVP(&nd, LOOKUP, NOFOLLOW | MPSAFE, UIO_SYSSPACE, attrname,
> +	NDINIT_ATVP(&nd, LOOKUP, NOFOLLOW, UIO_SYSSPACE, attrname,
>  	    xvp, td);
>  	error =3D vn_open_cred(&nd, &flags, 0600, 0, ap->a_cred, NULL);
>  	vp =3D nd.ni_vp;
> @@ -6553,7 +6550,7 @@ vop_listextattr {
>  		return (error);
>  	}
> =20
> -	NDINIT_ATVP(&nd, LOOKUP, NOFOLLOW | LOCKLEAF | LOCKSHARED | MPSAFE,
> +	NDINIT_ATVP(&nd, LOOKUP, NOFOLLOW | LOCKLEAF | LOCKSHARED,
>  	    UIO_SYSSPACE, ".", xvp, td);
>  	error =3D namei(&nd);
>  	vp =3D nd.ni_vp;
>=20
> Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c	Mon O=
ct 22 17:47:37 2012	(r241895)
> +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c	Mon O=
ct 22 17:50:54 2012	(r241896)
> @@ -1404,7 +1404,6 @@ zfs_zinactive(znode_t *zp)
>  	vnode_t	*vp =3D ZTOV(zp);
>  	zfsvfs_t *zfsvfs =3D zp->z_zfsvfs;
>  	uint64_t z_id =3D zp->z_id;
> -	int vfslocked;
> =20
>  	ASSERT(zp->z_sa_hdl);
> =20
> @@ -1437,9 +1436,7 @@ zfs_zinactive(znode_t *zp)
>  		ZFS_OBJ_HOLD_EXIT(zfsvfs, z_id);
>  		ASSERT(vp->v_count =3D=3D 0);
>  		vrecycle(vp);
> -		vfslocked =3D VFS_LOCK_GIANT(zfsvfs->z_vfs);
>  		zfs_rmnode(zp);
> -		VFS_UNLOCK_GIANT(vfslocked);
>  		return;
>  	}
> =20
>=20
> Modified: head/sys/compat/linprocfs/linprocfs.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- head/sys/compat/linprocfs/linprocfs.c	Mon Oct 22 17:47:37 2012	(r2418=
95)
> +++ head/sys/compat/linprocfs/linprocfs.c	Mon Oct 22 17:50:54 2012	(r2418=
96)
> @@ -335,7 +335,7 @@ linprocfs_domtab(PFS_FILL_ARGS)
>  	int error;
> =20
>  	/* resolve symlinks etc. in the emulation tree prefix */
> -	NDINIT(&nd, LOOKUP, FOLLOW | MPSAFE, UIO_SYSSPACE, linux_emul_path, td);
> +	NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, linux_emul_path, td);
>  	flep =3D NULL;
>  	error =3D namei(&nd);
>  	lep =3D linux_emul_path;
> @@ -343,7 +343,6 @@ linprocfs_domtab(PFS_FILL_ARGS)
>  		if (vn_fullpath(td, nd.ni_vp, &dlep, &flep) =3D=3D 0)
>  			lep =3D dlep;
>  		vrele(nd.ni_vp);
> -		VFS_UNLOCK_GIANT(NDHASGIANT(&nd));
>  	}
>  	lep_len =3D strlen(lep);
> =20
> @@ -414,7 +413,7 @@ linprocfs_dopartitions(PFS_FILL_ARGS)
>  	int major, minor;
> =20
>  	/* resolve symlinks etc. in the emulation tree prefix */
> -	NDINIT(&nd, LOOKUP, FOLLOW | MPSAFE, UIO_SYSSPACE, linux_emul_path, td);
> +	NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, linux_emul_path, td);
>  	flep =3D NULL;
>  	error =3D namei(&nd);
>  	lep =3D linux_emul_path;
> @@ -422,7 +421,6 @@ linprocfs_dopartitions(PFS_FILL_ARGS)
>  		if (vn_fullpath(td, nd.ni_vp, &dlep, &flep) =3D=3D 0)
>  			lep =3D dlep;
>  		vrele(nd.ni_vp);
> -		VFS_UNLOCK_GIANT(NDHASGIANT(&nd));
>  	}
>  	lep_len =3D strlen(lep);
> =20
> @@ -1012,7 +1010,6 @@ linprocfs_doprocmaps(PFS_FILL_ARGS)
>  	int error;
>  	struct vnode *vp;
>  	struct vattr vat;
> -	int locked;
> =20
>  	PROC_LOCK(p);
>  	error =3D p_candebug(td, p);
> @@ -1065,12 +1062,10 @@ linprocfs_doprocmaps(PFS_FILL_ARGS)
>  			VM_OBJECT_UNLOCK(obj);
>  			if (vp) {
>  				vn_fullpath(td, vp, &name, &freename);
> -				locked =3D VFS_LOCK_GIANT(vp->v_mount);
>  				vn_lock(vp, LK_SHARED | LK_RETRY);
>  				VOP_GETATTR(vp, &vat, td->td_ucred);
>  				ino =3D vat.va_fileid;
>  				vput(vp);
> -				VFS_UNLOCK_GIANT(locked);
>  			}
>  		} else {
>  			flags =3D 0;
>=20
> Modified: head/sys/compat/linux/linux_file.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- head/sys/compat/linux/linux_file.c	Mon Oct 22 17:47:37 2012	(r241895)
> +++ head/sys/compat/linux/linux_file.c	Mon Oct 22 17:50:54 2012	(r241896)
> @@ -337,7 +337,7 @@ getdents_common(struct thread *td, struc
>  	struct l_dirent64 *linux_dirent64;
>  	int buflen, error, eofflag, nbytes, justone;
>  	u_long *cookies =3D NULL, *cookiep;
> -	int ncookies, vfslocked;
> +	int ncookies;
> =20
>  	nbytes =3D args->count;
>  	if (nbytes =3D=3D 1) {
> @@ -359,9 +359,7 @@ getdents_common(struct thread *td, struc
> =20
>  	off =3D foffset_lock(fp, 0);
>  	vp =3D fp->f_vnode;
> -	vfslocked =3D VFS_LOCK_GIANT(vp->v_mount);
>  	if (vp->v_type !=3D VDIR) {
> -		VFS_UNLOCK_GIANT(vfslocked);
>  		foffset_unlock(fp, off, 0);
>  		fdrop(fp, td);
>  		return (EINVAL);
> @@ -521,7 +519,6 @@ out:
>  		free(cookies, M_TEMP);
> =20
>  	VOP_UNLOCK(vp, 0);
> -	VFS_UNLOCK_GIANT(vfslocked);
>  	foffset_unlock(fp, off, 0);
>  	fdrop(fp, td);
>  	free(buf, M_TEMP);
>=20
> Modified: head/sys/compat/linux/linux_misc.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- head/sys/compat/linux/linux_misc.c	Mon Oct 22 17:47:37 2012	(r241895)
> +++ head/sys/compat/linux/linux_misc.c	Mon Oct 22 17:50:54 2012	(r241896)
> @@ -247,7 +247,7 @@ linux_uselib(struct thread *td, struct l
>  	char *library;
>  	ssize_t aresid;
>  	int error;
> -	int locked, vfslocked;
> +	int locked;
> =20
>  	LCONVPATHEXIST(td, args->library, &library);
> =20
> @@ -257,11 +257,10 @@ linux_uselib(struct thread *td, struct l
>  #endif
> =20
>  	a_out =3D NULL;
> -	vfslocked =3D 0;
>  	locked =3D 0;
>  	vp =3D NULL;
> =20
> -	NDINIT(&ni, LOOKUP, ISOPEN | FOLLOW | LOCKLEAF | MPSAFE | AUDITVNODE1,
> +	NDINIT(&ni, LOOKUP, ISOPEN | FOLLOW | LOCKLEAF | AUDITVNODE1,
>  	    UIO_SYSSPACE, library, td);
>  	error =3D namei(&ni);
>  	LFREEPATH(library);
> @@ -269,7 +268,6 @@ linux_uselib(struct thread *td, struct l
>  		goto cleanup;
> =20
>  	vp =3D ni.ni_vp;
> -	vfslocked =3D NDHASGIANT(&ni);
>  	NDFREE(&ni, NDF_ONLY_PNBUF);
> =20
>  	/*
> @@ -393,7 +391,6 @@ linux_uselib(struct thread *td, struct l
>  	 */
>  	locked =3D 0;
>  	VOP_UNLOCK(vp, 0);
> -	VFS_UNLOCK_GIANT(vfslocked);
> =20
>  	/*
>  	 * Check if file_offset page aligned. Currently we cannot handle
> @@ -463,10 +460,8 @@ linux_uselib(struct thread *td, struct l
> =20
>  cleanup:
>  	/* Unlock vnode if needed */
> -	if (locked) {
> +	if (locked)
>  		VOP_UNLOCK(vp, 0);
> -		VFS_UNLOCK_GIANT(vfslocked);
> -	}
> =20
>  	/* Release the temporary mapping. */
>  	if (a_out)
>=20
> Modified: head/sys/compat/ndis/subr_ndis.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- head/sys/compat/ndis/subr_ndis.c	Mon Oct 22 17:47:37 2012	(r241895)
> +++ head/sys/compat/ndis/subr_ndis.c	Mon Oct 22 17:50:54 2012	(r241896)
> @@ -2741,7 +2741,7 @@ NdisOpenFile(status, filehandle, filelen
>  	char			*afilename =3D NULL;
>  	struct thread		*td =3D curthread;
>  	struct nameidata	nd;
> -	int			flags, error, vfslocked;
> +	int			flags, error;
>  	struct vattr		vat;
>  	struct vattr		*vap =3D &vat;
>  	ndis_fh			*fh;
> @@ -2821,7 +2821,7 @@ NdisOpenFile(status, filehandle, filelen
>  	if (td->td_proc->p_fd->fd_cdir =3D=3D NULL)
>  		td->td_proc->p_fd->fd_cdir =3D rootvnode;
> =20
> -	NDINIT(&nd, LOOKUP, FOLLOW | MPSAFE, UIO_SYSSPACE, path, td);
> +	NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, path, td);
> =20
>  	flags =3D FREAD;
>  	error =3D vn_open(&nd, &flags, 0, NULL);
> @@ -2833,7 +2833,6 @@ NdisOpenFile(status, filehandle, filelen
>  		free(afilename, M_DEVBUF);
>  		return;
>  	}
> -	vfslocked =3D NDHASGIANT(&nd);
> =20
>  	ExFreePool(path);
> =20
> @@ -2842,7 +2841,6 @@ NdisOpenFile(status, filehandle, filelen
>  	/* Get the file size. */
>  	VOP_GETATTR(nd.ni_vp, vap, td->td_ucred);
>  	VOP_UNLOCK(nd.ni_vp, 0);
> -	VFS_UNLOCK_GIANT(vfslocked);
> =20
>  	fh->nf_vp =3D nd.ni_vp;
>  	fh->nf_map =3D NULL;
> @@ -2862,7 +2860,7 @@ NdisMapFile(status, mappedbuffer, fileha
>  	struct thread		*td =3D curthread;
>  	linker_file_t		lf;
>  	caddr_t			kldstart;
> -	int			error, vfslocked;
> +	int			error;
>  	ssize_t			resid;
>  	struct vnode		*vp;
> =20
> @@ -2903,10 +2901,8 @@ NdisMapFile(status, mappedbuffer, fileha
>  	}
> =20
>  	vp =3D fh->nf_vp;
> -	vfslocked =3D VFS_LOCK_GIANT(vp->v_mount);
>  	error =3D vn_rdwr(UIO_READ, vp, fh->nf_map, fh->nf_maplen, 0,
>  	    UIO_SYSSPACE, 0, td->td_ucred, NOCRED, &resid, td);
> -	VFS_UNLOCK_GIANT(vfslocked);
> =20
>  	if (error)
>  		*status =3D NDIS_STATUS_FAILURE;
> @@ -2937,7 +2933,6 @@ NdisCloseFile(filehandle)
>  {
>  	struct thread		*td =3D curthread;
>  	ndis_fh			*fh;
> -	int			vfslocked;
>  	struct vnode		*vp;
> =20
>  	if (filehandle =3D=3D NULL)
> @@ -2955,9 +2950,7 @@ NdisCloseFile(filehandle)
> =20
>  	if (fh->nf_type =3D=3D NDIS_FH_TYPE_VFS) {
>  		vp =3D fh->nf_vp;
> -		vfslocked =3D VFS_LOCK_GIANT(vp->v_mount);
>  		vn_close(vp, FREAD, td->td_ucred, td);
> -		VFS_UNLOCK_GIANT(vfslocked);
>  	}
> =20
>  	fh->nf_vp =3D NULL;
>=20
> Modified: head/sys/compat/svr4/svr4_misc.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- head/sys/compat/svr4/svr4_misc.c	Mon Oct 22 17:47:37 2012	(r241895)
> +++ head/sys/compat/svr4/svr4_misc.c	Mon Oct 22 17:50:54 2012	(r241896)
> @@ -241,7 +241,7 @@ svr4_sys_getdents64(td, uap)
>  	struct iovec aiov;
>  	off_t off;
>  	struct svr4_dirent64 svr4_dirent;
> -	int buflen, error, eofflag, nbytes, justone, vfslocked;
> +	int buflen, error, eofflag, nbytes, justone;
>  	u_long *cookies =3D NULL, *cookiep;
>  	int ncookies;
> =20
> @@ -258,9 +258,7 @@ svr4_sys_getdents64(td, uap)
>  	}
> =20
>  	vp =3D fp->f_vnode;
> -	vfslocked =3D VFS_LOCK_GIANT(vp->v_mount);
>  	if (vp->v_type !=3D VDIR) {
> -		VFS_UNLOCK_GIANT(vfslocked);
>  		fdrop(fp, td);
>  		return (EINVAL);
>  	}
> @@ -397,7 +395,6 @@ eof:
>  	td->td_retval[0] =3D nbytes - resid;
>  out:
>  	VOP_UNLOCK(vp, 0);
> -	VFS_UNLOCK_GIANT(vfslocked);
>  	fdrop(fp, td);
>  	if (cookies)
>  		free(cookies, M_TEMP);
> @@ -422,7 +419,7 @@ svr4_sys_getdents(td, uap)
>  	struct iovec aiov;
>  	struct svr4_dirent idb;
>  	off_t off;		/* true file offset */
> -	int buflen, error, eofflag, vfslocked;
> +	int buflen, error, eofflag;
>  	u_long *cookiebuf =3D NULL, *cookie;
>  	int ncookies =3D 0, *retval =3D td->td_retval;
> =20
> @@ -439,9 +436,7 @@ svr4_sys_getdents(td, uap)
>  	}
> =20
>  	vp =3D fp->f_vnode;
> -	vfslocked =3D VFS_LOCK_GIANT(vp->v_mount);
>  	if (vp->v_type !=3D VDIR) {
> -		VFS_UNLOCK_GIANT(vfslocked);
>  		fdrop(fp, td);
>  		return (EINVAL);
>  	}
> @@ -534,7 +529,6 @@ eof:
>  	*retval =3D uap->nbytes - resid;
>  out:
>  	VOP_UNLOCK(vp, 0);
> -	VFS_UNLOCK_GIANT(vfslocked);
>  	fdrop(fp, td);
>  	if (cookiebuf)
>  		free(cookiebuf, M_TEMP);
> @@ -614,7 +608,7 @@ svr4_sys_fchroot(td, uap)
>  	struct filedesc	*fdp =3D td->td_proc->p_fd;
>  	struct vnode	*vp;
>  	struct file	*fp;
> -	int		 error, vfslocked;
> +	int		 error;
> =20
>  	if ((error =3D priv_check(td, PRIV_VFS_FCHROOT)) !=3D 0)
>  		return error;
> @@ -624,7 +618,6 @@ svr4_sys_fchroot(td, uap)
>  	vp =3D fp->f_vnode;
>  	VREF(vp);
>  	fdrop(fp, td);
> -	vfslocked =3D VFS_LOCK_GIANT(vp->v_mount);
>  	vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
>  	error =3D change_dir(vp, td);
>  	if (error)
> @@ -637,11 +630,9 @@ svr4_sys_fchroot(td, uap)
>  	VOP_UNLOCK(vp, 0);
>  	error =3D change_root(vp, td);
>  	vrele(vp);
> -	VFS_UNLOCK_GIANT(vfslocked);
>  	return (error);
>  fail:
>  	vput(vp);
> -	VFS_UNLOCK_GIANT(vfslocked);
>  	return (error);
>  }
> =20
> @@ -1652,13 +1643,12 @@ svr4_sys_resolvepath(td, uap)
>  	int error, *retval =3D td->td_retval;
>  	unsigned int ncopy;
> =20
> -	NDINIT(&nd, LOOKUP, NOFOLLOW | SAVENAME | MPSAFE, UIO_USERSPACE,
> +	NDINIT(&nd, LOOKUP, NOFOLLOW | SAVENAME, UIO_USERSPACE,
>  	    uap->path, td);
> =20
>  	if ((error =3D namei(&nd)) !=3D 0)
>  		return (error);
>  	NDFREE(&nd, NDF_NO_FREE_PNBUF);
> -	VFS_UNLOCK_GIANT(NDHASGIANT(&nd));
> =20
>  	ncopy =3D min(uap->bufsiz, strlen(nd.ni_cnd.cn_pnbuf) + 1);
>  	if ((error =3D copyout(nd.ni_cnd.cn_pnbuf, uap->buf, ncopy)) !=3D 0)
>=20
> Modified: head/sys/conf/NOTES
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- head/sys/conf/NOTES	Mon Oct 22 17:47:37 2012	(r241895)
> +++ head/sys/conf/NOTES	Mon Oct 22 17:50:54 2012	(r241896)
> @@ -1088,9 +1088,6 @@ options 	REISERFS
>  # unsuitable for inclusion on machines with untrusted local users.
>  options 	VFS_AIO
> =20
> -# Enable mounting of non-MPSAFE filesystems.
> -options 	VFS_ALLOW_NONMPSAFE
> -
>  # Cryptographically secure random number generator; /dev/random
>  device		random
> =20
>=20
> Modified: head/sys/conf/options
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- head/sys/conf/options	Mon Oct 22 17:47:37 2012	(r241895)
> +++ head/sys/conf/options	Mon Oct 22 17:50:54 2012	(r241896)
> @@ -188,7 +188,6 @@ SW_WATCHDOG	opt_watchdog.h
>  TURNSTILE_PROFILING
>  UMTX_PROFILING
>  VFS_AIO
> -VFS_ALLOW_NONMPSAFE
>  VERBOSE_SYSINIT	opt_global.h
>  WLCACHE		opt_wavelan.h
>  WLDEBUG		opt_wavelan.h
>=20
> Modified: head/sys/dev/hwpmc/hwpmc_mod.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- head/sys/dev/hwpmc/hwpmc_mod.c	Mon Oct 22 17:47:37 2012	(r241895)
> +++ head/sys/dev/hwpmc/hwpmc_mod.c	Mon Oct 22 17:50:54 2012	(r241896)
> @@ -1632,7 +1632,6 @@ pmc_log_kernel_mappings(struct pmc *pm)
>  static void
>  pmc_log_process_mappings(struct pmc_owner *po, struct proc *p)
>  {
> -	int locked;
>  	vm_map_t map;
>  	struct vnode *vp;
>  	struct vmspace *vm;
> @@ -1742,9 +1741,7 @@ pmc_log_process_mappings(struct pmc_owne
>  		pmc_getfilename(vp, &fullpath, &freepath);
>  		last_vp =3D vp;
> =20
> -		locked =3D VFS_LOCK_GIANT(vp->v_mount);
>  		vrele(vp);
> -		VFS_UNLOCK_GIANT(locked);
> =20
>  		vp =3D NULL;
>  		pmclog_process_map_in(po, p->p_pid, start_addr, fullpath);
>=20
> Modified: head/sys/dev/md/md.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- head/sys/dev/md/md.c	Mon Oct 22 17:47:37 2012	(r241895)
> +++ head/sys/dev/md/md.c	Mon Oct 22 17:50:54 2012	(r241896)
> @@ -512,7 +512,7 @@ mdstart_preload(struct md_s *sc, struct=20
>  static int
>  mdstart_vnode(struct md_s *sc, struct bio *bp)
>  {
> -	int error, vfslocked;
> +	int error;
>  	struct uio auio;
>  	struct iovec aiov;
>  	struct mount *mp;
> @@ -542,13 +542,11 @@ mdstart_vnode(struct md_s *sc, struct bi
>  	 */
> =20
>  	if (bp->bio_cmd =3D=3D BIO_FLUSH) {
> -		vfslocked =3D VFS_LOCK_GIANT(vp->v_mount);
>  		(void) vn_start_write(vp, &mp, V_WAIT);
>  		vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
>  		error =3D VOP_FSYNC(vp, MNT_WAIT, td);
>  		VOP_UNLOCK(vp, 0);
>  		vn_finished_write(mp);
> -		VFS_UNLOCK_GIANT(vfslocked);
>  		return (error);
>  	}
> =20
> @@ -570,7 +568,6 @@ mdstart_vnode(struct md_s *sc, struct bi
>  		auio.uio_rw =3D UIO_WRITE;
>  		auio.uio_td =3D td;
>  		end =3D bp->bio_offset + bp->bio_length;
> -		vfslocked =3D VFS_LOCK_GIANT(vp->v_mount);
>  		(void) vn_start_write(vp, &mp, V_WAIT);
>  		vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
>  		error =3D 0;
> @@ -588,7 +585,6 @@ mdstart_vnode(struct md_s *sc, struct bi
>  		VOP_UNLOCK(vp, 0);
>  		vn_finished_write(mp);
>  		bp->bio_resid =3D end - auio.uio_offset;
> -		VFS_UNLOCK_GIANT(vfslocked);
>  		return (error);
>  	}
> =20
> @@ -610,7 +606,6 @@ mdstart_vnode(struct md_s *sc, struct bi
>  	 * When reading set IO_DIRECT to try to avoid double-caching
>  	 * the data.  When writing IO_DIRECT is not optimal.
>  	 */
> -	vfslocked =3D VFS_LOCK_GIANT(vp->v_mount);
>  	if (bp->bio_cmd =3D=3D BIO_READ) {
>  		vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
>  		error =3D VOP_READ(vp, &auio, IO_DIRECT, sc->cred);
> @@ -623,7 +618,6 @@ mdstart_vnode(struct md_s *sc, struct bi
>  		VOP_UNLOCK(vp, 0);
>  		vn_finished_write(mp);
>  	}
> -	VFS_UNLOCK_GIANT(vfslocked);
>  	bp->bio_resid =3D auio.uio_resid;
>  	return (error);
>  }
> @@ -957,7 +951,7 @@ mdcreate_vnode(struct md_s *sc, struct m
>  	struct vattr vattr;
>  	struct nameidata nd;
>  	char *fname;
> -	int error, flags, vfslocked;
> +	int error, flags;
> =20
>  	/*
>  	 * Kernel-originated requests must have the filename appended
> @@ -976,11 +970,10 @@ mdcreate_vnode(struct md_s *sc, struct m
>  	 * set the FWRITE mask before trying to open the backing store.
>  	 */
>  	flags =3D FREAD | ((mdio->md_options & MD_READONLY) ? 0 : FWRITE);
> -	NDINIT(&nd, LOOKUP, FOLLOW | MPSAFE, UIO_SYSSPACE, sc->file, td);
> +	NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, sc->file, td);
>  	error =3D vn_open(&nd, &flags, 0, NULL);
>  	if (error !=3D 0)
>  		return (error);
> -	vfslocked =3D NDHASGIANT(&nd);
>  	NDFREE(&nd, NDF_ONLY_PNBUF);
>  	if (nd.ni_vp->v_type !=3D VREG) {
>  		error =3D EINVAL;
> @@ -1016,19 +1009,16 @@ mdcreate_vnode(struct md_s *sc, struct m
>  		nd.ni_vp->v_vflag &=3D ~VV_MD;
>  		goto bad;
>  	}
> -	VFS_UNLOCK_GIANT(vfslocked);
>  	return (0);
>  bad:
>  	VOP_UNLOCK(nd.ni_vp, 0);
>  	(void)vn_close(nd.ni_vp, flags, td->td_ucred, td);
> -	VFS_UNLOCK_GIANT(vfslocked);
>  	return (error);
>  }
> =20
>  static int
>  mddestroy(struct md_s *sc, struct thread *td)
>  {
> -	int vfslocked;
> =20
>  	if (sc->gp) {
>  		sc->gp->softc =3D NULL;
> @@ -1050,13 +1040,11 @@ mddestroy(struct md_s *sc, struct thread
>  	mtx_unlock(&sc->queue_mtx);
>  	mtx_destroy(&sc->queue_mtx);
>  	if (sc->vnode !=3D NULL) {
> -		vfslocked =3D VFS_LOCK_GIANT(sc->vnode->v_mount);
>  		vn_lock(sc->vnode, LK_EXCLUSIVE | LK_RETRY);
>  		sc->vnode->v_vflag &=3D ~VV_MD;
>  		VOP_UNLOCK(sc->vnode, 0);
>  		(void)vn_close(sc->vnode, sc->flags & MD_READONLY ?
>  		    FREAD : (FREAD|FWRITE), sc->cred, td);
> -		VFS_UNLOCK_GIANT(vfslocked);
>  	}
>  	if (sc->cred !=3D NULL)
>  		crfree(sc->cred);
>=20
> Modified: head/sys/dev/nand/nandsim_swap.c
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
> --- head/sys/dev/nand/nandsim_swap.c	Mon Oct 22 17:47:37 2012	(r241895)
> +++ head/sys/dev/nand/nandsim_swap.c	Mon Oct 22 17:50:54 2012	(r241896)
> @@ -142,9 +142,9 @@ static int
>  swap_file_open(struct chip_swap *swap, const char *swap_file)
>  {
>  	struct nameidata nd;
> -	int vfslocked, flags, error;
> +	int flags, error;
> =20
> -	NDINIT(&nd, LOOKUP, NOFOLLOW | MPSAFE, UIO_SYSSPACE, swap_file,
> +	NDINIT(&nd, LOOKUP, NOFOLLOW, UIO_SYSSPACE, swap_file,
>  	    curthread);
> =20
>  	flags =3D FWRITE | FREAD | O_NOFOLLOW | O_CREAT | O_TRUNC;
> @@ -157,12 +157,10 @@ swap_file_open(struct chip_swap *swap, c
>  	}
> =20
>  	swap->swap_cred =3D crhold(curthread->td_ucred);
> -	vfslocked =3D NDHASGIANT(&nd);
>  	NDFREE(&nd, NDF_ONLY_PNBUF);
> =20
>  	/* We just unlock so we hold a reference */
>  	VOP_UNLOCK(nd.ni_vp, 0);
> -	VFS_UNLOCK_GIANT(vfslocked);
> =20
>  	swap->swap_vp =3D nd.ni_vp;
> =20
> @@ -192,7 +190,6 @@ swap_file_write(struct chip_swap *swap,=20
>  	struct vnode *vp;
>  	struct uio auio;
>  	struct iovec aiov;
> -	int vfslocked;
> =20
>  	if (swap =3D=3D NULL || blk_state =3D=3D NULL)
>  		return (-1);
> @@ -222,13 +219,11 @@ swap_file_write(struct chip_swap *swap,=20
>  	auio.uio_resid =3D swap->blk_size;
>  	auio.uio_td =3D td;
> =20
> -	vfslocked =3D VFS_LOCK_GIANT(vp->v_mount);
>  	vn_start_write(vp, &mp, V_WAIT);
>  	vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
>  	VOP_WRITE(vp, &auio, IO_UNIT, swap->swap_cred);
>  	VOP_UNLOCK(vp, 0);
>  	vn_finished_write(mp);
> -	VFS_UNLOCK_GIANT(vfslocked);
> =20
>  	return (0);
>  }
> @@ -241,7 +236,6 @@ swap_file_read(struct chip_swap *swap, s
>  	struct vnode *vp;
>  	struct uio auio;
>  	struct iovec aiov;
> -	int vfslocked;
> =20
>  	if (swap =3D=3D NULL || blk_state =3D=3D NULL)
>  		return (-1);
> @@ -267,11 +261,9 @@ swap_file_read(struct chip_swap *swap, s
>  	auio.uio_resid =3D swap->blk_size;
>  	auio.uio_td =3D td;
> =20
> -	vfslocked =3D VFS_LOCK_GIANT(vp->v_mount);
>=20
> *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***

--=20
Pawel Jakub Dawidek                       http://www.wheelsystems.com
FreeBSD committer                         http://www.FreeBSD.org
Am I Evil? Yes, I Am!                     http://tupytaj.pl

--pf9I7BMVVzbSWLtt
Content-Type: application/pgp-signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (FreeBSD)

iEYEARECAAYFAlCG6e8ACgkQForvXbEpPzQ1iACfVIwuhi1EbjXShJ45DLIXsII9
kOYAoMYcMoTsquCowQ21SndfnjCaFaOP
=+Bbm
-----END PGP SIGNATURE-----

--pf9I7BMVVzbSWLtt--



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