From a11aaa8179582dea89ac4bec364cc76b7a61b1ab Mon Sep 17 00:00:00 2001 From: Matthew Dillon Date: Sat, 12 Aug 2006 00:26:22 +0000 Subject: [PATCH] VNode sequencing and locking - part 3/4. VNode aliasing is handled by the namecache (aka nullfs), so there is no longer a need to have VOP_LOCK, VOP_UNLOCK, or VOP_ISSLOCKED as 'VOP' functions. Both NFS and DEADFS have been using standard locking functions for some time and are no longer special cases. Replace all uses with native calls to vn_lock, vn_unlock, and vn_islocked. We can't have these as VOP functions anyhow because of the introduction of the new SYSLINK transport layer, since vnode locks are primarily used to protect the local vnode structure itself. --- sys/dev/disk/ccd/ccd.c | 4 +- sys/dev/disk/vn/vn.c | 8 +- .../linux/i386/linprocfs/linprocfs_vnops.c | 4 +- sys/emulation/linux/linux_file.c | 4 +- sys/emulation/linux/linux_misc.c | 6 +- sys/emulation/ndis/subr_ndis.c | 4 +- sys/kern/imgact_elf.c | 8 +- sys/kern/init_main.c | 4 +- sys/kern/kern_acct.c | 4 +- sys/kern/kern_acl.c | 6 +- sys/kern/kern_exec.c | 6 +- sys/kern/kern_ktrace.c | 6 +- sys/kern/kern_sig.c | 6 +- sys/kern/link_aout.c | 4 +- sys/kern/link_elf.c | 4 +- sys/kern/tty.c | 4 +- sys/kern/tty_tty.c | 10 +- sys/kern/uipc_syscalls.c | 4 +- sys/kern/uipc_usrreq.c | 4 +- sys/kern/vfs_cache.c | 8 +- sys/kern/vfs_default.c | 76 +++--------- sys/kern/vfs_lock.c | 6 +- sys/kern/vfs_lookup.c | 4 +- sys/kern/vfs_nlookup.c | 4 +- sys/kern/vfs_subr.c | 30 +---- sys/kern/vfs_sync.c | 5 +- sys/kern/vfs_syscalls.c | 24 ++-- sys/kern/vfs_vnops.c | 34 ++++-- sys/kern/vfs_vopops.c | 77 +----------- sys/sys/vfsops.h | 44 +------ sys/sys/vnode.h | 31 +---- sys/vfs/coda/coda_vnops.c | 19 ++- sys/vfs/fdesc/fdesc_vnops.c | 4 +- sys/vfs/fifofs/fifo_vnops.c | 10 +- sys/vfs/gnu/ext2fs/ext2_lookup.c | 12 +- sys/vfs/gnu/ext2fs/ext2_quota.c | 10 +- sys/vfs/gnu/ext2fs/ext2_vfsops.c | 16 +-- sys/vfs/gnu/ext2fs/ext2_vnops.c | 25 ++-- sys/vfs/gnu/ext2fs/fs.h | 6 +- sys/vfs/hpfs/hpfs.h | 20 +--- sys/vfs/hpfs/hpfs_vnops.c | 56 +-------- sys/vfs/isofs/cd9660/cd9660_lookup.c | 6 +- sys/vfs/isofs/cd9660/cd9660_vfsops.c | 8 +- sys/vfs/isofs/cd9660/cd9660_vnops.c | 11 +- sys/vfs/mfs/mfs_vnops.c | 5 +- sys/vfs/msdosfs/msdosfs_lookup.c | 12 +- sys/vfs/msdosfs/msdosfs_vfsops.c | 14 +-- sys/vfs/msdosfs/msdosfs_vnops.c | 13 +- sys/vfs/nfs/nfs_node.c | 92 +------------- sys/vfs/nfs/nfs_serv.c | 12 +- sys/vfs/nfs/nfs_subs.c | 6 +- sys/vfs/nfs/nfs_vfsops.c | 6 +- sys/vfs/nfs/nfs_vnops.c | 19 +-- sys/vfs/ntfs/ntfs.h | 25 +--- sys/vfs/ntfs/ntfs_vfsops.c | 9 +- sys/vfs/ntfs/ntfs_vnops.c | 5 +- sys/vfs/nullfs/null_vfsops.c | 4 +- sys/vfs/nwfs/nwfs_vfsops.c | 6 +- sys/vfs/nwfs/nwfs_vnops.c | 15 +-- sys/vfs/portal/portal_vnops.c | 4 +- sys/vfs/procfs/procfs_vnops.c | 4 +- sys/vfs/smbfs/smbfs_vfsops.c | 6 +- sys/vfs/smbfs/smbfs_vnops.c | 15 +-- sys/vfs/specfs/spec_vnops.c | 12 +- sys/vfs/udf/udf_vfsops.c | 6 +- sys/vfs/udf/udf_vnops.c | 4 +- sys/vfs/ufs/ffs_balloc.c | 5 +- sys/vfs/ufs/ffs_rawread.c | 41 +++---- sys/vfs/ufs/ffs_softdep.c | 10 +- sys/vfs/ufs/ffs_vfsops.c | 20 ++-- sys/vfs/ufs/ufs_lookup.c | 18 +-- sys/vfs/ufs/ufs_quota.c | 10 +- sys/vfs/ufs/ufs_vnops.c | 23 ++-- sys/vfs/union/union_subr.c | 16 +-- sys/vfs/union/union_vfsops.c | 10 +- sys/vfs/union/union_vnops.c | 112 +++--------------- sys/vm/vm_contig.c | 4 +- sys/vm/vm_map.c | 4 +- sys/vm/vm_pageout.c | 9 +- sys/vm/vm_swap.c | 5 +- 80 files changed, 351 insertions(+), 876 deletions(-) diff --git a/sys/dev/disk/ccd/ccd.c b/sys/dev/disk/ccd/ccd.c index 3f6f1fd903..860ba3a0ce 100644 --- a/sys/dev/disk/ccd/ccd.c +++ b/sys/dev/disk/ccd/ccd.c @@ -1,5 +1,5 @@ /* $FreeBSD: src/sys/dev/ccd/ccd.c,v 1.73.2.1 2001/09/11 09:49:52 kris Exp $ */ -/* $DragonFly: src/sys/dev/disk/ccd/ccd.c,v 1.33 2006/07/28 02:17:35 dillon Exp $ */ +/* $DragonFly: src/sys/dev/disk/ccd/ccd.c,v 1.34 2006/08/12 00:26:17 dillon Exp $ */ /* $NetBSD: ccd.c,v 1.22 1995/12/08 19:13:26 thorpej Exp $ */ @@ -1588,7 +1588,7 @@ ccdlookup(char *path, struct vnode **vpp) vprint("ccdlookup: vnode info", vp); #endif - VOP_UNLOCK(vp, 0); + vn_unlock(vp); nd.nl_open_vp = NULL; nlookup_done(&nd); *vpp = vp; /* leave ref intact */ diff --git a/sys/dev/disk/vn/vn.c b/sys/dev/disk/vn/vn.c index 67513818b1..e15d99646a 100644 --- a/sys/dev/disk/vn/vn.c +++ b/sys/dev/disk/vn/vn.c @@ -39,7 +39,7 @@ * * from: @(#)vn.c 8.6 (Berkeley) 4/1/94 * $FreeBSD: src/sys/dev/vn/vn.c,v 1.105.2.4 2001/11/18 07:11:00 dillon Exp $ - * $DragonFly: src/sys/dev/disk/vn/vn.c,v 1.25 2006/07/28 02:17:35 dillon Exp $ + * $DragonFly: src/sys/dev/disk/vn/vn.c,v 1.26 2006/08/12 00:26:18 dillon Exp $ */ /* @@ -386,7 +386,7 @@ vnstrategy(struct dev_strategy_args *ap) error = VOP_READ(vn->sc_vp, &auio, IO_DIRECT, vn->sc_cred); else error = VOP_WRITE(vn->sc_vp, &auio, IO_NOWDRAIN, vn->sc_cred); - VOP_UNLOCK(vn->sc_vp, 0); + vn_unlock(vn->sc_vp); bp->b_resid = auio.uio_resid; if (error) { bp->b_error = error; @@ -569,7 +569,7 @@ vniocattach_file(struct vn_softc *vn, struct vn_ioctl *vio, dev_t dev, error = EINVAL; goto done; } - VOP_UNLOCK(vp, 0); + vn_unlock(vp); vn->sc_secsize = DEV_BSIZE; vn->sc_vp = vp; nd.nl_open_vp = NULL; @@ -721,7 +721,7 @@ vnsetcred(struct vn_softc *vn, struct ucred *cred) auio.uio_resid = aiov.iov_len; vn_lock(vn->sc_vp, LK_EXCLUSIVE | LK_RETRY); error = VOP_READ(vn->sc_vp, &auio, 0, vn->sc_cred); - VOP_UNLOCK(vn->sc_vp, 0); + vn_unlock(vn->sc_vp); free(tmpbuf, M_TEMP); } return (error); diff --git a/sys/emulation/linux/i386/linprocfs/linprocfs_vnops.c b/sys/emulation/linux/i386/linprocfs/linprocfs_vnops.c index 40f5235a7d..e87b5e5787 100644 --- a/sys/emulation/linux/i386/linprocfs/linprocfs_vnops.c +++ b/sys/emulation/linux/i386/linprocfs/linprocfs_vnops.c @@ -39,7 +39,7 @@ * @(#)procfs_vnops.c 8.18 (Berkeley) 5/21/95 * * $FreeBSD: src/sys/i386/linux/linprocfs/linprocfs_vnops.c,v 1.3.2.5 2001/08/12 14:29:19 rwatson Exp $ - * $DragonFly: src/sys/emulation/linux/i386/linprocfs/linprocfs_vnops.c,v 1.32 2006/07/18 22:22:11 dillon Exp $ + * $DragonFly: src/sys/emulation/linux/i386/linprocfs/linprocfs_vnops.c,v 1.33 2006/08/12 00:26:19 dillon Exp $ */ /* @@ -752,7 +752,7 @@ out: if (error == 0) { if (*vpp != dvp && (cnp->cn_flags & CNP_LOCKPARENT) == 0) { cnp->cn_flags |= CNP_PDIRUNLOCK; - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); } } return (error); diff --git a/sys/emulation/linux/linux_file.c b/sys/emulation/linux/linux_file.c index 3ad754ee80..48fc75943c 100644 --- a/sys/emulation/linux/linux_file.c +++ b/sys/emulation/linux/linux_file.c @@ -26,7 +26,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * $FreeBSD: src/sys/compat/linux/linux_file.c,v 1.41.2.6 2003/01/06 09:19:43 fjoe Exp $ - * $DragonFly: src/sys/emulation/linux/linux_file.c,v 1.33 2006/06/13 08:12:03 dillon Exp $ + * $DragonFly: src/sys/emulation/linux/linux_file.c,v 1.34 2006/08/12 00:26:19 dillon Exp $ */ #include "opt_compat.h" @@ -435,7 +435,7 @@ out: if (cookies) free(cookies, M_TEMP); - VOP_UNLOCK(vp, 0); + vn_unlock(vp); free(buf, M_TEMP); done: fdrop(fp); diff --git a/sys/emulation/linux/linux_misc.c b/sys/emulation/linux/linux_misc.c index 8aba969d56..39a34b1c47 100644 --- a/sys/emulation/linux/linux_misc.c +++ b/sys/emulation/linux/linux_misc.c @@ -26,7 +26,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * $FreeBSD: src/sys/compat/linux/linux_misc.c,v 1.85.2.9 2002/09/24 08:11:41 mdodd Exp $ - * $DragonFly: src/sys/emulation/linux/linux_misc.c,v 1.28 2006/06/05 07:26:09 dillon Exp $ + * $DragonFly: src/sys/emulation/linux/linux_misc.c,v 1.29 2006/08/12 00:26:19 dillon Exp $ */ #include "opt_compat.h" @@ -308,7 +308,7 @@ sys_linux_uselib(struct linux_uselib_args *args) /* * Lock no longer needed */ - VOP_UNLOCK(vp, 0); + vn_unlock(vp); locked = 0; /* Pull in executable header into kernel_map */ @@ -447,7 +447,7 @@ cleanup: /* Unlock/release vnode */ if (vp) { if (locked) - VOP_UNLOCK(vp, 0); + vn_unlock(vp); vrele(vp); } /* Release the kernel mapping. */ diff --git a/sys/emulation/ndis/subr_ndis.c b/sys/emulation/ndis/subr_ndis.c index 65ccfa8933..19a142720b 100644 --- a/sys/emulation/ndis/subr_ndis.c +++ b/sys/emulation/ndis/subr_ndis.c @@ -30,7 +30,7 @@ * THE POSSIBILITY OF SUCH DAMAGE. * * $FreeBSD: src/sys/compat/ndis/subr_ndis.c,v 1.62 2004/07/11 00:19:30 wpaul Exp $ - * $DragonFly: src/sys/emulation/ndis/subr_ndis.c,v 1.13 2006/05/06 02:43:11 dillon Exp $ + * $DragonFly: src/sys/emulation/ndis/subr_ndis.c,v 1.14 2006/08/12 00:26:19 dillon Exp $ */ /* @@ -2314,7 +2314,7 @@ ndis_open_file(ndis_status *status, ndis_handle *filehandle, uint32_t *filelengt /* Get the file size. */ VOP_GETATTR(vp, vap); - VOP_UNLOCK(vp, 0); + vn_unlock(vp); fh->nf_vp = vp; fh->nf_map = NULL; diff --git a/sys/kern/imgact_elf.c b/sys/kern/imgact_elf.c index c74fda437f..02d65c6610 100644 --- a/sys/kern/imgact_elf.c +++ b/sys/kern/imgact_elf.c @@ -27,7 +27,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * $FreeBSD: src/sys/kern/imgact_elf.c,v 1.73.2.13 2002/12/28 19:49:41 dillon Exp $ - * $DragonFly: src/sys/kern/imgact_elf.c,v 1.39 2006/05/25 04:17:09 dillon Exp $ + * $DragonFly: src/sys/kern/imgact_elf.c,v 1.40 2006/08/12 00:26:20 dillon Exp $ */ #include @@ -441,7 +441,7 @@ elf_load_file(struct proc *p, const char *file, u_long *addr, u_long *entry) */ error = exec_check_permissions(imgp); if (error) { - VOP_UNLOCK(imgp->vp, 0); + vn_unlock(imgp->vp); goto fail; } @@ -452,7 +452,7 @@ elf_load_file(struct proc *p, const char *file, u_long *addr, u_long *entry) */ if (error == 0) imgp->vp->v_flag |= VTEXT; - VOP_UNLOCK(imgp->vp, 0); + vn_unlock(imgp->vp); if (error) goto fail; @@ -930,7 +930,7 @@ elf_coredump(struct proc *p, struct vnode *vp, off_t limit) fp->f_flag = O_CREAT|O_WRONLY|O_NOFOLLOW; fp->f_ops = &vnode_fileops; fp->f_data = vp; - VOP_UNLOCK(vp, 0); + vn_unlock(vp); error = generic_elf_coredump(p, fp, limit); diff --git a/sys/kern/init_main.c b/sys/kern/init_main.c index fbb6486c57..b8c5b10e66 100644 --- a/sys/kern/init_main.c +++ b/sys/kern/init_main.c @@ -40,7 +40,7 @@ * * @(#)init_main.c 8.9 (Berkeley) 1/21/94 * $FreeBSD: src/sys/kern/init_main.c,v 1.134.2.8 2003/06/06 20:21:32 tegge Exp $ - * $DragonFly: src/sys/kern/init_main.c,v 1.58 2006/06/07 03:02:10 dillon Exp $ + * $DragonFly: src/sys/kern/init_main.c,v 1.59 2006/08/12 00:26:20 dillon Exp $ */ #include "opt_init_path.h" @@ -461,7 +461,7 @@ start_init(void *dummy) p->p_fd->fd_rdir = vp; vref(p->p_fd->fd_rdir); vfs_cache_setroot(vp, cache_hold(mp->mnt_ncp)); - VOP_UNLOCK(vp, 0); /* leave ref intact */ + vn_unlock(vp); /* leave ref intact */ p->p_fd->fd_ncdir = cache_hold(mp->mnt_ncp); p->p_fd->fd_nrdir = cache_hold(mp->mnt_ncp); diff --git a/sys/kern/kern_acct.c b/sys/kern/kern_acct.c index 40b0bdfc54..b72c374442 100644 --- a/sys/kern/kern_acct.c +++ b/sys/kern/kern_acct.c @@ -38,7 +38,7 @@ * * @(#)kern_acct.c 8.1 (Berkeley) 6/14/93 * $FreeBSD: src/sys/kern/kern_acct.c,v 1.23.2.1 2002/07/24 18:33:55 johan Exp $ - * $DragonFly: src/sys/kern/kern_acct.c,v 1.25 2006/06/05 07:26:10 dillon Exp $ + * $DragonFly: src/sys/kern/kern_acct.c,v 1.26 2006/08/12 00:26:20 dillon Exp $ */ #include @@ -150,7 +150,7 @@ sys_acct(struct acct_args *uap) nd.nl_open_vp = NULL; nlookup_done(&nd); - VOP_UNLOCK(vp, 0); + vn_unlock(vp); } else { vp = NULL; } diff --git a/sys/kern/kern_acl.c b/sys/kern/kern_acl.c index 5700c3e158..e2843e0d35 100644 --- a/sys/kern/kern_acl.c +++ b/sys/kern/kern_acl.c @@ -24,7 +24,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/kern/kern_acl.c,v 1.2.2.1 2000/07/28 18:48:16 rwatson Exp $ - * $DragonFly: src/sys/kern/kern_acl.c,v 1.14 2006/06/05 07:26:10 dillon Exp $ + * $DragonFly: src/sys/kern/kern_acl.c,v 1.15 2006/08/12 00:26:20 dillon Exp $ */ /* @@ -81,7 +81,7 @@ vacl_set_acl(struct vnode *vp, acl_type_t type, struct acl *aclp) vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); error = VOP_SETACL(vp, type, &inkernacl, ucred); - VOP_UNLOCK(vp, 0); + vn_unlock(vp); return(error); } @@ -118,7 +118,7 @@ vacl_delete(struct vnode *vp, acl_type_t type) ucred = td->td_proc->p_ucred; vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); error = VOP_SETACL(vp, ACL_TYPE_DEFAULT, 0, ucred); - VOP_UNLOCK(vp, 0); + vn_unlock(vp); return (error); } diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c index f33fa9d63f..abe5105331 100644 --- a/sys/kern/kern_exec.c +++ b/sys/kern/kern_exec.c @@ -24,7 +24,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/kern/kern_exec.c,v 1.107.2.15 2002/07/30 15:40:46 nectar Exp $ - * $DragonFly: src/sys/kern/kern_exec.c,v 1.40 2006/06/05 07:26:10 dillon Exp $ + * $DragonFly: src/sys/kern/kern_exec.c,v 1.41 2006/08/12 00:26:20 dillon Exp $ */ #include @@ -207,12 +207,12 @@ interpret: */ error = exec_check_permissions(imgp); if (error) { - VOP_UNLOCK(imgp->vp, 0); + vn_unlock(imgp->vp); goto exec_fail_dealloc; } error = exec_map_first_page(imgp); - VOP_UNLOCK(imgp->vp, 0); + vn_unlock(imgp->vp); if (error) goto exec_fail_dealloc; diff --git a/sys/kern/kern_ktrace.c b/sys/kern/kern_ktrace.c index bdd21c8125..a0b5c1269b 100644 --- a/sys/kern/kern_ktrace.c +++ b/sys/kern/kern_ktrace.c @@ -32,7 +32,7 @@ * * @(#)kern_ktrace.c 8.2 (Berkeley) 9/23/93 * $FreeBSD: src/sys/kern/kern_ktrace.c,v 1.35.2.6 2002/07/05 22:36:38 darrenr Exp $ - * $DragonFly: src/sys/kern/kern_ktrace.c,v 1.27 2006/06/05 07:26:10 dillon Exp $ + * $DragonFly: src/sys/kern/kern_ktrace.c,v 1.28 2006/08/12 00:26:20 dillon Exp $ */ #include "opt_ktrace.h" @@ -259,7 +259,7 @@ sys_ktrace(struct ktrace_args *uap) tracenode->kn_refs = 1; nd.nl_open_vp = NULL; nlookup_done(&nd); - VOP_UNLOCK(tracenode->kn_vp, 0); + vn_unlock(tracenode->kn_vp); } /* * Clear all uses of the tracefile. Not the most efficient operation @@ -524,7 +524,7 @@ ktrwrite(struct proc *p, struct ktr_header *kth, struct uio *uio) error = VOP_WRITE(tracenode->kn_vp, uio, IO_UNIT | IO_APPEND, p->p_ucred); } - VOP_UNLOCK(tracenode->kn_vp, 0); + vn_unlock(tracenode->kn_vp); if (error) { /* * If an error occured, give up tracing on all processes diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index 9abf43bbc0..8b33f9c16c 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -37,7 +37,7 @@ * * @(#)kern_sig.c 8.7 (Berkeley) 4/18/94 * $FreeBSD: src/sys/kern/kern_sig.c,v 1.72.2.17 2003/05/16 16:34:34 obrien Exp $ - * $DragonFly: src/sys/kern/kern_sig.c,v 1.50 2006/06/05 07:26:10 dillon Exp $ + * $DragonFly: src/sys/kern/kern_sig.c,v 1.51 2006/08/12 00:26:20 dillon Exp $ */ #include "opt_ktrace.h" @@ -1685,7 +1685,7 @@ coredump(struct proc *p) nd.nl_open_vp = NULL; nlookup_done(&nd); - VOP_UNLOCK(vp, 0); + vn_unlock(vp); lf.l_whence = SEEK_SET; lf.l_start = 0; lf.l_len = 0; @@ -1706,7 +1706,7 @@ coredump(struct proc *p) vattr.va_size = 0; VOP_SETATTR(vp, &vattr, cred); p->p_acflag |= ACORE; - VOP_UNLOCK(vp, 0); + vn_unlock(vp); error = p->p_sysent->sv_coredump ? p->p_sysent->sv_coredump(p, vp, limit) : ENOSYS; diff --git a/sys/kern/link_aout.c b/sys/kern/link_aout.c index 468b3c6df6..a29816bfa5 100644 --- a/sys/kern/link_aout.c +++ b/sys/kern/link_aout.c @@ -24,7 +24,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/kern/link_aout.c,v 1.26 1999/12/24 15:33:36 bde Exp $ - * $DragonFly: src/sys/kern/link_aout.c,v 1.17 2006/05/06 02:43:12 dillon Exp $ + * $DragonFly: src/sys/kern/link_aout.c,v 1.18 2006/08/12 00:26:20 dillon Exp $ */ #define FREEBSD_AOUT 1 @@ -289,7 +289,7 @@ link_aout_load_file(const char* filename, linker_file_t* result) *result = lf; out: - VOP_UNLOCK(vp, 0); + vn_unlock(vp); vn_close(vp, FREAD); return error; diff --git a/sys/kern/link_elf.c b/sys/kern/link_elf.c index 21cd06dba1..3c32bc3c78 100644 --- a/sys/kern/link_elf.c +++ b/sys/kern/link_elf.c @@ -24,7 +24,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/kern/link_elf.c,v 1.24 1999/12/24 15:33:36 bde Exp $ - * $DragonFly: src/sys/kern/link_elf.c,v 1.19 2006/05/06 02:43:12 dillon Exp $ + * $DragonFly: src/sys/kern/link_elf.c,v 1.20 2006/08/12 00:26:20 dillon Exp $ */ #include @@ -695,7 +695,7 @@ out: free(shdr, M_LINKER); if (firstpage) free(firstpage, M_LINKER); - VOP_UNLOCK(vp, 0); + vn_unlock(vp); vn_close(vp, FREAD); return error; diff --git a/sys/kern/tty.c b/sys/kern/tty.c index 8749d95898..4be045398a 100644 --- a/sys/kern/tty.c +++ b/sys/kern/tty.c @@ -37,7 +37,7 @@ * * @(#)tty.c 8.8 (Berkeley) 1/21/94 * $FreeBSD: src/sys/kern/tty.c,v 1.129.2.5 2002/03/11 01:32:31 dd Exp $ - * $DragonFly: src/sys/kern/tty.c,v 1.25 2006/07/28 02:17:40 dillon Exp $ + * $DragonFly: src/sys/kern/tty.c,v 1.26 2006/08/12 00:26:20 dillon Exp $ */ /*- @@ -311,7 +311,7 @@ ttyclosesession(struct session *sp, int dorele) if (vn_lock(vp, LK_EXCLUSIVE|LK_RETRY) == 0) { vclrflags(vp, VCTTYISOPEN); VOP_CLOSE(vp, FREAD|FWRITE); - VOP_UNLOCK(vp, 0); + vn_unlock(vp); } } if (dorele) diff --git a/sys/kern/tty_tty.c b/sys/kern/tty_tty.c index 1e1cbc371a..1d3b3380b9 100644 --- a/sys/kern/tty_tty.c +++ b/sys/kern/tty_tty.c @@ -32,7 +32,7 @@ * * @(#)tty_tty.c 8.2 (Berkeley) 9/23/93 * $FreeBSD: src/sys/kern/tty_tty.c,v 1.30 1999/09/25 18:24:24 phk Exp $ - * $DragonFly: src/sys/kern/tty_tty.c,v 1.16 2006/07/28 02:17:40 dillon Exp $ + * $DragonFly: src/sys/kern/tty_tty.c,v 1.17 2006/08/12 00:26:20 dillon Exp $ */ /* @@ -94,7 +94,7 @@ cttyopen(struct dev_open_args *ap) error = VOP_OPEN(ttyvp, FREAD|FWRITE, ap->a_cred, NULL); if (error) vclrflags(ttyvp, VCTTYISOPEN); - VOP_UNLOCK(ttyvp, 0); + vn_unlock(ttyvp); } } else { error = ENXIO; @@ -128,7 +128,7 @@ cttyclose(struct dev_close_args *ap) error = vn_lock(ttyvp, LK_EXCLUSIVE | LK_RETRY); if (error == 0) { error = VOP_CLOSE(ttyvp, FREAD|FWRITE); - VOP_UNLOCK(ttyvp, 0); + vn_unlock(ttyvp); } } else { error = 0; @@ -140,7 +140,7 @@ cttyclose(struct dev_close_args *ap) * Read from the controlling terminal (/dev/tty). The tty is refed as * of the cttyvp(), but the ref can get ripped out from under us if * the controlling terminal is revoked while we are blocked on the lock, - * so use vget() instead of VOP_LOCK. + * so use vget() instead of vn_lock(). */ static int cttyread(struct dev_read_args *ap) @@ -164,7 +164,7 @@ cttyread(struct dev_read_args *ap) * Read from the controlling terminal (/dev/tty). The tty is refed as * of the cttyvp(), but the ref can get ripped out from under us if * the controlling terminal is revoked while we are blocked on the lock, - * so use vget() instead of VOP_LOCK. + * so use vget() instead of vn_lock(). */ static int cttywrite(struct dev_write_args *ap) diff --git a/sys/kern/uipc_syscalls.c b/sys/kern/uipc_syscalls.c index 9d7791d902..25dc0adaf0 100644 --- a/sys/kern/uipc_syscalls.c +++ b/sys/kern/uipc_syscalls.c @@ -35,7 +35,7 @@ * * @(#)uipc_syscalls.c 8.4 (Berkeley) 2/21/94 * $FreeBSD: src/sys/kern/uipc_syscalls.c,v 1.65.2.17 2003/04/04 17:11:16 tegge Exp $ - * $DragonFly: src/sys/kern/uipc_syscalls.c,v 1.72 2006/08/08 03:52:40 dillon Exp $ + * $DragonFly: src/sys/kern/uipc_syscalls.c,v 1.73 2006/08/12 00:26:20 dillon Exp $ */ #include "opt_ktrace.h" @@ -1616,7 +1616,7 @@ retry_lookup: error = VOP_READ(vp, &auio, IO_VMIO | ((MAXBSIZE / bsize) << 16), p->p_ucred); - VOP_UNLOCK(vp, 0); + vn_unlock(vp); vm_page_flag_clear(pg, PG_ZERO); vm_page_io_finish(pg); if (error) { diff --git a/sys/kern/uipc_usrreq.c b/sys/kern/uipc_usrreq.c index 37ac68c289..32f08a5a0a 100644 --- a/sys/kern/uipc_usrreq.c +++ b/sys/kern/uipc_usrreq.c @@ -32,7 +32,7 @@ * * From: @(#)uipc_usrreq.c 8.3 (Berkeley) 1/4/94 * $FreeBSD: src/sys/kern/uipc_usrreq.c,v 1.54.2.10 2003/03/04 17:28:09 nectar Exp $ - * $DragonFly: src/sys/kern/uipc_usrreq.c,v 1.26 2006/05/26 02:26:01 dillon Exp $ + * $DragonFly: src/sys/kern/uipc_usrreq.c,v 1.27 2006/08/12 00:26:20 dillon Exp $ */ #include @@ -619,7 +619,7 @@ unp_bind(struct unpcb *unp, struct sockaddr *nam, struct thread *td) vp->v_socket = unp->unp_socket; unp->unp_vnode = vp; unp->unp_addr = (struct sockaddr_un *)dup_sockaddr(nam); - VOP_UNLOCK(vp, 0); + vn_unlock(vp); } done: nlookup_done(&nd); diff --git a/sys/kern/vfs_cache.c b/sys/kern/vfs_cache.c index 1f99f1c234..8fbf6bc2b8 100644 --- a/sys/kern/vfs_cache.c +++ b/sys/kern/vfs_cache.c @@ -67,7 +67,7 @@ * * @(#)vfs_cache.c 8.5 (Berkeley) 3/22/95 * $FreeBSD: src/sys/kern/vfs_cache.c,v 1.42.2.6 2001/10/05 20:07:03 dillon Exp $ - * $DragonFly: src/sys/kern/vfs_cache.c,v 1.73 2006/08/09 22:47:32 dillon Exp $ + * $DragonFly: src/sys/kern/vfs_cache.c,v 1.74 2006/08/12 00:26:20 dillon Exp $ */ #include @@ -1091,7 +1091,7 @@ force: printf("lookupdotdot failed %d dvp %p\n", error, dvp); break; } - VOP_UNLOCK(pvp, 0); + vn_unlock(pvp); /* * Reuse makeit as a recursion depth counter. @@ -1153,7 +1153,7 @@ cache_fromdvp_try(struct vnode *dvp, struct ucred *cred, vrele(dvp); return (error); } - VOP_UNLOCK(pvp, 0); + vn_unlock(pvp); if ((ncp = TAILQ_FIRST(&pvp->v_namecache)) != NULL) { cache_hold(ncp); vrele(pvp); @@ -1283,7 +1283,7 @@ again: } nlc.nlc_nameptr = den->d_name; nlc.nlc_namelen = den->d_namlen; - VOP_UNLOCK(pvp, 0); + vn_unlock(pvp); rncp = cache_nlookup(ncp, &nlc); KKASSERT(rncp != NULL); break; diff --git a/sys/kern/vfs_default.c b/sys/kern/vfs_default.c index c7cb029882..d0161f68eb 100644 --- a/sys/kern/vfs_default.c +++ b/sys/kern/vfs_default.c @@ -37,7 +37,7 @@ * * * $FreeBSD: src/sys/kern/vfs_default.c,v 1.28.2.7 2003/01/10 18:23:26 bde Exp $ - * $DragonFly: src/sys/kern/vfs_default.c,v 1.42 2006/07/19 06:08:06 dillon Exp $ + * $DragonFly: src/sys/kern/vfs_default.c,v 1.43 2006/08/12 00:26:20 dillon Exp $ */ #include @@ -79,8 +79,6 @@ struct vop_ops default_vnode_vops = { .vop_advlock = (void *)vop_einval, .vop_fsync = (void *)vop_null, .vop_ioctl = (void *)vop_enotty, - .vop_islocked = vop_stdislocked, - .vop_lock = vop_stdlock, .vop_mmap = (void *)vop_einval, .vop_old_lookup = vop_nolookup, .vop_open = vop_stdopen, @@ -91,7 +89,6 @@ struct vop_ops default_vnode_vops = { .vop_reallocblks = (void *)vop_eopnotsupp, .vop_revoke = vop_stdrevoke, .vop_strategy = vop_nostrategy, - .vop_unlock = vop_stdunlock, .vop_getacl = (void *)vop_eopnotsupp, .vop_setacl = (void *)vop_eopnotsupp, .vop_aclcheck = (void *)vop_eopnotsupp, @@ -222,9 +219,9 @@ vop_compat_nresolve(struct vop_nresolve_args *ap) */ error = vop_old_lookup(ap->a_head.a_ops, dvp, &vp, &cnp); if (error == 0) - VOP_UNLOCK(vp, 0); + vn_unlock(vp); if ((cnp.cn_flags & CNP_PDIRUNLOCK) == 0) - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); if ((ncp->nc_flag & NCF_UNRESOLVED) == 0) { /* was resolved by another process while we were unlocked */ if (error == 0) @@ -294,7 +291,7 @@ vop_compat_nlookupdotdot(struct vop_nlookupdotdot_args *ap) */ error = vop_old_lookup(ap->a_head.a_ops, ap->a_dvp, ap->a_vpp, &cnp); if (error == 0) - VOP_UNLOCK(*ap->a_vpp, 0); + vn_unlock(*ap->a_vpp); if (cnp.cn_flags & CNP_PDIRUNLOCK) vrele(ap->a_dvp); else @@ -379,7 +376,7 @@ vop_compat_ncreate(struct vop_ncreate_args *ap) KKASSERT(*ap->a_vpp == NULL); } if ((cnp.cn_flags & CNP_PDIRUNLOCK) == 0) - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); vrele(dvp); return (error); } @@ -461,7 +458,7 @@ vop_compat_nmkdir(struct vop_nmkdir_args *ap) KKASSERT(*ap->a_vpp == NULL); } if ((cnp.cn_flags & CNP_PDIRUNLOCK) == 0) - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); vrele(dvp); return (error); } @@ -543,7 +540,7 @@ vop_compat_nmknod(struct vop_nmknod_args *ap) KKASSERT(*ap->a_vpp == NULL); } if ((cnp.cn_flags & CNP_PDIRUNLOCK) == 0) - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); vrele(dvp); return (error); } @@ -622,7 +619,7 @@ vop_compat_nlink(struct vop_nlink_args *ap) } } if ((cnp.cn_flags & CNP_PDIRUNLOCK) == 0) - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); vrele(dvp); return (error); } @@ -697,7 +694,7 @@ vop_compat_nsymlink(struct vop_nsymlink_args *ap) KKASSERT(vp == NULL); } if ((cnp.cn_flags & CNP_PDIRUNLOCK) == 0) - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); vrele(dvp); return (error); } @@ -792,7 +789,7 @@ vop_compat_nwhiteout(struct vop_nwhiteout_args *ap) break; } if ((cnp.cn_flags & CNP_PDIRUNLOCK) == 0) - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); vrele(dvp); return (error); } @@ -867,7 +864,7 @@ vop_compat_nremove(struct vop_nremove_args *ap) vput(vp); } if ((cnp.cn_flags & CNP_PDIRUNLOCK) == 0) - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); vrele(dvp); return (error); } @@ -950,7 +947,7 @@ vop_compat_nrmdir(struct vop_nrmdir_args *ap) vput(vp); } if ((cnp.cn_flags & CNP_PDIRUNLOCK) == 0) - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); vrele(dvp); return (error); } @@ -1024,13 +1021,13 @@ vop_compat_nrename(struct vop_nrename_args *ap) } if ((fcnp.cn_flags & CNP_PDIRUNLOCK) == 0) { fcnp.cn_flags |= CNP_PDIRUNLOCK; - VOP_UNLOCK(fdvp, 0); + vn_unlock(fdvp); } if (error) { vrele(fdvp); return (error); } - VOP_UNLOCK(fvp, 0); + vn_unlock(fvp); /* * fdvp and fvp are now referenced and unlocked. @@ -1237,51 +1234,6 @@ vop_stdclose(struct vop_close_args *ap) return (0); } -/* - * Standard lock. The lock is recursive-capable only if the lock was - * initialized with LK_CANRECURSE or that flag is passed in a_flags. - */ -int -vop_stdlock(ap) - struct vop_lock_args /* { - struct vnode *a_vp; - int a_flags; - } */ *ap; -{ - int error; - -#ifndef DEBUG_LOCKS - error = lockmgr(&ap->a_vp->v_lock, ap->a_flags); -#else - error = debuglockmgr(&ap->a_vp->v_lock, ap->a_flags, - "vop_stdlock", ap->a_vp->filename, ap->a_vp->line); -#endif - return(error); -} - -int -vop_stdunlock(ap) - struct vop_unlock_args /* { - struct vnode *a_vp; - int a_flags; - } */ *ap; -{ - int error; - - error = lockmgr(&ap->a_vp->v_lock, ap->a_flags | LK_RELEASE); - return(error); -} - -int -vop_stdislocked(ap) - struct vop_islocked_args /* { - struct vnode *a_vp; - struct thread *a_td; - } */ *ap; -{ - return (lockstatus(&ap->a_vp->v_lock, ap->a_td)); -} - /* * Return true for select/poll. */ diff --git a/sys/kern/vfs_lock.c b/sys/kern/vfs_lock.c index 6bc7b35b70..408652375f 100644 --- a/sys/kern/vfs_lock.c +++ b/sys/kern/vfs_lock.c @@ -31,7 +31,7 @@ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $DragonFly: src/sys/kern/vfs_lock.c,v 1.21 2006/08/11 01:54:59 dillon Exp $ + * $DragonFly: src/sys/kern/vfs_lock.c,v 1.22 2006/08/12 00:26:20 dillon Exp $ */ /* @@ -334,7 +334,7 @@ vget(struct vnode *vp, int flags) if ((error = vn_lock(vp, flags)) != 0) { vrele(vp); } else if (vp->v_flag & VRECLAIMED) { - VOP_UNLOCK(vp, 0); + vn_unlock(vp); vrele(vp); error = ENOENT; } else { @@ -351,7 +351,7 @@ vget(struct vnode *vp, int flags) void vput(struct vnode *vp) { - VOP_UNLOCK(vp, 0); + vn_unlock(vp); vrele(vp); } diff --git a/sys/kern/vfs_lookup.c b/sys/kern/vfs_lookup.c index d9df74a9d3..ca49a8ea03 100644 --- a/sys/kern/vfs_lookup.c +++ b/sys/kern/vfs_lookup.c @@ -37,7 +37,7 @@ * * @(#)vfs_lookup.c 8.4 (Berkeley) 2/16/94 * $FreeBSD: src/sys/kern/vfs_lookup.c,v 1.38.2.3 2001/08/31 19:36:49 dillon Exp $ - * $DragonFly: src/sys/kern/vfs_lookup.c,v 1.22 2006/05/05 21:15:09 dillon Exp $ + * $DragonFly: src/sys/kern/vfs_lookup.c,v 1.23 2006/08/12 00:26:20 dillon Exp $ */ #include "opt_ktrace.h" @@ -151,7 +151,7 @@ relookup(struct vnode *dvp, struct vnode **vpp, struct componentname *cnp) bad: if ((cnp->cn_flags & CNP_PDIRUNLOCK) == 0) { cnp->cn_flags |= CNP_PDIRUNLOCK; - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); } if (*vpp) { vput(*vpp); diff --git a/sys/kern/vfs_nlookup.c b/sys/kern/vfs_nlookup.c index f51f8d8dee..345492cd58 100644 --- a/sys/kern/vfs_nlookup.c +++ b/sys/kern/vfs_nlookup.c @@ -31,7 +31,7 @@ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $DragonFly: src/sys/kern/vfs_nlookup.c,v 1.17 2006/06/01 06:10:50 dillon Exp $ + * $DragonFly: src/sys/kern/vfs_nlookup.c,v 1.18 2006/08/12 00:26:20 dillon Exp $ */ /* * nlookup() is the 'new' namei interface. Rather then return directory and @@ -224,7 +224,7 @@ nlookup_done(struct nlookupdata *nd) } if (nd->nl_open_vp) { if (nd->nl_flags & NLC_LOCKVP) { - VOP_UNLOCK(nd->nl_open_vp, 0); + vn_unlock(nd->nl_open_vp); nd->nl_flags &= ~NLC_LOCKVP; } vn_close(nd->nl_open_vp, nd->nl_vp_fmode); diff --git a/sys/kern/vfs_subr.c b/sys/kern/vfs_subr.c index 0740d2dfee..2a19d08de2 100644 --- a/sys/kern/vfs_subr.c +++ b/sys/kern/vfs_subr.c @@ -37,7 +37,7 @@ * * @(#)vfs_subr.c 8.31 (Berkeley) 5/26/95 * $FreeBSD: src/sys/kern/vfs_subr.c,v 1.249.2.30 2003/04/04 20:35:57 tegge Exp $ - * $DragonFly: src/sys/kern/vfs_subr.c,v 1.93 2006/08/11 01:54:59 dillon Exp $ + * $DragonFly: src/sys/kern/vfs_subr.c,v 1.94 2006/08/12 00:26:20 dillon Exp $ */ /* @@ -1367,7 +1367,7 @@ retry: vp->v_usecount--; } else { if (object->flags & OBJ_DEAD) { - VOP_UNLOCK(vp, 0); + vn_unlock(vp); tsleep(object, 0, "vodead", 0); vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); goto retry; @@ -1440,7 +1440,7 @@ db_show_locked_vnodes(struct mount *mp, void *data __unused) struct vnode *vp; TAILQ_FOREACH(vp, &mp->mnt_nvnodelist, v_nmntvnodes) { - if (VOP_ISLOCKED(vp, NULL)) + if (vn_islocked(vp)) vprint((char *)0, vp); } return(0); @@ -1875,7 +1875,7 @@ vfs_msync_scan1(struct mount *mp, struct vnode *vp, void *data) return(0); /* call scan2 */ if ((mp->mnt_flag & MNT_RDONLY) == 0 && (vp->v_flag & VOBJDIRTY) && - (flags == MNT_WAIT || VOP_ISLOCKED(vp, NULL) == 0)) { + (flags == MNT_WAIT || vn_islocked(vp) == 0)) { return(0); /* call scan2 */ } } @@ -2043,28 +2043,6 @@ vn_isdisk(struct vnode *vp, int *errp) return (1); } -#ifdef DEBUG_VFS_LOCKS - -void -assert_vop_locked(struct vnode *vp, const char *str) -{ - if (vp && !VOP_ISLOCKED(vp, NULL)) { - panic("%s: %p is not locked shared but should be", str, vp); - } -} - -void -assert_vop_unlocked(struct vnode *vp, const char *str) -{ - if (vp) { - if (VOP_ISLOCKED(vp, curthread) == LK_EXCLUSIVE) { - panic("%s: %p is locked but should not be", str, vp); - } - } -} - -#endif - int vn_get_namelen(struct vnode *vp, int *namelen) { diff --git a/sys/kern/vfs_sync.c b/sys/kern/vfs_sync.c index a637a5d003..18bb9ccd4a 100644 --- a/sys/kern/vfs_sync.c +++ b/sys/kern/vfs_sync.c @@ -37,7 +37,7 @@ * * @(#)vfs_subr.c 8.31 (Berkeley) 5/26/95 * $FreeBSD: src/sys/kern/vfs_subr.c,v 1.249.2.30 2003/04/04 20:35:57 tegge Exp $ - * $DragonFly: src/sys/kern/vfs_sync.c,v 1.12 2006/07/28 02:17:40 dillon Exp $ + * $DragonFly: src/sys/kern/vfs_sync.c,v 1.13 2006/08/12 00:26:20 dillon Exp $ */ /* @@ -308,10 +308,7 @@ static struct vop_ops sync_vnode_vops = { .vop_fsync = sync_fsync, .vop_inactive = sync_inactive, .vop_reclaim = sync_reclaim, - .vop_lock = vop_stdlock, - .vop_unlock = vop_stdunlock, .vop_print = sync_print, - .vop_islocked = vop_stdislocked }; static struct vop_ops *sync_vnode_vops_p = &sync_vnode_vops; diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index 70bf6300d9..9b86e84d2b 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -37,7 +37,7 @@ * * @(#)vfs_syscalls.c 8.13 (Berkeley) 4/15/94 * $FreeBSD: src/sys/kern/vfs_syscalls.c,v 1.151.2.18 2003/04/04 20:35:58 tegge Exp $ - * $DragonFly: src/sys/kern/vfs_syscalls.c,v 1.99 2006/08/11 01:54:59 dillon Exp $ + * $DragonFly: src/sys/kern/vfs_syscalls.c,v 1.100 2006/08/12 00:26:20 dillon Exp $ */ #include @@ -216,7 +216,7 @@ sys_mount(struct mount_args *uap) vp->v_flag |= VMOUNT; mp->mnt_flag |= uap->flags & (MNT_RELOAD | MNT_FORCE | MNT_UPDATE); - VOP_UNLOCK(vp, 0); + vn_unlock(vp); goto update; } /* @@ -306,7 +306,7 @@ sys_mount(struct mount_args *uap) mp->mnt_vnodecovered = vp; mp->mnt_stat.f_owner = cred->cr_uid; mp->mnt_iosize_max = DFLTPHYS; - VOP_UNLOCK(vp, 0); + vn_unlock(vp); update: /* * Set the mount level flags. @@ -370,7 +370,7 @@ update: mountlist_insert(mp, MNTINS_LAST); checkdirs(vp, mp->mnt_ncp); cache_unlock(mp->mnt_ncp); /* leave ref intact */ - VOP_UNLOCK(vp, 0); + vn_unlock(vp); error = vfs_allocate_syncvnode(mp); vfs_unbusy(mp); if ((error = VFS_START(mp, 0)) != 0) @@ -1114,7 +1114,7 @@ sys_fchdir(struct fchdir_args *uap) if (error == 0) { ovp = fdp->fd_cdir; oncp = fdp->fd_ncdir; - VOP_UNLOCK(vp, 0); /* leave ref intact */ + vn_unlock(vp); /* leave ref intact */ fdp->fd_cdir = vp; fdp->fd_ncdir = ncp; cache_drop(oncp); @@ -1145,7 +1145,7 @@ kern_chdir(struct nlookupdata *nd) return (error); error = checkvp_chdir(vp, td); - VOP_UNLOCK(vp, 0); + vn_unlock(vp); if (error == 0) { ovp = fdp->fd_cdir; oncp = fdp->fd_ncdir; @@ -1258,7 +1258,7 @@ kern_chroot(struct namecache *ncp) * associate it with rdir/jdir. */ error = checkvp_chdir(vp, td); - VOP_UNLOCK(vp, 0); /* leave reference intact */ + vn_unlock(vp); /* leave reference intact */ if (error == 0) { vrele(fdp->fd_rdir); fdp->fd_rdir = vp; /* reference inherited by fd_rdir */ @@ -2613,7 +2613,7 @@ kern_ftruncate(int fd, off_t length) vattr.va_size = length; error = VOP_SETATTR(vp, &vattr, fp->f_cred); } - VOP_UNLOCK(vp, 0); + vn_unlock(vp); done: fdrop(fp); return (error); @@ -2661,7 +2661,7 @@ sys_fsync(struct fsync_args *uap) bioops.io_fsync) { error = (*bioops.io_fsync)(vp); } - VOP_UNLOCK(vp, 0); + vn_unlock(vp); fdrop(fp); return (error); } @@ -2956,7 +2956,7 @@ unionread: loff = auio.uio_offset = fp->f_offset; error = VOP_READDIR(vp, &auio, fp->f_cred, &eofflag, NULL, NULL); fp->f_offset = auio.uio_offset; - VOP_UNLOCK(vp, 0); + vn_unlock(vp); if (error) goto done; if (count == auio.uio_resid) { @@ -3206,7 +3206,7 @@ sys_fhopen(struct fhopen_args *uap) goto bad; } if (fmode & O_TRUNC) { - VOP_UNLOCK(vp, 0); /* XXX */ + vn_unlock(vp); /* XXX */ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); /* XXX */ VATTR_NULL(vap); vap->va_size = 0; @@ -3263,7 +3263,7 @@ sys_fhopen(struct fhopen_args *uap) type = 0; else type = F_WAIT; - VOP_UNLOCK(vp, 0); + vn_unlock(vp); if ((error = VOP_ADVLOCK(vp, (caddr_t)fp, F_SETLK, &lf, type)) != 0) { /* * release our private reference. diff --git a/sys/kern/vfs_vnops.c b/sys/kern/vfs_vnops.c index 4145d0ab97..be87accfaa 100644 --- a/sys/kern/vfs_vnops.c +++ b/sys/kern/vfs_vnops.c @@ -37,7 +37,7 @@ * * @(#)vfs_vnops.c 8.2 (Berkeley) 1/21/94 * $FreeBSD: src/sys/kern/vfs_vnops.c,v 1.87.2.13 2002/12/29 18:19:53 dillon Exp $ - * $DragonFly: src/sys/kern/vfs_vnops.c,v 1.43 2006/08/08 03:52:40 dillon Exp $ + * $DragonFly: src/sys/kern/vfs_vnops.c,v 1.44 2006/08/12 00:26:20 dillon Exp $ */ #include @@ -185,7 +185,6 @@ again: if (error) return (error); fmode &= ~O_TRUNC; - ASSERT_VOP_LOCKED(vp, "create"); /* locked vnode is returned */ } else { if (fmode & O_EXCL) { @@ -263,7 +262,7 @@ again: } } if (fmode & O_TRUNC) { - VOP_UNLOCK(vp, 0); /* XXX */ + vn_unlock(vp); /* XXX */ vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); /* XXX */ VATTR_NULL(vap); vap->va_size = 0; @@ -326,7 +325,7 @@ again: nd->nl_open_vp = vp; nd->nl_vp_fmode = fmode; if ((nd->nl_flags & NLC_LOCKVP) == 0) - VOP_UNLOCK(vp, 0); + vn_unlock(vp); } else { vput(vp); } @@ -366,7 +365,7 @@ vn_close(struct vnode *vp, int flags) if ((error = vn_lock(vp, LK_EXCLUSIVE | LK_RETRY)) == 0) { error = VOP_CLOSE(vp, flags); - VOP_UNLOCK(vp, 0); + vn_unlock(vp); } vrele(vp); return (error); @@ -439,7 +438,7 @@ vn_rdwr(enum uio_rw rw, struct vnode *vp, caddr_t base, int len, if (auio.uio_resid && error == 0) error = EIO; if ((ioflg & IO_NODELOCKED) == 0) - VOP_UNLOCK(vp, 0); + vn_unlock(vp); return (error); } @@ -526,7 +525,7 @@ vn_read(struct file *fp, struct uio *uio, struct ucred *cred, int flags) if ((flags & O_FOFFSET) == 0) fp->f_offset = uio->uio_offset; fp->f_nextoff = uio->uio_offset; - VOP_UNLOCK(vp, 0); + vn_unlock(vp); rel_mplock(); return (error); } @@ -653,7 +652,7 @@ vn_write(struct file *fp, struct uio *uio, struct ucred *cred, int flags) if ((flags & O_FOFFSET) == 0) fp->f_offset = uio->uio_offset; fp->f_nextoff = uio->uio_offset; - VOP_UNLOCK(vp, 0); + vn_unlock(vp); rel_mplock(); return (error); } @@ -992,8 +991,11 @@ debug_vn_lock(struct vnode *vp, int flags, const char *filename, int line) #ifdef DEBUG_LOCKS vp->filename = filename; vp->line = line; + error = debuglockmgr(&vp->v_lock, flags, + "vn_lock", filename, line); +#else + error = lockmgr(&vp->v_lock, flags); #endif - error = VOP_LOCK(vp, flags); if (error == 0) break; } while (flags & LK_RETRY); @@ -1004,12 +1006,24 @@ debug_vn_lock(struct vnode *vp, int flags, const char *filename, int line) * refs go away. So we can just check the flag. */ if (error == 0 && (vp->v_flag & VRECLAIMED)) { - VOP_UNLOCK(vp, 0); + lockmgr(&vp->v_lock, LK_RELEASE); error = ENOENT; } return (error); } +void +vn_unlock(struct vnode *vp) +{ + lockmgr(&vp->v_lock, LK_RELEASE); +} + +int +vn_islocked(struct vnode *vp) +{ + return (lockstatus(&vp->v_lock, curthread)); +} + /* * MPALMOSTSAFE - acquires mplock */ diff --git a/sys/kern/vfs_vopops.c b/sys/kern/vfs_vopops.c index 88effa3b01..f7912fbbb6 100644 --- a/sys/kern/vfs_vopops.c +++ b/sys/kern/vfs_vopops.c @@ -32,7 +32,7 @@ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $DragonFly: src/sys/kern/vfs_vopops.c,v 1.31 2006/07/28 02:17:40 dillon Exp $ + * $DragonFly: src/sys/kern/vfs_vopops.c,v 1.32 2006/08/12 00:26:20 dillon Exp $ */ #include @@ -83,7 +83,6 @@ #name } VNODEOP_DESC_INIT(default); -VNODEOP_DESC_INIT(islocked); VNODEOP_DESC_INIT(old_lookup); VNODEOP_DESC_INIT(old_create); VNODEOP_DESC_INIT(old_whiteout); @@ -112,8 +111,6 @@ VNODEOP_DESC_INIT(readdir); VNODEOP_DESC_INIT(readlink); VNODEOP_DESC_INIT(inactive); VNODEOP_DESC_INIT(reclaim); -VNODEOP_DESC_INIT(lock); -VNODEOP_DESC_INIT(unlock); VNODEOP_DESC_INIT(bmap); VNODEOP_DESC_INIT(strategy); VNODEOP_DESC_INIT(print); @@ -158,21 +155,6 @@ VNODEOP_DESC_INIT(nrename); * the code in vfs_default.c is allowed to call those ops. */ -int -vop_islocked(struct vop_ops *ops, struct vnode *vp, struct thread *td) -{ - struct vop_islocked_args ap; - int error; - - ap.a_head.a_desc = &vop_islocked_desc; - ap.a_head.a_ops = ops; - ap.a_vp = vp; - ap.a_td = td; - - DO_OPS(ops, error, &ap, vop_islocked); - return(error); -} - int vop_old_lookup(struct vop_ops *ops, struct vnode *dvp, struct vnode **vpp, struct componentname *cnp) @@ -643,36 +625,6 @@ vop_reclaim(struct vop_ops *ops, struct vnode *vp) return(error); } -int -vop_lock(struct vop_ops *ops, struct vnode *vp, int flags) -{ - struct vop_lock_args ap; - int error; - - ap.a_head.a_desc = &vop_lock_desc; - ap.a_head.a_ops = ops; - ap.a_vp = vp; - ap.a_flags = flags; - - DO_OPS(ops, error, &ap, vop_lock); - return(error); -} - -int -vop_unlock(struct vop_ops *ops, struct vnode *vp, int flags) -{ - struct vop_unlock_args ap; - int error; - - ap.a_head.a_desc = &vop_unlock_desc; - ap.a_head.a_ops = ops; - ap.a_vp = vp; - ap.a_flags = flags; - - DO_OPS(ops, error, &ap, vop_unlock); - return(error); -} - int vop_bmap(struct vop_ops *ops, struct vnode *vp, off_t loffset, struct vnode **vpp, off_t *doffsetp, int *runp, int *runb) @@ -1320,15 +1272,6 @@ vop_journal_operate_ap(struct vop_generic_args *ap) return (error); } -int -vop_islocked_ap(struct vop_islocked_args *ap) -{ - int error; - - DO_OPS(ap->a_head.a_ops, error, ap, vop_islocked); - return(error); -} - int vop_open_ap(struct vop_open_args *ap) { @@ -1482,24 +1425,6 @@ vop_reclaim_ap(struct vop_reclaim_args *ap) return(error); } -int -vop_lock_ap(struct vop_lock_args *ap) -{ - int error; - - DO_OPS(ap->a_head.a_ops, error, ap, vop_lock); - return(error); -} - -int -vop_unlock_ap(struct vop_unlock_args *ap) -{ - int error; - - DO_OPS(ap->a_head.a_ops, error, ap, vop_unlock); - return(error); -} - int vop_bmap_ap(struct vop_bmap_args *ap) { diff --git a/sys/sys/vfsops.h b/sys/sys/vfsops.h index b40a8018e4..a50ca32428 100644 --- a/sys/sys/vfsops.h +++ b/sys/sys/vfsops.h @@ -31,7 +31,7 @@ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $DragonFly: src/sys/sys/vfsops.h,v 1.25 2006/07/28 02:17:41 dillon Exp $ + * $DragonFly: src/sys/sys/vfsops.h,v 1.26 2006/08/12 00:26:20 dillon Exp $ */ /* @@ -88,12 +88,6 @@ struct vop_generic_args { int a_reserved[4]; }; -struct vop_islocked_args { - struct vop_generic_args a_head; - struct vnode *a_vp; - struct thread *a_td; -}; - struct vop_old_lookup_args { struct vop_generic_args a_head; struct vnode *a_dvp; @@ -290,18 +284,6 @@ struct vop_reclaim_args { struct vnode *a_vp; }; -struct vop_lock_args { - struct vop_generic_args a_head; - struct vnode *a_vp; - int a_flags; -}; - -struct vop_unlock_args { - struct vop_generic_args a_head; - struct vnode *a_vp; - int a_flags; -}; - struct vop_bmap_args { struct vop_generic_args a_head; struct vnode *a_vp; @@ -531,7 +513,7 @@ struct vop_ops { #define vop_ops_first_field vop_default int (*vop_default)(struct vop_generic_args *); - int (*vop_islocked)(struct vop_islocked_args *); + int (*vop_unused11)(void *); int (*vop_old_lookup)(struct vop_old_lookup_args *); int (*vop_unused03)(void *); int (*vop_old_create)(struct vop_old_create_args *); @@ -561,8 +543,8 @@ struct vop_ops { int (*vop_readlink)(struct vop_readlink_args *); int (*vop_inactive)(struct vop_inactive_args *); int (*vop_reclaim)(struct vop_reclaim_args *); - int (*vop_lock)(struct vop_lock_args *); - int (*vop_unlock)(struct vop_unlock_args *); + int (*vop_unused09)(void *); + int (*vop_unused10)(void *); int (*vop_bmap)(struct vop_bmap_args *); int (*vop_strategy)(struct vop_strategy_args *); int (*vop_print)(struct vop_print_args *); @@ -612,7 +594,6 @@ struct vop_ops { union vop_args_union { struct vop_generic_args vu_head; struct vop_generic_args vu_default; - struct vop_islocked_args vu_islocked; struct vop_old_lookup_args vu_lookup; struct vop_old_create_args vu_create; struct vop_old_whiteout_args vu_whiteout; @@ -640,8 +621,6 @@ union vop_args_union { struct vop_readlink_args vu_readlink; struct vop_inactive_args vu_inactive; struct vop_reclaim_args vu_reclaim; - struct vop_lock_args vu_lock; - struct vop_unlock_args vu_unlock; struct vop_bmap_args vu_bmap; struct vop_strategy_args vu_strategy; struct vop_print_args vu_print; @@ -682,7 +661,6 @@ union vop_args_union { * routine directly in order to allow DragonFly to properly wrap the operation * in a message and dispatch it to the correct thread. */ -int vop_islocked(struct vop_ops *ops, struct vnode *vp, struct thread *td); int vop_old_lookup(struct vop_ops *ops, struct vnode *dvp, struct vnode **vpp, struct componentname *cnp); int vop_old_create(struct vop_ops *ops, struct vnode *dvp, @@ -737,8 +715,6 @@ int vop_readlink(struct vop_ops *ops, struct vnode *vp, struct uio *uio, struct ucred *cred); int vop_inactive(struct vop_ops *ops, struct vnode *vp); int vop_reclaim(struct vop_ops *ops, struct vnode *vp); -int vop_lock(struct vop_ops *ops, struct vnode *vp, int flags); -int vop_unlock(struct vop_ops *ops, struct vnode *vp, int flags); int vop_bmap(struct vop_ops *ops, struct vnode *vp, off_t loffset, struct vnode **vpp, off_t *doffsetp, int *runp, int *runb); int vop_strategy(struct vop_ops *ops, struct vnode *vp, struct bio *bio); @@ -806,7 +782,6 @@ int vop_nrename(struct vop_ops *ops, struct namecache *fncp, int vop_vnoperate_ap(struct vop_generic_args *ap); int vop_cache_operate_ap(struct vop_generic_args *ap); int vop_journal_operate_ap(struct vop_generic_args *ap); -int vop_islocked_ap(struct vop_islocked_args *ap); int vop_old_lookup_ap(struct vop_old_lookup_args *ap); int vop_old_create_ap(struct vop_old_create_args *ap); int vop_old_whiteout_ap(struct vop_old_whiteout_args *ap); @@ -834,8 +809,6 @@ int vop_readdir_ap(struct vop_readdir_args *ap); int vop_readlink_ap(struct vop_readlink_args *ap); int vop_inactive_ap(struct vop_inactive_args *ap); int vop_reclaim_ap(struct vop_reclaim_args *ap); -int vop_lock_ap(struct vop_lock_args *ap); -int vop_unlock_ap(struct vop_unlock_args *ap); int vop_bmap_ap(struct vop_bmap_args *ap); int vop_strategy_ap(struct vop_strategy_args *ap); int vop_print_ap(struct vop_print_args *ap); @@ -871,7 +844,6 @@ int vop_nrename_ap(struct vop_nrename_args *ap); * into a vop_ops operations vector. */ extern struct syslink_desc vop_default_desc; -extern struct syslink_desc vop_islocked_desc; extern struct syslink_desc vop_old_lookup_desc; extern struct syslink_desc vop_old_create_desc; extern struct syslink_desc vop_old_whiteout_desc; @@ -899,8 +871,6 @@ extern struct syslink_desc vop_readdir_desc; extern struct syslink_desc vop_readlink_desc; extern struct syslink_desc vop_inactive_desc; extern struct syslink_desc vop_reclaim_desc; -extern struct syslink_desc vop_lock_desc; -extern struct syslink_desc vop_unlock_desc; extern struct syslink_desc vop_bmap_desc; extern struct syslink_desc vop_strategy_desc; extern struct syslink_desc vop_print_desc; @@ -936,8 +906,6 @@ extern struct syslink_desc vop_nrename_desc; * VOP_*() convenience macros extract the operations vector and make the * vop_*() call. */ -#define VOP_ISLOCKED(vp, td) \ - vop_islocked(*(vp)->v_ops, vp, td) #define VOP_OPEN(vp, mode, cred, fp) \ vop_open(*(vp)->v_ops, vp, mode, cred, fp) #define VOP_CLOSE(vp, fflag) \ @@ -972,10 +940,6 @@ extern struct syslink_desc vop_nrename_desc; vop_inactive(*(vp)->v_ops, vp) #define VOP_RECLAIM(vp) \ vop_reclaim(*(vp)->v_ops, vp) -#define VOP_LOCK(vp, flags) \ - vop_lock(*(vp)->v_ops, vp, flags) -#define VOP_UNLOCK(vp, flags) \ - vop_unlock(*(vp)->v_ops, vp, flags) #define VOP_BMAP(vp, loff, vpp, doffp, runp, runb) \ vop_bmap(*(vp)->v_ops, vp, loff, vpp, doffp, runp, runb) #define VOP_PRINT(vp) \ diff --git a/sys/sys/vnode.h b/sys/sys/vnode.h index 600fc70d7b..141569fc9f 100644 --- a/sys/sys/vnode.h +++ b/sys/sys/vnode.h @@ -32,7 +32,7 @@ * * @(#)vnode.h 8.7 (Berkeley) 2/4/94 * $FreeBSD: src/sys/sys/vnode.h,v 1.111.2.19 2002/12/29 18:19:53 dillon Exp $ - * $DragonFly: src/sys/sys/vnode.h,v 1.64 2006/08/11 01:55:00 dillon Exp $ + * $DragonFly: src/sys/sys/vnode.h,v 1.65 2006/08/12 00:26:20 dillon Exp $ */ #ifndef _SYS_VNODE_H_ @@ -405,29 +405,6 @@ extern struct lwkt_token mntvnode_token; typedef int (*vnodeopv_entry_t)(struct vop_generic_args *); -#ifdef DEBUG_VFS_LOCKS -/* - * Macros to aid in tracing VFS locking problems. Not totally - * reliable since if the process sleeps between changing the lock - * state and checking it with the assert, some other process could - * change the state. They are good enough for debugging a single - * filesystem using a single-threaded test. I find that 'cvs co src' - * is a pretty good test. - */ - -#define ASSERT_VOP_LOCKED(vp, str) assert_vop_locked(vp, str) -#define ASSERT_VOP_UNLOCKED(vp, str) assert_vop_unlocked(vp, str); - -void assert_vop_locked(struct vnode *vp, const char *str); -void assert_vop_unlocked(struct vnode *vp, const char *str); - -#else - -#define ASSERT_VOP_LOCKED(vp, str) -#define ASSERT_VOP_UNLOCKED(vp, str) - -#endif /* DEBUG_VFS_LOCKS */ - /* * VOCALL calls an op given an ops vector. We break it out because BSD's * vclean changes the ops vector and then wants to call ops with the old @@ -504,6 +481,8 @@ void vn_strategy(struct vnode *vp, struct bio *bio); int vn_close (struct vnode *vp, int flags); int vn_isdisk (struct vnode *vp, int *errp); int vn_lock (struct vnode *vp, int flags); +int vn_islocked (struct vnode *vp); +void vn_unlock (struct vnode *vp); #ifdef DEBUG_LOCKS int debug_vn_lock (struct vnode *vp, int flags, const char *filename, int line); @@ -529,10 +508,6 @@ void vfs_timestamp (struct timespec *); int vn_writechk (struct vnode *vp); int vop_stdopen (struct vop_open_args *ap); int vop_stdclose (struct vop_close_args *ap); -int vop_stdislocked (struct vop_islocked_args *ap); -int vop_stdlock (struct vop_lock_args *ap); -int vop_stdrlock (struct vop_lock_args *ap); -int vop_stdunlock (struct vop_unlock_args *ap); int vop_nopoll (struct vop_poll_args *ap); int vop_stdpathconf (struct vop_pathconf_args *ap); int vop_stdpoll (struct vop_poll_args *ap); diff --git a/sys/vfs/coda/coda_vnops.c b/sys/vfs/coda/coda_vnops.c index d09684f8b3..3c9a189242 100644 --- a/sys/vfs/coda/coda_vnops.c +++ b/sys/vfs/coda/coda_vnops.c @@ -28,7 +28,7 @@ * * @(#) src/sys/coda/coda_vnops.c,v 1.1.1.1 1998/08/29 21:14:52 rvb Exp $ * $FreeBSD: src/sys/coda/coda_vnops.c,v 1.22.2.1 2001/06/29 16:26:22 shafeeq Exp $ - * $DragonFly: src/sys/vfs/coda/Attic/coda_vnops.c,v 1.42 2006/08/08 01:23:05 dillon Exp $ + * $DragonFly: src/sys/vfs/coda/Attic/coda_vnops.c,v 1.43 2006/08/12 00:26:20 dillon Exp $ * */ @@ -165,12 +165,9 @@ struct vop_ops coda_vnode_ops = { .vop_readlink = coda_readlink, .vop_inactive = coda_inactive, .vop_reclaim = coda_reclaim, - .vop_lock = vop_stdlock, - .vop_unlock = vop_stdunlock, .vop_bmap = coda_bmap, .vop_strategy = coda_strategy, .vop_print = (void *)coda_vop_error, - .vop_islocked = vop_stdislocked, .vop_pathconf = (void *)coda_vop_error, .vop_advlock = (void *)coda_vop_nop, .vop_poll = vop_stdpoll, @@ -277,7 +274,7 @@ coda_open(struct vop_open_args *ap) goto done; /* We get the vnode back locked. Needs unlocked */ - VOP_UNLOCK(vp, 0); + vn_unlock(vp); /* Keep a reference until the close comes in. */ vref(*vpp); @@ -448,7 +445,7 @@ coda_rdwr(struct vnode *vp, struct uio *uiop, enum uio_rw rw, int ioflag, * We get the vnode back locked in both Mach and * NetBSD. Needs unlocked */ - VOP_UNLOCK(cfvp, 0); + vn_unlock(cfvp); } else { opened_internally = 1; @@ -1035,15 +1032,13 @@ coda_lookup(struct vop_old_lookup_args *ap) */ if (!error || (error == EJUSTRETURN)) { if ((cnp->cn_flags & CNP_LOCKPARENT) == 0) { - if ((error = VOP_UNLOCK(dvp, 0))) { - return error; - } + vn_unlock(dvp); /* * The parent is unlocked. As long as there is a child, * lock it without bothering to check anything else. */ if (*ap->a_vpp) { - if ((error = VOP_LOCK(*ap->a_vpp, LK_EXCLUSIVE))) { + if ((error = vn_lock(*ap->a_vpp, LK_EXCLUSIVE))) { printf("coda_lookup: "); panic("unlocked parent but couldn't lock child"); } @@ -1052,7 +1047,7 @@ coda_lookup(struct vop_old_lookup_args *ap) /* The parent is locked, and may be the same as the child */ if (*ap->a_vpp && (*ap->a_vpp != dvp)) { /* Different, go ahead and lock it. */ - if ((error = VOP_LOCK(*ap->a_vpp, LK_EXCLUSIVE))) { + if ((error = vn_lock(*ap->a_vpp, LK_EXCLUSIVE))) { printf("coda_lookup: "); panic("unlocked parent but couldn't lock child"); } @@ -1138,7 +1133,7 @@ coda_create(struct vop_old_create_args *ap) } if (!error) { - if ((error = VOP_LOCK(*ap->a_vpp, LK_EXCLUSIVE))) { + if ((error = vn_lock(*ap->a_vpp, LK_EXCLUSIVE))) { printf("coda_create: "); panic("unlocked parent but couldn't lock child"); } diff --git a/sys/vfs/fdesc/fdesc_vnops.c b/sys/vfs/fdesc/fdesc_vnops.c index fff5e4e678..9df9063395 100644 --- a/sys/vfs/fdesc/fdesc_vnops.c +++ b/sys/vfs/fdesc/fdesc_vnops.c @@ -36,7 +36,7 @@ * @(#)fdesc_vnops.c 8.9 (Berkeley) 1/21/94 * * $FreeBSD: src/sys/miscfs/fdesc/fdesc_vnops.c,v 1.47.2.1 2001/10/22 22:49:26 chris Exp $ - * $DragonFly: src/sys/vfs/fdesc/fdesc_vnops.c,v 1.32 2006/07/28 02:17:41 dillon Exp $ + * $DragonFly: src/sys/vfs/fdesc/fdesc_vnops.c,v 1.33 2006/08/12 00:26:20 dillon Exp $ */ /* @@ -191,7 +191,7 @@ fdesc_lookup(struct vop_old_lookup_args *ap) goto bad; } - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); if (cnp->cn_namelen == 1 && *pname == '.') { *vpp = dvp; vref(dvp); diff --git a/sys/vfs/fifofs/fifo_vnops.c b/sys/vfs/fifofs/fifo_vnops.c index 660dfcbd58..6788ff3eb4 100644 --- a/sys/vfs/fifofs/fifo_vnops.c +++ b/sys/vfs/fifofs/fifo_vnops.c @@ -32,7 +32,7 @@ * * @(#)fifo_vnops.c 8.10 (Berkeley) 5/27/95 * $FreeBSD: src/sys/miscfs/fifofs/fifo_vnops.c,v 1.45.2.4 2003/04/22 10:11:24 bde Exp $ - * $DragonFly: src/sys/vfs/fifofs/fifo_vnops.c,v 1.32 2006/07/19 06:08:10 dillon Exp $ + * $DragonFly: src/sys/vfs/fifofs/fifo_vnops.c,v 1.33 2006/08/12 00:26:20 dillon Exp $ */ #include @@ -220,7 +220,7 @@ fifo_open(struct vop_open_args *ap) } if ((ap->a_mode & FREAD) && (ap->a_mode & O_NONBLOCK) == 0) { if (fip->fi_writers == 0) { - VOP_UNLOCK(vp, 0); + vn_unlock(vp); error = tsleep((caddr_t)&fip->fi_readers, PCATCH, "fifoor", 0); vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); @@ -241,7 +241,7 @@ fifo_open(struct vop_open_args *ap) } } else { if (fip->fi_readers == 0) { - VOP_UNLOCK(vp, 0); + vn_unlock(vp); error = tsleep((caddr_t)&fip->fi_writers, PCATCH, "fifoow", 0); vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); @@ -288,7 +288,7 @@ fifo_read(struct vop_read_args *ap) else flags = 0; startresid = uio->uio_resid; - VOP_UNLOCK(ap->a_vp, 0); + vn_unlock(ap->a_vp); error = soreceive(rso, (struct sockaddr **)0, uio, (struct mbuf **)0, (struct mbuf **)0, &flags); vn_lock(ap->a_vp, LK_EXCLUSIVE | LK_RETRY); @@ -318,7 +318,7 @@ fifo_write(struct vop_write_args *ap) flags = MSG_FNONBLOCKING; else flags = 0; - VOP_UNLOCK(ap->a_vp, 0); + vn_unlock(ap->a_vp); error = sosend(wso, (struct sockaddr *)0, ap->a_uio, 0, (struct mbuf *)0, flags, td); vn_lock(ap->a_vp, LK_EXCLUSIVE | LK_RETRY); diff --git a/sys/vfs/gnu/ext2fs/ext2_lookup.c b/sys/vfs/gnu/ext2fs/ext2_lookup.c index 09e5c11fd1..fd42278bad 100644 --- a/sys/vfs/gnu/ext2fs/ext2_lookup.c +++ b/sys/vfs/gnu/ext2fs/ext2_lookup.c @@ -5,7 +5,7 @@ * University of Utah, Department of Computer Science * * $FreeBSD: src/sys/gnu/ext2fs/ext2_lookup.c,v 1.21.2.3 2002/11/17 02:02:42 bde Exp $ - * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_lookup.c,v 1.23 2006/05/26 16:56:18 dillon Exp $ + * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_lookup.c,v 1.24 2006/08/12 00:26:20 dillon Exp $ */ /* * Copyright (c) 1989, 1993 @@ -524,7 +524,7 @@ searchloop: * information cannot be used. */ if (!lockparent) - VOP_UNLOCK(vdp, 0); + vn_unlock(vdp); return (EJUSTRETURN); } return (ENOENT); @@ -597,7 +597,7 @@ found: } *vpp = tdp; if (!lockparent) - VOP_UNLOCK(vdp, 0); + vn_unlock(vdp); return (0); } @@ -620,7 +620,7 @@ found: return (error); *vpp = tdp; if (!lockparent) - VOP_UNLOCK(vdp, 0); + vn_unlock(vdp); return (0); } @@ -645,7 +645,7 @@ found: */ pdp = vdp; if (flags & CNP_ISDOTDOT) { - VOP_UNLOCK(pdp, 0); /* race to get the inode */ + vn_unlock(pdp); /* race to get the inode */ if ((error = VFS_VGET(vdp->v_mount, dp->i_ino, &tdp)) != 0) { vn_lock(pdp, LK_EXCLUSIVE | LK_RETRY); return (error); @@ -662,7 +662,7 @@ found: if ((error = VFS_VGET(vdp->v_mount, dp->i_ino, &tdp)) != 0) return (error); if (!lockparent) - VOP_UNLOCK(pdp, 0); + vn_unlock(pdp); *vpp = tdp; } return (0); diff --git a/sys/vfs/gnu/ext2fs/ext2_quota.c b/sys/vfs/gnu/ext2fs/ext2_quota.c index 06cd89778f..ee3f379df3 100644 --- a/sys/vfs/gnu/ext2fs/ext2_quota.c +++ b/sys/vfs/gnu/ext2fs/ext2_quota.c @@ -35,7 +35,7 @@ * * @(#)ufs_quota.c 8.5 (Berkeley) 5/20/95 * $FreeBSD: src/sys/ufs/ufs/ufs_quota.c,v 1.27.2.3 2002/01/15 10:33:32 phk Exp $ - * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_quota.c,v 1.5 2006/05/06 18:48:52 dillon Exp $ + * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_quota.c,v 1.6 2006/08/12 00:26:20 dillon Exp $ */ #include @@ -396,7 +396,7 @@ ext2_quotaon(struct ucred *cred, struct mount *mp, int type, caddr_t fname) nd.nl_open_vp = NULL; nlookup_done(&nd); - VOP_UNLOCK(vp, 0); + vn_unlock(vp); if (*vpp != vp) ext2_quotaoff(mp, type); ump->um_qflags[type] |= QTF_OPENING; @@ -787,7 +787,7 @@ ext2_dqget(struct vnode *vp, u_long id, struct ext2mount *ump, int type, if (auio.uio_resid == sizeof(struct ext2_dqblk) && error == 0) bzero((caddr_t)&dq->dq_dqb, sizeof(struct ext2_dqblk)); if (vp != dqvp) - VOP_UNLOCK(dqvp, 0); + vn_unlock(dqvp); if (dq->dq_flags & DQ_WANT) wakeup((caddr_t)dq); dq->dq_flags = 0; @@ -872,7 +872,7 @@ ext2_dqsync(struct vnode *vp, struct ext2_dquot *dq) (void) tsleep((caddr_t)dq, 0, "dqsync", 0); if ((dq->dq_flags & DQ_MOD) == 0) { if (vp != dqvp) - VOP_UNLOCK(dqvp, 0); + vn_unlock(dqvp); return (0); } } @@ -893,7 +893,7 @@ ext2_dqsync(struct vnode *vp, struct ext2_dquot *dq) wakeup((caddr_t)dq); dq->dq_flags &= ~(DQ_MOD|DQ_LOCK|DQ_WANT); if (vp != dqvp) - VOP_UNLOCK(dqvp, 0); + vn_unlock(dqvp); return (error); } diff --git a/sys/vfs/gnu/ext2fs/ext2_vfsops.c b/sys/vfs/gnu/ext2fs/ext2_vfsops.c index 34e24fb40b..cb6cb490e8 100644 --- a/sys/vfs/gnu/ext2fs/ext2_vfsops.c +++ b/sys/vfs/gnu/ext2fs/ext2_vfsops.c @@ -38,7 +38,7 @@ * * @(#)ffs_vfsops.c 8.8 (Berkeley) 4/18/94 * $FreeBSD: src/sys/gnu/ext2fs/ext2_vfsops.c,v 1.63.2.7 2002/07/01 00:18:51 iedowse Exp $ - * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_vfsops.c,v 1.46 2006/08/03 16:40:48 swildner Exp $ + * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_vfsops.c,v 1.47 2006/08/12 00:26:20 dillon Exp $ */ #include "opt_quota.h" @@ -279,7 +279,7 @@ ext2_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred) vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY); VOP_OPEN(devvp, FREAD, FSCRED, NULL); VOP_CLOSE(devvp, FREAD|FWRITE); - VOP_UNLOCK(devvp, 0); + vn_unlock(devvp); } if (!error && (mp->mnt_flag & MNT_RELOAD)) error = ext2_reload(mp, cred); @@ -297,10 +297,10 @@ ext2_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred) vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY); error = VOP_ACCESS(devvp, VREAD | VWRITE, cred); if (error) { - VOP_UNLOCK(devvp, 0); + vn_unlock(devvp); return (error); } - VOP_UNLOCK(devvp, 0); + vn_unlock(devvp); } if ((fs->s_es->s_state & EXT2_VALID_FS) == 0 || @@ -322,7 +322,7 @@ ext2_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred) vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY); VOP_OPEN(devvp, FREAD|FWRITE, FSCRED, NULL); VOP_CLOSE(devvp, FREAD); - VOP_UNLOCK(devvp, 0); + vn_unlock(devvp); } if (args.fspec == 0) { /* @@ -363,7 +363,7 @@ ext2_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred) vput(devvp); return (error); } - VOP_UNLOCK(devvp, 0); + vn_unlock(devvp); } if ((mp->mnt_flag & MNT_UPDATE) == 0) { @@ -723,7 +723,7 @@ ext2_mountfs(struct vnode *devvp, struct mount *mp, struct ucred *cred) ronly = (mp->mnt_flag & MNT_RDONLY) != 0; vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY); error = VOP_OPEN(devvp, ronly ? FREAD : FREAD|FWRITE, FSCRED, NULL); - VOP_UNLOCK(devvp, 0); + vn_unlock(devvp); if (error) return (error); dev = devvp->v_rdev; @@ -1010,7 +1010,7 @@ ext2_sync(struct mount *mp, int waitfor) vn_lock(ump->um_devvp, LK_EXCLUSIVE | LK_RETRY); if ((error = VOP_FSYNC(ump->um_devvp, waitfor)) != 0) scaninfo.allerror = error; - VOP_UNLOCK(ump->um_devvp, 0); + vn_unlock(ump->um_devvp); } #if QUOTA ext2_qsync(mp); diff --git a/sys/vfs/gnu/ext2fs/ext2_vnops.c b/sys/vfs/gnu/ext2fs/ext2_vnops.c index aebd048595..090fd91438 100644 --- a/sys/vfs/gnu/ext2fs/ext2_vnops.c +++ b/sys/vfs/gnu/ext2fs/ext2_vnops.c @@ -44,7 +44,7 @@ * @(#)ufs_vnops.c 8.27 (Berkeley) 5/27/95 * @(#)ext2_vnops.c 8.7 (Berkeley) 2/3/94 * $FreeBSD: src/sys/gnu/ext2fs/ext2_vnops.c,v 1.51.2.2 2003/01/02 17:26:18 bde Exp $ - * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_vnops.c,v 1.35 2006/07/19 06:08:11 dillon Exp $ + * $DragonFly: src/sys/vfs/gnu/ext2fs/ext2_vnops.c,v 1.36 2006/08/12 00:26:20 dillon Exp $ */ #include "opt_quota.h" @@ -385,7 +385,7 @@ ext2_link(struct vop_old_link_args *ap) } out1: if (tdvp != vp) - VOP_UNLOCK(vp, 0); + vn_unlock(vp); out2: return (error); } @@ -457,13 +457,13 @@ abortit: dp = VTOI(fdvp); ip = VTOI(fvp); if (ip->i_nlink >= LINK_MAX) { - VOP_UNLOCK(fvp, 0); + vn_unlock(fvp); error = EMLINK; goto abortit; } if ((ip->i_flags & (NOUNLINK | IMMUTABLE | APPEND)) || (dp->i_flags & APPEND)) { - VOP_UNLOCK(fvp, 0); + vn_unlock(fvp); error = EPERM; goto abortit; } @@ -474,7 +474,7 @@ abortit: if ((fcnp->cn_namelen == 1 && fcnp->cn_nameptr[0] == '.') || dp == ip || (fcnp->cn_flags | tcnp->cn_flags) & CNP_ISDOTDOT || (ip->i_flag & IN_RENAME)) { - VOP_UNLOCK(fvp, 0); + vn_unlock(fvp); error = EINVAL; goto abortit; } @@ -503,7 +503,7 @@ abortit: ip->i_nlink++; ip->i_flag |= IN_CHANGE; if ((error = EXT2_UPDATE(fvp, 1)) != 0) { - VOP_UNLOCK(fvp, 0); + vn_unlock(fvp); goto bad; } @@ -518,7 +518,7 @@ abortit: * call to checkpath(). */ error = VOP_ACCESS(fvp, VWRITE, tcnp->cn_cred); - VOP_UNLOCK(fvp, 0); + vn_unlock(fvp); /* * tvp (if not NULL) and tdvp are locked. fvp and fdvp are not. @@ -1051,7 +1051,7 @@ ext2_rmdir(struct vop_old_rmdir_args *ap) goto out; dp->i_nlink--; dp->i_flag |= IN_CHANGE; - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); /* * Truncate inode. The only stuff left * in the directory is "." and "..". The @@ -2186,9 +2186,7 @@ struct vop_ops ext2_vnode_vops = { .vop_old_create = ext2_create, .vop_getattr = ext2_getattr, .vop_inactive = ext2_inactive, - .vop_islocked = vop_stdislocked, .vop_old_link = ext2_link, - .vop_lock = vop_stdlock, .vop_old_mkdir = ext2_mkdir, .vop_old_mknod = ext2_mknod, .vop_mmap = ext2_mmap, @@ -2206,7 +2204,6 @@ struct vop_ops ext2_vnode_vops = { .vop_setattr = ext2_setattr, .vop_strategy = ext2_strategy, .vop_old_symlink = ext2_symlink, - .vop_unlock = vop_stdunlock, .vop_old_whiteout = ext2_whiteout, .vop_getpages = ext2_getpages, .vop_putpages = ext2_putpages @@ -2219,13 +2216,10 @@ struct vop_ops ext2_spec_vops = { .vop_close = ext2spec_close, .vop_getattr = ext2_getattr, .vop_inactive = ext2_inactive, - .vop_islocked = vop_stdislocked, - .vop_lock = vop_stdlock, .vop_print = ext2_print, .vop_read = ext2spec_read, .vop_reclaim = ext2_reclaim, .vop_setattr = ext2_setattr, - .vop_unlock = vop_stdunlock, .vop_write = ext2spec_write }; @@ -2236,14 +2230,11 @@ struct vop_ops ext2_fifo_vops = { .vop_close = ext2fifo_close, .vop_getattr = ext2_getattr, .vop_inactive = ext2_inactive, - .vop_islocked = vop_stdislocked, .vop_kqfilter = ext2fifo_kqfilter, - .vop_lock = vop_stdlock, .vop_print = ext2_print, .vop_read = ext2fifo_read, .vop_reclaim = ext2_reclaim, .vop_setattr = ext2_setattr, - .vop_unlock = vop_stdunlock, .vop_write = ext2fifo_write }; diff --git a/sys/vfs/gnu/ext2fs/fs.h b/sys/vfs/gnu/ext2fs/fs.h index 665435b214..74b9ec24da 100644 --- a/sys/vfs/gnu/ext2fs/fs.h +++ b/sys/vfs/gnu/ext2fs/fs.h @@ -38,7 +38,7 @@ * * @(#)fs.h 8.7 (Berkeley) 4/19/94 * $FreeBSD: src/sys/gnu/ext2fs/fs.h,v 1.5.2.1 2000/11/11 13:12:45 bde Exp $ - * $DragonFly: src/sys/vfs/gnu/ext2fs/fs.h,v 1.10 2006/05/05 21:15:09 dillon Exp $ + * $DragonFly: src/sys/vfs/gnu/ext2fs/fs.h,v 1.11 2006/08/12 00:26:20 dillon Exp $ */ /* @@ -164,11 +164,11 @@ extern u_char *fragtbl[]; /* a few remarks about superblock locking/unlocking * Linux provides special routines for doing so * I haven't figured out yet what BSD does - * I think I'll try a VOP_LOCK/VOP_UNLOCK on the device vnode + * I think I'll try a vn_lock/vn_unlock on the device vnode */ #define DEVVP(inode) (VFSTOEXT2(ITOV(inode)->v_mount)->um_devvp) #define lock_super(devvp) vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY) -#define unlock_super(devvp) VOP_UNLOCK(devvp, 0) +#define unlock_super(devvp) vn_unlock(devvp) /* * To lock a buffer, set the B_LOCKED flag and then brelse() it. To unlock, diff --git a/sys/vfs/hpfs/hpfs.h b/sys/vfs/hpfs/hpfs.h index 3a148dd83d..44cdcd218a 100644 --- a/sys/vfs/hpfs/hpfs.h +++ b/sys/vfs/hpfs/hpfs.h @@ -24,7 +24,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/fs/hpfs/hpfs.h,v 1.1 1999/12/09 19:09:58 semenu Exp $ - * $DragonFly: src/sys/vfs/hpfs/hpfs.h,v 1.20 2006/05/06 18:48:53 dillon Exp $ + * $DragonFly: src/sys/vfs/hpfs/hpfs.h,v 1.21 2006/08/12 00:26:20 dillon Exp $ */ /*#define HPFS_DEBUG 10*/ @@ -385,26 +385,12 @@ MALLOC_DECLARE(M_HPFSNO); #define FID(f) (*((lsn_t *)(f)->fid_data)) #define dbtodoff(dbn) ((off_t)(dbn) << DEV_BSHIFT) -#if defined(__NetBSD__) -#define MALLOC_DEFINE(a, b, c) -#define M_HPFSMNT M_TEMP -#define M_HPFSNO M_TEMP -typedef int (vop_t) (void *); -#define HASHINIT(a, b, c, d) hashinit((a), (b), (c), (d)) -#define bqrelse(bp) brelse(bp) -#define VOP__LOCK(a, b) VOP_LOCK((a), (b) ? LK_EXCLUSIVE : LK_SHARED) -#define VOP__UNLOCK(a, b) VOP_UNLOCK((a), 0) -#define VGET(a, b, c) vget((a), LK_EXCLUSIVE) -#define VN_LOCK(a, b) vn_lock((a), LK_EXCLUSIVE) -#define LOCKMGR(a, b) lockmgr((a), (b), NULL) -#else /* defined(__DragonFly__) */ #define HASHINIT(a, b, c, d) hashinit((a), (b), (d)) -#define VOP__LOCK(a, b) VOP_LOCK((a), (b)) -#define VOP__UNLOCK(a, b) VOP_UNLOCK((a), (b)) +#define VOP__LOCK(a, b) vn_lock((a), (b)) +#define VOP__UNLOCK(a, b) vn_unlock((a)) #define VGET(a, b, c) vget((a), (b)) #define VN_LOCK(a, b) vn_lock((a), (b)) #define LOCKMGR(a, b) lockmgr((a), (b)) -#endif struct vfsconf; diff --git a/sys/vfs/hpfs/hpfs_vnops.c b/sys/vfs/hpfs/hpfs_vnops.c index 839cc71025..fd23e4941a 100644 --- a/sys/vfs/hpfs/hpfs_vnops.c +++ b/sys/vfs/hpfs/hpfs_vnops.c @@ -24,7 +24,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/fs/hpfs/hpfs_vnops.c,v 1.2.2.2 2002/01/15 18:35:09 semenu Exp $ - * $DragonFly: src/sys/vfs/hpfs/hpfs_vnops.c,v 1.36 2006/07/18 22:22:15 dillon Exp $ + * $DragonFly: src/sys/vfs/hpfs/hpfs_vnops.c,v 1.37 2006/08/12 00:26:20 dillon Exp $ */ #include @@ -1217,7 +1217,7 @@ hpfs_pathconf(struct vop_pathconf_args *ap) /* * Global vfs data structures */ -#if defined(__DragonFly__) + struct vop_ops hpfs_vnode_vops = { .vop_default = vop_defaultop, .vop_getattr = hpfs_getattr, @@ -1227,9 +1227,6 @@ struct vop_ops hpfs_vnode_vops = { .vop_print = hpfs_print, .vop_old_create = hpfs_create, .vop_old_remove = hpfs_remove, - .vop_islocked = vop_stdislocked, - .vop_unlock = vop_stdunlock, - .vop_lock = vop_stdlock, .vop_old_lookup = hpfs_lookup, .vop_access = hpfs_access, .vop_readdir = hpfs_readdir, @@ -1244,52 +1241,3 @@ struct vop_ops hpfs_vnode_vops = { .vop_pathconf = hpfs_pathconf }; -#else /* defined(__NetBSD__) */ -struct vnodeopv_entry_desc ntfs_vnodeop_entries[] = { - { &vop_default_desc, (vnodeopv_entry_t) genfs_badop }, /* XXX */ - { &vop_old_lookup_desc, (vnodeopv_entry_t) hpfs_lookup }, /* lookup */ - { &vop_old_create_desc, genfs_eopnotsupp }, /* create */ - { &vop_old_mknod_desc, genfs_eopnotsupp }, /* mknod */ - { &vop_access_desc, (vnodeopv_entry_t) hpfs_access }, /* access */ - { &vop_getattr_desc, (vnodeopv_entry_t) hpfs_getattr }, /* getattr */ - { &vop_setattr_desc, genfs_eopnotsupp }, /* setattr */ - { &vop_read_desc, (vnodeopv_entry_t) hpfs_read }, /* read */ - { &vop_write_desc, (vnodeopv_entry_t) hpfs_write }, /* write */ - { &vop_lease_desc, genfs_lease_check }, /* lease */ - { &vop_fcntl_desc, genfs_fcntl }, /* fcntl */ - { &vop_ioctl_desc, genfs_enoioctl }, /* ioctl */ - { &vop_poll_desc, genfs_poll }, /* poll */ - { &vop_revoke_desc, genfs_revoke }, /* revoke */ - { &vop_mmap_desc, genfs_eopnotsupp }, /* mmap */ - { &vop_fsync_desc, genfs_fsync }, /* fsync */ - { &vop_seek_desc, genfs_seek }, /* seek */ - { &vop_old_remove_desc, genfs_eopnotsupp }, /* remove */ - { &vop_old_link_desc, genfs_eopnotsupp }, /* link */ - { &vop_old_rename_desc, genfs_eopnotsupp }, /* rename */ - { &vop_old_mkdir_desc, genfs_eopnotsupp }, /* mkdir */ - { &vop_old_rmdir_desc, genfs_eopnotsupp }, /* rmdir */ - { &vop_old_symlink_desc, genfs_eopnotsupp }, /* symlink */ - { &vop_readdir_desc, (vnodeopv_entry_t) hpfs_readdir }, /* readdir */ - { &vop_readlink_desc, genfs_eopnotsupp }, /* readlink */ - { &vop_abortop_desc, genfs_abortop }, /* abortop */ - { &vop_inactive_desc, (vnodeopv_entry_t) hpfs_inactive }, /* inactive */ - { &vop_reclaim_desc, (vnodeopv_entry_t) hpfs_reclaim }, /* reclaim */ - { &vop_lock_desc, genfs_lock }, /* lock */ - { &vop_unlock_desc, genfs_unlock }, /* unlock */ - { &vop_bmap_desc, (vnodeopv_entry_t) hpfs_bmap }, /* bmap */ - { &vop_strategy_desc, (vnodeopv_entry_t) hpfs_strategy }, /* strategy */ - { &vop_print_desc, (vnodeopv_entry_t) hpfs_print }, /* print */ - { &vop_islocked_desc, genfs_islocked }, /* islocked */ - { &vop_pathconf_desc, hpfs_pathconf }, /* pathconf */ - { &vop_advlock_desc, genfs_nullop }, /* advlock */ - { &vop_blkatoff_desc, genfs_eopnotsupp }, /* blkatoff */ - { &vop_valloc_desc, genfs_eopnotsupp }, /* valloc */ - { &vop_reallocblks_desc, genfs_eopnotsupp }, /* reallocblks */ - { &vop_vfree_desc, genfs_eopnotsupp }, /* vfree */ - { &vop_truncate_desc, genfs_eopnotsupp }, /* truncate */ - { &vop_update_desc, genfs_eopnotsupp }, /* update */ - { &vop_bwrite_desc, vn_bwrite }, /* bwrite */ - { NULL, NULL } -}; - -#endif diff --git a/sys/vfs/isofs/cd9660/cd9660_lookup.c b/sys/vfs/isofs/cd9660/cd9660_lookup.c index e629b1653f..06511a7d26 100644 --- a/sys/vfs/isofs/cd9660/cd9660_lookup.c +++ b/sys/vfs/isofs/cd9660/cd9660_lookup.c @@ -39,7 +39,7 @@ * * @(#)cd9660_lookup.c 8.2 (Berkeley) 1/23/94 * $FreeBSD: src/sys/isofs/cd9660/cd9660_lookup.c,v 1.23.2.2 2001/11/04 06:19:47 dillon Exp $ - * $DragonFly: src/sys/vfs/isofs/cd9660/cd9660_lookup.c,v 1.22 2006/05/05 21:15:10 dillon Exp $ + * $DragonFly: src/sys/vfs/isofs/cd9660/cd9660_lookup.c,v 1.23 2006/08/12 00:26:20 dillon Exp $ */ #include @@ -346,7 +346,7 @@ found: * it's a relocated directory. */ if (flags & CNP_ISDOTDOT) { - VOP_UNLOCK(pdp, 0); /* race to get the inode */ + vn_unlock(pdp); /* race to get the inode */ error = cd9660_vget_internal(vdp->v_mount, dp->i_ino, &tdp, dp->i_ino != ino, ep); brelse(bp); @@ -375,7 +375,7 @@ found: return (error); if (!lockparent) { cnp->cn_flags |= CNP_PDIRUNLOCK; - VOP_UNLOCK(pdp, 0); + vn_unlock(pdp); } *vpp = tdp; } diff --git a/sys/vfs/isofs/cd9660/cd9660_vfsops.c b/sys/vfs/isofs/cd9660/cd9660_vfsops.c index 20f09396d9..da4112d13a 100644 --- a/sys/vfs/isofs/cd9660/cd9660_vfsops.c +++ b/sys/vfs/isofs/cd9660/cd9660_vfsops.c @@ -37,7 +37,7 @@ * * @(#)cd9660_vfsops.c 8.18 (Berkeley) 5/22/95 * $FreeBSD: src/sys/isofs/cd9660/cd9660_vfsops.c,v 1.74.2.7 2002/04/08 09:39:29 bde Exp $ - * $DragonFly: src/sys/vfs/isofs/cd9660/cd9660_vfsops.c,v 1.38 2006/07/28 02:17:41 dillon Exp $ + * $DragonFly: src/sys/vfs/isofs/cd9660/cd9660_vfsops.c,v 1.39 2006/08/12 00:26:21 dillon Exp $ */ #include @@ -151,7 +151,7 @@ iso_mountroot(struct mount *mp) vn_lock(rootvp, LK_EXCLUSIVE | LK_RETRY); error = VOP_OPEN(rootvp, FREAD, FSCRED, NULL); - VOP_UNLOCK(rootvp, 0); + vn_unlock(rootvp); if (error) return (error); @@ -235,7 +235,7 @@ cd9660_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred) vput(devvp); return (error); } - VOP_UNLOCK(devvp, 0); + vn_unlock(devvp); if ((mp->mnt_flag & MNT_UPDATE) == 0) { error = iso_mountfs(devvp, mp, &args); @@ -297,7 +297,7 @@ iso_mountfs(struct vnode *devvp, struct mount *mp, struct iso_args *argp) vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY); error = VOP_OPEN(devvp, FREAD, FSCRED, NULL); - VOP_UNLOCK(devvp, 0); + vn_unlock(devvp); if (error) return error; dev = devvp->v_rdev; diff --git a/sys/vfs/isofs/cd9660/cd9660_vnops.c b/sys/vfs/isofs/cd9660/cd9660_vnops.c index cbbc69745c..65ae8bdf7c 100644 --- a/sys/vfs/isofs/cd9660/cd9660_vnops.c +++ b/sys/vfs/isofs/cd9660/cd9660_vnops.c @@ -37,7 +37,7 @@ * * @(#)cd9660_vnops.c 8.19 (Berkeley) 5/27/95 * $FreeBSD: src/sys/isofs/cd9660/cd9660_vnops.c,v 1.62 1999/12/15 23:01:51 eivind Exp $ - * $DragonFly: src/sys/vfs/isofs/cd9660/cd9660_vnops.c,v 1.29 2006/07/19 06:08:12 dillon Exp $ + * $DragonFly: src/sys/vfs/isofs/cd9660/cd9660_vnops.c,v 1.30 2006/08/12 00:26:21 dillon Exp $ */ #include @@ -877,8 +877,6 @@ struct vop_ops cd9660_vnode_vops = { .vop_getattr = cd9660_getattr, .vop_inactive = cd9660_inactive, .vop_ioctl = cd9660_ioctl, - .vop_islocked = vop_stdislocked, - .vop_lock = vop_stdlock, .vop_pathconf = cd9660_pathconf, .vop_print = cd9660_print, .vop_read = cd9660_read, @@ -887,7 +885,6 @@ struct vop_ops cd9660_vnode_vops = { .vop_reclaim = cd9660_reclaim, .vop_setattr = cd9660_setattr, .vop_strategy = cd9660_strategy, - .vop_unlock = vop_stdunlock, .vop_getpages = cd9660_getpages, .vop_putpages = cd9660_putpages }; @@ -900,12 +897,9 @@ struct vop_ops cd9660_spec_vops = { .vop_access = cd9660_access, .vop_getattr = cd9660_getattr, .vop_inactive = cd9660_inactive, - .vop_islocked = vop_stdislocked, - .vop_lock = vop_stdlock, .vop_print = cd9660_print, .vop_reclaim = cd9660_reclaim, .vop_setattr = cd9660_setattr, - .vop_unlock = vop_stdunlock }; struct vop_ops cd9660_fifo_vops = { @@ -913,11 +907,8 @@ struct vop_ops cd9660_fifo_vops = { .vop_access = cd9660_access, .vop_getattr = cd9660_getattr, .vop_inactive = cd9660_inactive, - .vop_islocked = vop_stdislocked, - .vop_lock = vop_stdlock, .vop_print = cd9660_print, .vop_reclaim = cd9660_reclaim, .vop_setattr = cd9660_setattr, - .vop_unlock = vop_stdunlock }; diff --git a/sys/vfs/mfs/mfs_vnops.c b/sys/vfs/mfs/mfs_vnops.c index ab6c9632a3..31a8f97426 100644 --- a/sys/vfs/mfs/mfs_vnops.c +++ b/sys/vfs/mfs/mfs_vnops.c @@ -32,7 +32,7 @@ * * @(#)mfs_vnops.c 8.11 (Berkeley) 5/22/95 * $FreeBSD: src/sys/ufs/mfs/mfs_vnops.c,v 1.47.2.1 2001/05/22 02:06:43 bp Exp $ - * $DragonFly: src/sys/vfs/mfs/mfs_vnops.c,v 1.31 2006/08/08 01:23:07 dillon Exp $ + * $DragonFly: src/sys/vfs/mfs/mfs_vnops.c,v 1.32 2006/08/12 00:26:21 dillon Exp $ */ #include @@ -82,13 +82,10 @@ static struct vop_ops mfs_vnode_vops = { .vop_getpages = mfs_getpages, .vop_inactive = mfs_inactive, .vop_ioctl = (void *)vop_enotty, - .vop_islocked = vop_stdislocked, - .vop_lock = vop_stdlock, .vop_open = mfs_open, .vop_print = mfs_print, .vop_reclaim = mfs_reclaim, .vop_strategy = mfs_strategy, - .vop_unlock = vop_stdunlock }; struct vop_ops *mfs_vnode_vops_p = &mfs_vnode_vops; diff --git a/sys/vfs/msdosfs/msdosfs_lookup.c b/sys/vfs/msdosfs/msdosfs_lookup.c index 4e2d861949..1de7bb1f42 100644 --- a/sys/vfs/msdosfs/msdosfs_lookup.c +++ b/sys/vfs/msdosfs/msdosfs_lookup.c @@ -1,5 +1,5 @@ /* $FreeBSD: src/sys/msdosfs/msdosfs_lookup.c,v 1.30.2.1 2000/11/03 15:55:39 bp Exp $ */ -/* $DragonFly: src/sys/vfs/msdosfs/msdosfs_lookup.c,v 1.19 2006/05/06 02:43:14 dillon Exp $ */ +/* $DragonFly: src/sys/vfs/msdosfs/msdosfs_lookup.c,v 1.20 2006/08/12 00:26:21 dillon Exp $ */ /* $NetBSD: msdosfs_lookup.c,v 1.37 1997/11/17 15:36:54 ws Exp $ */ /*- @@ -361,7 +361,7 @@ notfound: * information cannot be used. */ if (!lockparent) { - VOP_UNLOCK(vdp, 0); + vn_unlock(vdp); cnp->cn_flags |= CNP_PDIRUNLOCK; } return (EJUSTRETURN); @@ -447,7 +447,7 @@ foundroot: return (error); *vpp = DETOV(tdp); if (!lockparent) { - VOP_UNLOCK(vdp, 0); + vn_unlock(vdp); cnp->cn_flags |= CNP_PDIRUNLOCK; } return (0); @@ -478,7 +478,7 @@ foundroot: return (error); *vpp = DETOV(tdp); if (!lockparent) { - VOP_UNLOCK(vdp, 0); + vn_unlock(vdp); cnp->cn_flags |= CNP_PDIRUNLOCK; } return (0); @@ -505,7 +505,7 @@ foundroot: */ pdp = vdp; if (flags & CNP_ISDOTDOT) { - VOP_UNLOCK(pdp, 0); + vn_unlock(pdp); cnp->cn_flags |= CNP_PDIRUNLOCK; error = deget(pmp, cluster, blkoff, &tdp); if (error) { @@ -529,7 +529,7 @@ foundroot: if ((error = deget(pmp, cluster, blkoff, &tdp)) != 0) return (error); if (!lockparent) { - VOP_UNLOCK(pdp, 0); + vn_unlock(pdp); cnp->cn_flags |= CNP_PDIRUNLOCK; } *vpp = DETOV(tdp); diff --git a/sys/vfs/msdosfs/msdosfs_vfsops.c b/sys/vfs/msdosfs/msdosfs_vfsops.c index d03ca95f70..cead15133c 100644 --- a/sys/vfs/msdosfs/msdosfs_vfsops.c +++ b/sys/vfs/msdosfs/msdosfs_vfsops.c @@ -1,5 +1,5 @@ /* $FreeBSD: /usr/local/www/cvsroot/FreeBSD/src/sys/msdosfs/Attic/msdosfs_vfsops.c,v 1.60.2.8 2004/03/02 09:43:04 tjr Exp $ */ -/* $DragonFly: src/sys/vfs/msdosfs/msdosfs_vfsops.c,v 1.36 2006/07/18 22:22:15 dillon Exp $ */ +/* $DragonFly: src/sys/vfs/msdosfs/msdosfs_vfsops.c,v 1.37 2006/08/12 00:26:21 dillon Exp $ */ /* $NetBSD: msdosfs_vfsops.c,v 1.51 1997/11/17 15:36:58 ws Exp $ */ /*- @@ -205,10 +205,10 @@ msdosfs_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred) vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY); error = VOP_ACCESS(devvp, VREAD | VWRITE, cred); if (error) { - VOP_UNLOCK(devvp, 0); + vn_unlock(devvp); return (error); } - VOP_UNLOCK(devvp, 0); + vn_unlock(devvp); } pmp->pm_flags &= ~MSDOSFSMNT_RONLY; } @@ -259,7 +259,7 @@ msdosfs_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred) vput(devvp); return (error); } - VOP_UNLOCK(devvp, 0); + vn_unlock(devvp); } if ((mp->mnt_flag & MNT_UPDATE) == 0) { error = mountmsdosfs(devvp, mp, &args); @@ -322,14 +322,14 @@ mountmsdosfs(struct vnode *devvp, struct mount *mp, struct msdosfs_args *argp) return (EBUSY); vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY); error = vinvalbuf(devvp, V_SAVE, 0, 0); - VOP_UNLOCK(devvp, 0); + vn_unlock(devvp); if (error) return (error); ronly = (mp->mnt_flag & MNT_RDONLY) != 0; vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY); error = VOP_OPEN(devvp, ronly ? FREAD : FREAD|FWRITE, FSCRED, NULL); - VOP_UNLOCK(devvp, 0); + vn_unlock(devvp); if (error) return (error); dev = devvp->v_rdev; @@ -802,7 +802,7 @@ msdosfs_sync(struct mount *mp, int waitfor) vn_lock(pmp->pm_devvp, LK_EXCLUSIVE | LK_RETRY); if ((error = VOP_FSYNC(pmp->pm_devvp, waitfor)) != 0) scaninfo.allerror = error; - VOP_UNLOCK(pmp->pm_devvp, 0); + vn_unlock(pmp->pm_devvp); } return (scaninfo.allerror); } diff --git a/sys/vfs/msdosfs/msdosfs_vnops.c b/sys/vfs/msdosfs/msdosfs_vnops.c index 50ba9c6958..0d927fbb2e 100644 --- a/sys/vfs/msdosfs/msdosfs_vnops.c +++ b/sys/vfs/msdosfs/msdosfs_vnops.c @@ -1,5 +1,5 @@ /* $FreeBSD: src/sys/msdosfs/msdosfs_vnops.c,v 1.95.2.4 2003/06/13 15:05:47 trhodes Exp $ */ -/* $DragonFly: src/sys/vfs/msdosfs/msdosfs_vnops.c,v 1.39 2006/07/18 22:22:15 dillon Exp $ */ +/* $DragonFly: src/sys/vfs/msdosfs/msdosfs_vnops.c,v 1.40 2006/08/12 00:26:21 dillon Exp $ */ /* $NetBSD: msdosfs_vnops.c,v 1.68 1998/02/10 14:10:04 mrg Exp $ */ /*- @@ -1047,7 +1047,7 @@ abortit: (fcnp->cn_flags & CNP_ISDOTDOT) || (tcnp->cn_flags & CNP_ISDOTDOT) || (ip->de_flag & DE_RENAME)) { - VOP_UNLOCK(fvp, 0); + vn_unlock(fvp); error = EINVAL; goto abortit; } @@ -1081,7 +1081,7 @@ abortit: * call to doscheckpath(). */ error = VOP_ACCESS(fvp, VWRITE, tcnp->cn_cred); - VOP_UNLOCK(fvp, 0); + vn_unlock(fvp); if (VTODE(fdvp)->de_StartCluster != VTODE(tdvp)->de_StartCluster) newparent = 1; @@ -1185,7 +1185,7 @@ abortit: fcnp->cn_flags &= ~CNP_MODMASK; fcnp->cn_flags |= CNP_LOCKPARENT; if (newparent == 0) - VOP_UNLOCK(tdvp, 0); + vn_unlock(tdvp); error = relookup(fdvp, &fvp, fcnp); if (error || fvp == NULL) { /* @@ -1515,7 +1515,7 @@ msdosfs_rmdir(struct vop_old_rmdir_args *ap) * directory. Since dos filesystems don't do this we just purge * the name cache. */ - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); /* * Truncate the directory that is being deleted. */ @@ -1981,9 +1981,7 @@ struct vop_ops msdosfs_vnode_vops = { .vop_fsync = msdosfs_fsync, .vop_getattr = msdosfs_getattr, .vop_inactive = msdosfs_inactive, - .vop_islocked = vop_stdislocked, .vop_old_link = msdosfs_link, - .vop_lock = vop_stdlock, .vop_old_mkdir = msdosfs_mkdir, .vop_old_mknod = msdosfs_mknod, .vop_pathconf = msdosfs_pathconf, @@ -1997,7 +1995,6 @@ struct vop_ops msdosfs_vnode_vops = { .vop_setattr = msdosfs_setattr, .vop_strategy = msdosfs_strategy, .vop_old_symlink = msdosfs_symlink, - .vop_unlock = vop_stdunlock, .vop_write = msdosfs_write, .vop_getpages = msdosfs_getpages, .vop_putpages = msdosfs_putpages diff --git a/sys/vfs/nfs/nfs_node.c b/sys/vfs/nfs/nfs_node.c index 3cae395569..5bea93885d 100644 --- a/sys/vfs/nfs/nfs_node.c +++ b/sys/vfs/nfs/nfs_node.c @@ -35,7 +35,7 @@ * * @(#)nfs_node.c 8.6 (Berkeley) 5/22/95 * $FreeBSD: src/sys/nfs/nfs_node.c,v 1.36.2.3 2002/01/05 22:25:04 dillon Exp $ - * $DragonFly: src/sys/vfs/nfs/nfs_node.c,v 1.24 2006/08/08 03:52:43 dillon Exp $ + * $DragonFly: src/sys/vfs/nfs/nfs_node.c,v 1.25 2006/08/12 00:26:21 dillon Exp $ */ @@ -297,93 +297,3 @@ nfs_reclaim(struct vop_reclaim_args *ap) return (0); } -#if 0 -/* - * Lock an nfsnode - * - * nfs_lock(struct vnode *a_vp) - */ -int -nfs_lock(struct vop_lock_args *ap) -{ - struct vnode *vp = ap->a_vp; - - /* - * Ugh, another place where interruptible mounts will get hung. - * If you make this sleep interruptible, then you have to fix all - * the VOP_LOCK() calls to expect interruptibility. - */ - while (vp->v_flag & VXLOCK) { - vp->v_flag |= VXWANT; - (void) tsleep((caddr_t)vp, 0, "nfslck", 0); - } - if (vp->v_tag == VT_NON) - return (ENOENT); - -#if 0 - /* - * Only lock regular files. If a server crashed while we were - * holding a directory lock, we could easily end up sleeping - * until the server rebooted while holding a lock on the root. - * Locks are only needed for protecting critical sections in - * VMIO at the moment. - * New vnodes will have type VNON but they should be locked - * since they may become VREG. This is checked in loadattrcache - * and unwanted locks are released there. - */ - if (vp->v_type == VREG || vp->v_type == VNON) { - while (np->n_flag & NLOCKED) { - np->n_flag |= NWANTED; - (void) tsleep((caddr_t) np, 0, "nfslck2", 0); - /* - * If the vnode has transmuted into a VDIR while we - * were asleep, then skip the lock. - */ - if (vp->v_type != VREG && vp->v_type != VNON) - return (0); - } - np->n_flag |= NLOCKED; - } -#endif - - return (0); -} - -/* - * Unlock an nfsnode - * - * nfs_unlock(struct vnode *a_vp) - */ -int -nfs_unlock(struct vop_unlock_args *ap) -{ -#if 0 - struct vnode* vp = ap->a_vp; - struct nfsnode* np = VTONFS(vp); - - if (vp->v_type == VREG || vp->v_type == VNON) { - if (!(np->n_flag & NLOCKED)) - panic("nfs_unlock: nfsnode not locked"); - np->n_flag &= ~NLOCKED; - if (np->n_flag & NWANTED) { - np->n_flag &= ~NWANTED; - wakeup((caddr_t) np); - } - } -#endif - - return (0); -} - -/* - * Check for a locked nfsnode - * - * nfs_islocked(struct vnode *a_vp, struct thread *a_td) - */ -int -nfs_islocked(struct vop_islocked_args *ap) -{ - return VTONFS(ap->a_vp)->n_flag & NLOCKED ? 1 : 0; -} -#endif - diff --git a/sys/vfs/nfs/nfs_serv.c b/sys/vfs/nfs/nfs_serv.c index 4be1b47c39..884245bc1a 100644 --- a/sys/vfs/nfs/nfs_serv.c +++ b/sys/vfs/nfs/nfs_serv.c @@ -35,7 +35,7 @@ * * @(#)nfs_serv.c 8.8 (Berkeley) 7/31/95 * $FreeBSD: src/sys/nfs/nfs_serv.c,v 1.93.2.6 2002/12/29 18:19:53 dillon Exp $ - * $DragonFly: src/sys/vfs/nfs/nfs_serv.c,v 1.36 2006/05/06 18:48:53 dillon Exp $ + * $DragonFly: src/sys/vfs/nfs/nfs_serv.c,v 1.37 2006/08/12 00:26:21 dillon Exp $ */ /* @@ -491,7 +491,7 @@ nfsrv_lookup(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, * However, the cnd resource continues to be maintained * via the original nd. Confused? You aren't alone! */ - VOP_UNLOCK(vp, 0); + vn_unlock(vp); ncp = cache_hold(nd.nl_ncp); nlookup_done(&nd); error = nlookup_init_raw(&nd, nfs_pub.np_index, @@ -2852,7 +2852,7 @@ nfsrv_readdir(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, error = 0; goto nfsmout; } - VOP_UNLOCK(vp, 0); + vn_unlock(vp); /* * end section. Allocate rbuf and continue @@ -2883,7 +2883,7 @@ again: if (!error) error = getret; } - VOP_UNLOCK(vp, 0); + vn_unlock(vp); if (error) { vrele(vp); vp = NULL; @@ -3133,7 +3133,7 @@ nfsrv_readdirplus(struct nfsrv_descript *nfsd, struct nfssvc_sock *slp, error = 0; goto nfsmout; } - VOP_UNLOCK(vp, 0); + vn_unlock(vp); MALLOC(rbuf, caddr_t, siz, M_TEMP, M_WAITOK); again: iv.iov_base = rbuf; @@ -3154,7 +3154,7 @@ again: error = VOP_READDIR(vp, &io, cred, &eofflag, &ncookies, &cookies); off = (u_quad_t)io.uio_offset; getret = VOP_GETATTR(vp, &at); - VOP_UNLOCK(vp, 0); + vn_unlock(vp); if (!cookies && !error) error = NFSERR_PERM; if (!error) diff --git a/sys/vfs/nfs/nfs_subs.c b/sys/vfs/nfs/nfs_subs.c index 8242b1a43e..6c55a929ad 100644 --- a/sys/vfs/nfs/nfs_subs.c +++ b/sys/vfs/nfs/nfs_subs.c @@ -35,7 +35,7 @@ * * @(#)nfs_subs.c 8.8 (Berkeley) 5/22/95 * $FreeBSD: /repoman/r/ncvs/src/sys/nfsclient/nfs_subs.c,v 1.128 2004/04/14 23:23:55 peadar Exp $ - * $DragonFly: src/sys/vfs/nfs/nfs_subs.c,v 1.40 2006/06/05 07:26:11 dillon Exp $ + * $DragonFly: src/sys/vfs/nfs/nfs_subs.c,v 1.41 2006/08/12 00:26:21 dillon Exp $ */ /* @@ -1797,7 +1797,7 @@ nfsm_srvfattr(struct nfsrv_descript *nfsd, struct vattr *vap, * - look up fsid in mount list (if not found ret error) * - get vp and export rights by calling VFS_FHTOVP() * - if cred->cr_uid == 0 or MNT_EXPORTANON set it to credanon - * - if not lockflag unlock it with VOP_UNLOCK() + * - if not lockflag unlock it with vn_unlock() */ int nfsrv_fhtovp(fhandle_t *fhp, int lockflag, struct vnode **vpp, @@ -1865,7 +1865,7 @@ nfsrv_fhtovp(fhandle_t *fhp, int lockflag, struct vnode **vpp, *rdonlyp = 0; if (!lockflag) - VOP_UNLOCK(*vpp, 0); + vn_unlock(*vpp); return (0); } diff --git a/sys/vfs/nfs/nfs_vfsops.c b/sys/vfs/nfs/nfs_vfsops.c index 27eae2eaf3..e10bf30b9c 100644 --- a/sys/vfs/nfs/nfs_vfsops.c +++ b/sys/vfs/nfs/nfs_vfsops.c @@ -35,7 +35,7 @@ * * @(#)nfs_vfsops.c 8.12 (Berkeley) 5/20/95 * $FreeBSD: src/sys/nfs/nfs_vfsops.c,v 1.91.2.7 2003/01/27 20:04:08 dillon Exp $ - * $DragonFly: src/sys/vfs/nfs/nfs_vfsops.c,v 1.44 2006/07/18 22:22:15 dillon Exp $ + * $DragonFly: src/sys/vfs/nfs/nfs_vfsops.c,v 1.45 2006/08/12 00:26:21 dillon Exp $ */ #include "opt_bootp.h" @@ -993,7 +993,7 @@ mountnfs(struct nfs_args *argp, struct mount *mp, struct sockaddr *nam, /* * Lose the lock but keep the ref. */ - VOP_UNLOCK(*vpp, 0); + vn_unlock(*vpp); return (0); bad: @@ -1147,7 +1147,7 @@ nfs_sync_scan1(struct mount *mp, struct vnode *vp, void *data) { struct scaninfo *info = data; - if (VOP_ISLOCKED(vp, NULL) || RB_EMPTY(&vp->v_rbdirty_tree)) + if (vn_islocked(vp) || RB_EMPTY(&vp->v_rbdirty_tree)) return(-1); if (info->waitfor == MNT_LAZY) return(-1); diff --git a/sys/vfs/nfs/nfs_vnops.c b/sys/vfs/nfs/nfs_vnops.c index b58443844e..1e52afc755 100644 --- a/sys/vfs/nfs/nfs_vnops.c +++ b/sys/vfs/nfs/nfs_vnops.c @@ -35,7 +35,7 @@ * * @(#)nfs_vnops.c 8.16 (Berkeley) 5/27/95 * $FreeBSD: src/sys/nfs/nfs_vnops.c,v 1.150.2.5 2001/12/20 19:56:28 dillon Exp $ - * $DragonFly: src/sys/vfs/nfs/nfs_vnops.c,v 1.63 2006/07/19 06:08:13 dillon Exp $ + * $DragonFly: src/sys/vfs/nfs/nfs_vnops.c,v 1.64 2006/08/12 00:26:21 dillon Exp $ */ @@ -146,9 +146,7 @@ struct vop_ops nfsv2_vnode_vops = { .vop_getpages = nfs_getpages, .vop_putpages = nfs_putpages, .vop_inactive = nfs_inactive, - .vop_islocked = vop_stdislocked, .vop_old_link = nfs_link, - .vop_lock = vop_stdlock, .vop_old_lookup = nfs_lookup, .vop_old_mkdir = nfs_mkdir, .vop_old_mknod = nfs_mknod, @@ -166,7 +164,6 @@ struct vop_ops nfsv2_vnode_vops = { .vop_setattr = nfs_setattr, .vop_strategy = nfs_strategy, .vop_old_symlink = nfs_symlink, - .vop_unlock = vop_stdunlock, .vop_write = nfs_write, .vop_nresolve = nfs_nresolve }; @@ -181,13 +178,10 @@ struct vop_ops nfsv2_spec_vops = { .vop_fsync = nfs_fsync, .vop_getattr = nfs_getattr, .vop_inactive = nfs_inactive, - .vop_islocked = vop_stdislocked, - .vop_lock = vop_stdlock, .vop_print = nfs_print, .vop_read = nfsspec_read, .vop_reclaim = nfs_reclaim, .vop_setattr = nfs_setattr, - .vop_unlock = vop_stdunlock, .vop_write = nfsspec_write }; @@ -198,13 +192,10 @@ struct vop_ops nfsv2_fifo_vops = { .vop_fsync = nfs_fsync, .vop_getattr = nfs_getattr, .vop_inactive = nfs_inactive, - .vop_islocked = vop_stdislocked, - .vop_lock = vop_stdlock, .vop_print = nfs_print, .vop_read = nfsfifo_read, .vop_reclaim = nfs_reclaim, .vop_setattr = nfs_setattr, - .vop_unlock = vop_stdunlock, .vop_write = nfsfifo_write }; @@ -1024,14 +1015,14 @@ nfs_lookup(struct vop_old_lookup_args *ap) *vpp = newvp; m_freem(mrep); if (!lockparent) { - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); cnp->cn_flags |= CNP_PDIRUNLOCK; } return (0); } if (flags & CNP_ISDOTDOT) { - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); cnp->cn_flags |= CNP_PDIRUNLOCK; error = nfs_nget(dvp->v_mount, fhp, fhsize, &np); if (error) { @@ -1058,7 +1049,7 @@ nfs_lookup(struct vop_old_lookup_args *ap) return (error); } if (!lockparent) { - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); cnp->cn_flags |= CNP_PDIRUNLOCK; } newvp = NFSTOV(np); @@ -1087,7 +1078,7 @@ nfsmout: cnp->cn_nameiop == NAMEI_RENAME) && error == ENOENT) { if (!lockparent) { - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); cnp->cn_flags |= CNP_PDIRUNLOCK; } if (dvp->v_mount->mnt_flag & MNT_RDONLY) diff --git a/sys/vfs/ntfs/ntfs.h b/sys/vfs/ntfs/ntfs.h index 222c3e015a..b743f91fca 100644 --- a/sys/vfs/ntfs/ntfs.h +++ b/sys/vfs/ntfs/ntfs.h @@ -26,7 +26,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/ntfs/ntfs.h,v 1.8.2.2 2001/10/12 22:08:49 semenu Exp $ - * $DragonFly: src/sys/vfs/ntfs/ntfs.h,v 1.13 2006/05/06 18:48:53 dillon Exp $ + * $DragonFly: src/sys/vfs/ntfs/ntfs.h,v 1.14 2006/08/12 00:26:21 dillon Exp $ */ /*#define NTFS_DEBUG 1*/ @@ -304,33 +304,12 @@ MALLOC_DECLARE(M_NTFSDIR); MALLOC_DECLARE(M_NTFSNTHASH); #endif -#ifdef __NetBSD__ -#define MALLOC_DEFINE(a, b, c) -#define M_NTFSNTHASH M_NTFS -#define M_NTFSNTVATTR M_NTFS -#define M_NTFSRDATA M_NTFS -#define M_NTFSRUN M_NTFS -#define M_NTFSDECOMP M_NTFS -#define M_NTFSMNT M_NTFS -#define M_NTFSNTNODE M_NTFS -#define M_NTFSFNODE M_NTFS -#define M_NTFSDIR M_NTFS -typedef int (vop_t) (void *); -#define HASHINIT(a, b, c, d) hashinit((a), (b), (c), (d)) -#define bqrelse(bp) brelse(bp) -#define VOP__UNLOCK(a, b) VOP_UNLOCK((a), (b)) -#define VGET(a, b) vget((a), (b)) -#define VN_LOCK(a, b) vn_lock((a), (b)) -#define LOCKMGR(a, b) lockmgr((a), (b), NULL) -#else /* !NetBSD */ #define HASHINIT(a, b, c, d) hashinit((a), (b), (d)) -#define VOP__UNLOCK(a, b) VOP_UNLOCK((a), (b)) +#define VOP__UNLOCK(a, b) vn_unlock((a)) #define VGET(a, b) vget((a), (b)) #define VN_LOCK(a, b) vn_lock((a), (b)) #define LOCKMGR(a, b) lockmgr((a), (b)) -#endif /* NetBSD */ - #if defined(NTFS_DEBUG) #define dprintf(a) printf a #if NTFS_DEBUG > 1 diff --git a/sys/vfs/ntfs/ntfs_vfsops.c b/sys/vfs/ntfs/ntfs_vfsops.c index c79faf0fea..33bf34df9e 100644 --- a/sys/vfs/ntfs/ntfs_vfsops.c +++ b/sys/vfs/ntfs/ntfs_vfsops.c @@ -26,7 +26,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/ntfs/ntfs_vfsops.c,v 1.20.2.5 2001/12/25 01:44:45 dillon Exp $ - * $DragonFly: src/sys/vfs/ntfs/ntfs_vfsops.c,v 1.38 2006/07/18 22:22:15 dillon Exp $ + * $DragonFly: src/sys/vfs/ntfs/ntfs_vfsops.c,v 1.39 2006/08/12 00:26:21 dillon Exp $ */ @@ -656,14 +656,7 @@ ntfs_unmount(struct mount *mp, int mntflags) vinvalbuf(ntmp->ntm_devvp, V_SAVE, 0, 0); -#if defined(__NetBSD__) - /* lock the device vnode before calling VOP_CLOSE() */ - VOP_LOCK(ntmp->ntm_devvp, LK_EXCLUSIVE | LK_RETRY); error = VOP_CLOSE(ntmp->ntm_devvp, ronly ? FREAD : FREAD|FWRITE); - VOP__UNLOCK(ntmp->ntm_devvp, 0); -#else - error = VOP_CLOSE(ntmp->ntm_devvp, ronly ? FREAD : FREAD|FWRITE); -#endif vrele(ntmp->ntm_devvp); diff --git a/sys/vfs/ntfs/ntfs_vnops.c b/sys/vfs/ntfs/ntfs_vnops.c index fc07fc8905..38e4b90d35 100644 --- a/sys/vfs/ntfs/ntfs_vnops.c +++ b/sys/vfs/ntfs/ntfs_vnops.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/ntfs/ntfs_vnops.c,v 1.9.2.4 2002/08/06 19:35:18 semenu Exp $ - * $DragonFly: src/sys/vfs/ntfs/ntfs_vnops.c,v 1.35 2006/07/19 06:08:13 dillon Exp $ + * $DragonFly: src/sys/vfs/ntfs/ntfs_vnops.c,v 1.36 2006/08/12 00:26:21 dillon Exp $ * */ @@ -839,9 +839,6 @@ struct vop_ops ntfs_vnode_vops = { .vop_reclaim = ntfs_reclaim, .vop_print = ntfs_print, .vop_pathconf = ntfs_pathconf, - .vop_islocked = vop_stdislocked, - .vop_unlock = vop_stdunlock, - .vop_lock = vop_stdlock, .vop_old_lookup = ntfs_lookup, .vop_access = ntfs_access, .vop_close = ntfs_close, diff --git a/sys/vfs/nullfs/null_vfsops.c b/sys/vfs/nullfs/null_vfsops.c index 3409145a0e..fba9ec0807 100644 --- a/sys/vfs/nullfs/null_vfsops.c +++ b/sys/vfs/nullfs/null_vfsops.c @@ -37,7 +37,7 @@ * * @(#)lofs_vfsops.c 1.2 (Berkeley) 6/18/92 * $FreeBSD: src/sys/miscfs/nullfs/null_vfsops.c,v 1.35.2.3 2001/07/26 20:37:11 iedowse Exp $ - * $DragonFly: src/sys/vfs/nullfs/null_vfsops.c,v 1.23 2006/08/09 22:47:35 dillon Exp $ + * $DragonFly: src/sys/vfs/nullfs/null_vfsops.c,v 1.24 2006/08/12 00:26:21 dillon Exp $ */ /* @@ -119,7 +119,7 @@ nullfs_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred) vfs_add_vnodeops(mp, &null_vnode_vops, &mp->mnt_vn_norm_ops); - VOP_UNLOCK(rootvp, 0); + vn_unlock(rootvp); /* * Keep a held reference to the root vnode. diff --git a/sys/vfs/nwfs/nwfs_vfsops.c b/sys/vfs/nwfs/nwfs_vfsops.c index 0d02b718ff..3acbc30c02 100644 --- a/sys/vfs/nwfs/nwfs_vfsops.c +++ b/sys/vfs/nwfs/nwfs_vfsops.c @@ -30,7 +30,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/nwfs/nwfs_vfsops.c,v 1.6.2.6 2001/10/25 19:18:54 dillon Exp $ - * $DragonFly: src/sys/vfs/nwfs/nwfs_vfsops.c,v 1.24 2006/07/18 22:22:16 dillon Exp $ + * $DragonFly: src/sys/vfs/nwfs/nwfs_vfsops.c,v 1.25 2006/08/12 00:26:21 dillon Exp $ */ #include "opt_ncp.h" #ifndef NCP @@ -212,7 +212,7 @@ nwfs_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred) /* * Lose the lock but keep the ref. */ - VOP_UNLOCK(vp, 0); + vn_unlock(vp); NCPVODEBUG("rootvp.vrefcnt=%d\n",vp->v_usecount); return error; bad: @@ -445,7 +445,7 @@ loop: */ if (vp->v_mount != mp) goto loop; - if (VOP_ISLOCKED(vp, NULL) || RB_EMPTY(&vp->v_rbdirty_tree) || + if (vn_islocked(vp) || RB_EMPTY(&vp->v_rbdirty_tree) || waitfor == MNT_LAZY) continue; if (vget(vp, LK_EXCLUSIVE)) diff --git a/sys/vfs/nwfs/nwfs_vnops.c b/sys/vfs/nwfs/nwfs_vnops.c index b639857429..f179486747 100644 --- a/sys/vfs/nwfs/nwfs_vnops.c +++ b/sys/vfs/nwfs/nwfs_vnops.c @@ -30,7 +30,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/nwfs/nwfs_vnops.c,v 1.6.2.3 2001/03/14 11:26:59 bp Exp $ - * $DragonFly: src/sys/vfs/nwfs/nwfs_vnops.c,v 1.31 2006/07/19 06:08:13 dillon Exp $ + * $DragonFly: src/sys/vfs/nwfs/nwfs_vnops.c,v 1.32 2006/08/12 00:26:21 dillon Exp $ */ #include #include @@ -97,9 +97,7 @@ struct vop_ops nwfs_vnode_vops = { .vop_putpages = nwfs_putpages, .vop_ioctl = nwfs_ioctl, .vop_inactive = nwfs_inactive, - .vop_islocked = vop_stdislocked, .vop_old_link = nwfs_link, - .vop_lock = vop_stdlock, .vop_old_lookup = nwfs_lookup, .vop_old_mkdir = nwfs_mkdir, .vop_old_mknod = nwfs_mknod, @@ -114,7 +112,6 @@ struct vop_ops nwfs_vnode_vops = { .vop_setattr = nwfs_setattr, .vop_strategy = nwfs_strategy, .vop_old_symlink = nwfs_symlink, - .vop_unlock = vop_stdunlock, .vop_write = nwfs_write }; @@ -906,7 +903,7 @@ printf("dvp %d:%d:%d\n", (int)mp, (int)dvp->v_flag & VROOT, (int)flags & CNP_ISD /* Handle RENAME or CREATE case... */ if ((nameiop == NAMEI_CREATE || nameiop == NAMEI_RENAME) && wantparent) { if (!lockparent) - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); return (EJUSTRETURN); } return ENOENT; @@ -925,7 +922,7 @@ printf("dvp %d:%d:%d\n", (int)mp, (int)dvp->v_flag & VROOT, (int)flags & CNP_ISD error = nwfs_nget(mp, fid, fap, dvp, &vp); if (error) return (error); *vpp = vp; - if (!lockparent) VOP_UNLOCK(dvp, 0); + if (!lockparent) vn_unlock(dvp); return (0); } if (nameiop == NAMEI_RENAME && wantparent) { @@ -936,11 +933,11 @@ printf("dvp %d:%d:%d\n", (int)mp, (int)dvp->v_flag & VROOT, (int)flags & CNP_ISD if (error) return (error); *vpp = vp; if (!lockparent) - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); return (0); } if (flags & CNP_ISDOTDOT) { - VOP_UNLOCK(dvp, 0); /* race to get the inode */ + vn_unlock(dvp); /* race to get the inode */ error = nwfs_nget(mp, fid, NULL, NULL, &vp); if (error) { vn_lock(dvp, LK_EXCLUSIVE | LK_RETRY); @@ -960,7 +957,7 @@ printf("dvp %d:%d:%d\n", (int)mp, (int)dvp->v_flag & VROOT, (int)flags & CNP_ISD *vpp = vp; NCPVNDEBUG("lookup: getnewvp!\n"); if (!lockparent) - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); } #if 0 /* XXX MOVE TO NREMOVE */ diff --git a/sys/vfs/portal/portal_vnops.c b/sys/vfs/portal/portal_vnops.c index 7576a4af34..90f08d6be5 100644 --- a/sys/vfs/portal/portal_vnops.c +++ b/sys/vfs/portal/portal_vnops.c @@ -36,7 +36,7 @@ * @(#)portal_vnops.c 8.14 (Berkeley) 5/21/95 * * $FreeBSD: src/sys/miscfs/portal/portal_vnops.c,v 1.38 1999/12/21 06:29:00 chris Exp $ - * $DragonFly: src/sys/vfs/portal/portal_vnops.c,v 1.30 2006/07/18 22:22:16 dillon Exp $ + * $DragonFly: src/sys/vfs/portal/portal_vnops.c,v 1.31 2006/08/12 00:26:21 dillon Exp $ */ /* @@ -125,7 +125,6 @@ portal_lookup(struct vop_old_lookup_args *ap) if (cnp->cn_namelen == 1 && *pname == '.') { *vpp = dvp; vref(dvp); - /*VOP_LOCK(dvp);*/ return (0); } @@ -161,7 +160,6 @@ portal_lookup(struct vop_old_lookup_args *ap) *vpp = fvp; vx_unlock(fvp); - /*VOP_LOCK(fvp);*/ return (0); bad:; diff --git a/sys/vfs/procfs/procfs_vnops.c b/sys/vfs/procfs/procfs_vnops.c index f30c059a24..a3f56ce651 100644 --- a/sys/vfs/procfs/procfs_vnops.c +++ b/sys/vfs/procfs/procfs_vnops.c @@ -37,7 +37,7 @@ * @(#)procfs_vnops.c 8.18 (Berkeley) 5/21/95 * * $FreeBSD: src/sys/miscfs/procfs/procfs_vnops.c,v 1.76.2.7 2002/01/22 17:22:59 nectar Exp $ - * $DragonFly: src/sys/vfs/procfs/procfs_vnops.c,v 1.34 2006/07/18 22:22:16 dillon Exp $ + * $DragonFly: src/sys/vfs/procfs/procfs_vnops.c,v 1.35 2006/08/12 00:26:21 dillon Exp $ */ /* @@ -800,7 +800,7 @@ out: if (error == 0 && *vpp != dvp) { if ((cnp->cn_flags & CNP_LOCKPARENT) == 0) { cnp->cn_flags |= CNP_PDIRUNLOCK; - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); } } return (error); diff --git a/sys/vfs/smbfs/smbfs_vfsops.c b/sys/vfs/smbfs/smbfs_vfsops.c index 7cda039e91..c03f81f074 100644 --- a/sys/vfs/smbfs/smbfs_vfsops.c +++ b/sys/vfs/smbfs/smbfs_vfsops.c @@ -30,7 +30,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/fs/smbfs/smbfs_vfsops.c,v 1.2.2.5 2003/01/17 08:20:26 tjr Exp $ - * $DragonFly: src/sys/vfs/smbfs/smbfs_vfsops.c,v 1.29 2006/07/28 02:17:41 dillon Exp $ + * $DragonFly: src/sys/vfs/smbfs/smbfs_vfsops.c,v 1.30 2006/08/12 00:26:21 dillon Exp $ */ #include "opt_netsmb.h" #ifndef NETSMB @@ -204,7 +204,7 @@ smbfs_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred) error = smbfs_root(mp, &vp); if (error) goto bad; - VOP_UNLOCK(vp, 0); + vn_unlock(vp); SMBVDEBUG("root.v_usecount = %d\n", vp->v_usecount); #ifdef DIAGNOSTICS @@ -394,7 +394,7 @@ loop: */ if (vp->v_mount != mp) goto loop; - if (VOP_ISLOCKED(vp, NULL) || RB_EMPTY(&vp->v_rbdirty_tree) || + if (vn_islocked(vp) || RB_EMPTY(&vp->v_rbdirty_tree) || waitfor == MNT_LAZY) continue; if (vget(vp, LK_EXCLUSIVE)) diff --git a/sys/vfs/smbfs/smbfs_vnops.c b/sys/vfs/smbfs/smbfs_vnops.c index 93b2fd9942..257d4f9571 100644 --- a/sys/vfs/smbfs/smbfs_vnops.c +++ b/sys/vfs/smbfs/smbfs_vnops.c @@ -30,7 +30,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/fs/smbfs/smbfs_vnops.c,v 1.2.2.8 2003/04/04 08:57:23 tjr Exp $ - * $DragonFly: src/sys/vfs/smbfs/smbfs_vnops.c,v 1.33 2006/07/19 06:08:14 dillon Exp $ + * $DragonFly: src/sys/vfs/smbfs/smbfs_vnops.c,v 1.34 2006/08/12 00:26:21 dillon Exp $ */ #include #include @@ -98,9 +98,7 @@ struct vop_ops smbfs_vnode_vops = { .vop_getpages = smbfs_getpages, .vop_inactive = smbfs_inactive, .vop_ioctl = smbfs_ioctl, - .vop_islocked = vop_stdislocked, .vop_old_link = smbfs_link, - .vop_lock = vop_stdlock, .vop_old_lookup = smbfs_lookup, .vop_old_mkdir = smbfs_mkdir, .vop_old_mknod = smbfs_mknod, @@ -117,7 +115,6 @@ struct vop_ops smbfs_vnode_vops = { .vop_setattr = smbfs_setattr, .vop_strategy = smbfs_strategy, .vop_old_symlink = smbfs_symlink, - .vop_unlock = vop_stdunlock, .vop_write = smbfs_write, .vop_getextattr = smbfs_getextattr /* .vop_setextattr = smbfs_setextattr */ @@ -1099,7 +1096,7 @@ smbfs_lookup(struct vop_old_lookup_args *ap) if (error) return error; if (!lockparent) { - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); cnp->cn_flags |= CNP_PDIRUNLOCK; } return (EJUSTRETURN); @@ -1125,7 +1122,7 @@ smbfs_lookup(struct vop_old_lookup_args *ap) return error; *vpp = vp; if (!lockparent) { - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); cnp->cn_flags |= CNP_PDIRUNLOCK; } return 0; @@ -1141,13 +1138,13 @@ smbfs_lookup(struct vop_old_lookup_args *ap) return error; *vpp = vp; if (!lockparent) { - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); cnp->cn_flags |= CNP_PDIRUNLOCK; } return 0; } if (flags & CNP_ISDOTDOT) { - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); error = smbfs_nget(mp, dvp, name, nmlen, NULL, &vp); if (error) { vn_lock(dvp, LK_EXCLUSIVE | LK_RETRY); @@ -1172,7 +1169,7 @@ smbfs_lookup(struct vop_old_lookup_args *ap) *vpp = vp; SMBVDEBUG("lookup: getnewvp!\n"); if (!lockparent) { - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); cnp->cn_flags |= CNP_PDIRUNLOCK; } } diff --git a/sys/vfs/specfs/spec_vnops.c b/sys/vfs/specfs/spec_vnops.c index f168ff39df..b31011a3a8 100644 --- a/sys/vfs/specfs/spec_vnops.c +++ b/sys/vfs/specfs/spec_vnops.c @@ -32,7 +32,7 @@ * * @(#)spec_vnops.c 8.14 (Berkeley) 5/21/95 * $FreeBSD: src/sys/miscfs/specfs/spec_vnops.c,v 1.131.2.4 2001/02/26 04:23:20 jlemon Exp $ - * $DragonFly: src/sys/vfs/specfs/spec_vnops.c,v 1.47 2006/07/28 02:17:41 dillon Exp $ + * $DragonFly: src/sys/vfs/specfs/spec_vnops.c,v 1.48 2006/08/12 00:26:21 dillon Exp $ */ #include @@ -239,7 +239,7 @@ spec_open(struct vop_open_args *ap) * dev_dopen() is always called for each open. dev_dclose() is * only called for the last close unless D_TRACKCLOSE is set. */ - VOP_UNLOCK(vp, 0); + vn_unlock(vp); error = dev_dopen(dev, ap->a_mode, S_IFCHR, ap->a_cred); vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); @@ -321,7 +321,7 @@ spec_read(struct vop_read_args *ap) if (uio->uio_resid == 0) return (0); - VOP_UNLOCK(vp, 0); + vn_unlock(vp); error = dev_dread(dev, uio, ap->a_ioflag); vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); return (error); @@ -351,7 +351,7 @@ spec_write(struct vop_write_args *ap) if (dev == NULL) /* device was revoked */ return (EBADF); - VOP_UNLOCK(vp, 0); + vn_unlock(vp); error = dev_dwrite(dev, uio, ap->a_ioflag); vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); return (error); @@ -579,9 +579,9 @@ spec_close(struct vop_close_args *ap) (dev_dflags(dev) & D_TRACKCLOSE) || (vcount(vp) <= 1 && vp->v_opencount == 1))) { needrelock = 0; - if (VOP_ISLOCKED(vp, curthread)) { + if (vn_islocked(vp)) { needrelock = 1; - VOP_UNLOCK(vp, 0); + vn_unlock(vp); } error = dev_dclose(dev, ap->a_fflag, S_IFCHR); if (needrelock) diff --git a/sys/vfs/udf/udf_vfsops.c b/sys/vfs/udf/udf_vfsops.c index 2a9dbeec37..4821090caf 100644 --- a/sys/vfs/udf/udf_vfsops.c +++ b/sys/vfs/udf/udf_vfsops.c @@ -24,7 +24,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/fs/udf/udf_vfsops.c,v 1.16 2003/11/05 06:56:08 scottl Exp $ - * $DragonFly: src/sys/vfs/udf/udf_vfsops.c,v 1.20 2006/07/18 22:22:16 dillon Exp $ + * $DragonFly: src/sys/vfs/udf/udf_vfsops.c,v 1.21 2006/08/12 00:26:21 dillon Exp $ */ /* udf_vfsops.c */ @@ -178,7 +178,7 @@ udf_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred) vput(devvp); return(error); } - VOP_UNLOCK(devvp, 0); + vn_unlock(devvp); if ((error = udf_mountfs(devvp, mp))) { vrele(devvp); @@ -251,7 +251,7 @@ udf_mountfs(struct vnode *devvp, struct mount *mp) vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY); error = VOP_OPEN(devvp, FREAD, FSCRED, NULL); - VOP_UNLOCK(devvp, 0); + vn_unlock(devvp); if (error) return(error); needclose = 1; diff --git a/sys/vfs/udf/udf_vnops.c b/sys/vfs/udf/udf_vnops.c index a5e9ca800a..d17f083a82 100644 --- a/sys/vfs/udf/udf_vnops.c +++ b/sys/vfs/udf/udf_vnops.c @@ -24,7 +24,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/fs/udf/udf_vnops.c,v 1.33 2003/12/07 05:04:49 scottl Exp $ - * $DragonFly: src/sys/vfs/udf/udf_vnops.c,v 1.23 2006/07/18 22:22:16 dillon Exp $ + * $DragonFly: src/sys/vfs/udf/udf_vnops.c,v 1.24 2006/08/12 00:26:21 dillon Exp $ */ /* udf_vnops.c */ @@ -1010,7 +1010,7 @@ lookloop: gd->gd_nchstats->ncs_pass2++; if ((flags & CNP_LOCKPARENT) == 0) { a->a_cnp->cn_flags |= CNP_PDIRUNLOCK; - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); } *vpp = tdp; diff --git a/sys/vfs/ufs/ffs_balloc.c b/sys/vfs/ufs/ffs_balloc.c index fcd5d2ca5d..b08e3c1a80 100644 --- a/sys/vfs/ufs/ffs_balloc.c +++ b/sys/vfs/ufs/ffs_balloc.c @@ -32,7 +32,7 @@ * * @(#)ffs_balloc.c 8.8 (Berkeley) 6/16/95 * $FreeBSD: src/sys/ufs/ffs/ffs_balloc.c,v 1.26.2.1 2002/10/10 19:48:20 dillon Exp $ - * $DragonFly: src/sys/vfs/ufs/ffs_balloc.c,v 1.17 2006/05/06 02:43:14 dillon Exp $ + * $DragonFly: src/sys/vfs/ufs/ffs_balloc.c,v 1.18 2006/08/12 00:26:21 dillon Exp $ */ #include @@ -74,7 +74,6 @@ ffs_balloc(struct vop_balloc_args *ap) ufs_daddr_t newb, *bap, pref; int deallocated, osize, nsize, num, i, error; ufs_daddr_t *allocib, *blkp, *allocblk, allociblk[NIADDR + 1]; - struct thread *td = curthread; /* XXX */ int unwindidx; int seqcount; @@ -95,7 +94,7 @@ ffs_balloc(struct vop_balloc_args *ap) * The vnode must be locked for us to be able to safely mess * around with the inode. */ - if (VOP_ISLOCKED(vp, td) != LK_EXCLUSIVE) { + if (vn_islocked(vp) != LK_EXCLUSIVE) { panic("ffs_balloc: vnode %p not exclusively locked!", vp); } diff --git a/sys/vfs/ufs/ffs_rawread.c b/sys/vfs/ufs/ffs_rawread.c index 9118e81015..94bc6510e8 100644 --- a/sys/vfs/ufs/ffs_rawread.c +++ b/sys/vfs/ufs/ffs_rawread.c @@ -24,7 +24,7 @@ * SUCH DAMAGE. * * $FreeBSD: src/sys/ufs/ffs/ffs_rawread.c,v 1.3.2.2 2003/05/29 06:15:35 alc Exp $ - * $DragonFly: src/sys/vfs/ufs/ffs_rawread.c,v 1.25 2006/08/08 03:52:45 dillon Exp $ + * $DragonFly: src/sys/vfs/ufs/ffs_rawread.c,v 1.26 2006/08/12 00:26:21 dillon Exp $ */ #include @@ -52,12 +52,11 @@ #include static int ffs_rawread_readahead(struct vnode *vp, caddr_t udata, off_t offset, - size_t len, struct thread *td, struct buf *bp, - int *baseticks); + size_t len, struct buf *bp, int *baseticks); static int ffs_rawread_main(struct vnode *vp, struct uio *uio); -static int ffs_rawread_sync(struct vnode *vp, struct thread *td); +static int ffs_rawread_sync(struct vnode *vp); int ffs_rawread(struct vnode *vp, struct uio *uio, int *workdone); @@ -89,7 +88,7 @@ ffs_rawread_setup(void) static int -ffs_rawread_sync(struct vnode *vp, struct thread *td) +ffs_rawread_sync(struct vnode *vp) { int error; int upgraded; @@ -101,10 +100,10 @@ ffs_rawread_sync(struct vnode *vp, struct thread *td) (vp->v_flag & VOBJDIRTY) != 0) { crit_exit(); - if (VOP_ISLOCKED(vp, td) != LK_EXCLUSIVE) { + if (vn_islocked(vp) != LK_EXCLUSIVE) { upgraded = 1; /* Upgrade to exclusive lock, this might block */ - VOP_LOCK(vp, LK_UPGRADE); + vn_lock(vp, LK_UPGRADE); } else upgraded = 0; @@ -123,7 +122,7 @@ ffs_rawread_sync(struct vnode *vp, struct thread *td) if (error != 0) { crit_exit(); if (upgraded != 0) - VOP_LOCK(vp, LK_DOWNGRADE); + vn_lock(vp, LK_DOWNGRADE); return (error); } } @@ -132,7 +131,7 @@ ffs_rawread_sync(struct vnode *vp, struct thread *td) crit_exit(); if ((error = VOP_FSYNC(vp, MNT_WAIT)) != 0) { if (upgraded != 0) - VOP_LOCK(vp, LK_DOWNGRADE); + vn_lock(vp, LK_DOWNGRADE); return (error); } crit_enter(); @@ -142,7 +141,7 @@ ffs_rawread_sync(struct vnode *vp, struct thread *td) } crit_exit(); if (upgraded != 0) - VOP_LOCK(vp, LK_DOWNGRADE); + vn_lock(vp, LK_DOWNGRADE); } else { crit_exit(); } @@ -152,8 +151,7 @@ ffs_rawread_sync(struct vnode *vp, struct thread *td) static int ffs_rawread_readahead(struct vnode *vp, caddr_t udata, off_t loffset, - size_t len, struct thread *td, struct buf *bp, - int *baseticks) + size_t len, struct buf *bp, int *baseticks) { int error; int iolen; @@ -239,9 +237,7 @@ ffs_rawread_main(struct vnode *vp, struct uio *uio) caddr_t udata; int resid; off_t offset; - struct thread *td; - td = uio->uio_td ? uio->uio_td : curthread; udata = uio->uio_iov->iov_base; resid = uio->uio_resid; offset = uio->uio_offset; @@ -258,7 +254,7 @@ ffs_rawread_main(struct vnode *vp, struct uio *uio) /* XXX: Leave some bufs for swap */ bp = getpbuf(&ffsrawbufcnt); error = ffs_rawread_readahead(vp, udata, offset, resid, - td, bp, &baseticks); + bp, &baseticks); if (error != 0) break; @@ -274,7 +270,7 @@ ffs_rawread_main(struct vnode *vp, struct uio *uio) udata + bp->b_bufsize, offset + bp->b_bufsize, resid - bp->b_bufsize, - td, nbp, &baseticks); + nbp, &baseticks); if (nerror) { relpbuf(nbp, &ffsrawbufcnt); nbp = NULL; @@ -308,7 +304,7 @@ ffs_rawread_main(struct vnode *vp, struct uio *uio) /* Incomplete read. Try to read remaining part */ error = ffs_rawread_readahead( vp, udata, offset, - bp->b_bufsize - iolen, td, bp, &baseticks); + bp->b_bufsize - iolen, bp, &baseticks); if (error != 0) break; } else if (nbp != NULL) { /* Complete read with readahead */ @@ -327,7 +323,7 @@ ffs_rawread_main(struct vnode *vp, struct uio *uio) vp, udata + bp->b_bufsize, offset + bp->b_bufsize, resid - bp->b_bufsize, - td, nbp, &baseticks); + nbp, &baseticks); if (nerror != 0) { relpbuf(nbp, &ffsrawbufcnt); nbp = NULL; @@ -337,7 +333,7 @@ ffs_rawread_main(struct vnode *vp, struct uio *uio) break; } else if (resid > 0) { /* More to read, no readahead */ error = ffs_rawread_readahead(vp, udata, offset, - resid, td, bp, + resid, bp, &baseticks); if (error != 0) break; @@ -373,8 +369,7 @@ ffs_rawread(struct vnode *vp, uio->uio_iovcnt == 1 && uio->uio_segflg == UIO_USERSPACE && uio->uio_resid == uio->uio_iov->iov_len && - (((uio->uio_td != NULL) ? uio->uio_td : curthread)->td_flags & - TDF_DEADLKTREAT) == 0) { + (curthread->td_flags & TDF_DEADLKTREAT) == 0) { int secsize; /* Media sector size */ off_t filebytes; /* Bytes left of file */ int blockbytes; /* Bytes left of file in full blocks */ @@ -391,9 +386,7 @@ ffs_rawread(struct vnode *vp, (uio->uio_resid & (secsize - 1)) == 0) { /* Sync dirty pages and buffers if needed */ - error = ffs_rawread_sync(vp, - (uio->uio_td != NULL) ? - uio->uio_td : curthread); + error = ffs_rawread_sync(vp); if (error != 0) return error; diff --git a/sys/vfs/ufs/ffs_softdep.c b/sys/vfs/ufs/ffs_softdep.c index 75b2c5b13a..6df9007f51 100644 --- a/sys/vfs/ufs/ffs_softdep.c +++ b/sys/vfs/ufs/ffs_softdep.c @@ -37,7 +37,7 @@ * * from: @(#)ffs_softdep.c 9.59 (McKusick) 6/21/00 * $FreeBSD: src/sys/ufs/ffs/ffs_softdep.c,v 1.57.2.11 2002/02/05 18:46:53 dillon Exp $ - * $DragonFly: src/sys/vfs/ufs/ffs_softdep.c,v 1.47 2006/06/05 21:03:03 dillon Exp $ + * $DragonFly: src/sys/vfs/ufs/ffs_softdep.c,v 1.48 2006/08/12 00:26:21 dillon Exp $ */ /* @@ -701,7 +701,7 @@ process_worklist_item(matchmnt, flags) dirrem = WK_DIRREM(wk); vp = ufs_ihashlookup(VFSTOUFS(dirrem->dm_mnt)->um_dev, dirrem->dm_oldinum); - if (vp == NULL || !VOP_ISLOCKED(vp, curthread)) + if (vp == NULL || !vn_islocked(vp)) break; } if (wk == 0) { @@ -823,7 +823,7 @@ softdep_flushfiles(struct mount *oldmnt, int flags) } vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY); error = VOP_FSYNC(devvp, MNT_WAIT); - VOP_UNLOCK(devvp, 0); + vn_unlock(devvp); if (error) break; } @@ -4127,7 +4127,7 @@ softdep_fsync(vp) * ufs_lookup for details on possible races. */ FREE_LOCK(&lk); - VOP_UNLOCK(vp, 0); + vn_unlock(vp); error = VFS_VGET(mnt, parentino, &pvp); vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); if (error != 0) @@ -4313,7 +4313,7 @@ top: */ if (vn_isdisk(vp, NULL) && vp->v_rdev && - vp->v_rdev->si_mountpoint && !VOP_ISLOCKED(vp, NULL) && + vp->v_rdev->si_mountpoint && !vn_islocked(vp) && (error = VFS_SYNC(vp->v_rdev->si_mountpoint, MNT_WAIT)) != 0) return (error); return (0); diff --git a/sys/vfs/ufs/ffs_vfsops.c b/sys/vfs/ufs/ffs_vfsops.c index b510baed4a..130166f640 100644 --- a/sys/vfs/ufs/ffs_vfsops.c +++ b/sys/vfs/ufs/ffs_vfsops.c @@ -32,7 +32,7 @@ * * @(#)ffs_vfsops.c 8.31 (Berkeley) 5/20/95 * $FreeBSD: src/sys/ufs/ffs/ffs_vfsops.c,v 1.117.2.10 2002/06/23 22:34:52 iedowse Exp $ - * $DragonFly: src/sys/vfs/ufs/ffs_vfsops.c,v 1.46 2006/07/28 02:17:41 dillon Exp $ + * $DragonFly: src/sys/vfs/ufs/ffs_vfsops.c,v 1.47 2006/08/12 00:26:21 dillon Exp $ */ #include "opt_quota.h" @@ -225,10 +225,10 @@ ffs_mount(struct mount *mp, /* mount struct pointer */ vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY); if ((error = VOP_ACCESS(devvp, VREAD | VWRITE, cred)) != 0) { - VOP_UNLOCK(devvp, 0); + vn_unlock(devvp); return (error); } - VOP_UNLOCK(devvp, 0); + vn_unlock(devvp); } fs->fs_flags &= ~FS_UNCLEAN; @@ -306,7 +306,7 @@ ffs_mount(struct mount *mp, /* mount struct pointer */ vput(devvp); return (error); } - VOP_UNLOCK(devvp, 0); + vn_unlock(devvp); } if (mp->mnt_flag & MNT_UPDATE) { @@ -402,7 +402,7 @@ success: VOP_OPEN(devvp, FREAD|FWRITE, FSCRED, NULL); VOP_CLOSE(devvp, FREAD); } - VOP_UNLOCK(devvp, 0); + vn_unlock(devvp); ffs_sbupdate(ump, MNT_WAIT); } } @@ -454,7 +454,7 @@ ffs_reload(struct mount *mp, struct ucred *cred) devvp = VFSTOUFS(mp)->um_devvp; vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY); error = vinvalbuf(devvp, 0, 0, 0); - VOP_UNLOCK(devvp, 0); + vn_unlock(devvp); if (error) panic("ffs_reload: dirty1"); @@ -607,14 +607,14 @@ ffs_mountfs(struct vnode *devvp, struct mount *mp, struct malloc_type *mtype) return (EBUSY); vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY); error = vinvalbuf(devvp, V_SAVE, 0, 0); - VOP_UNLOCK(devvp, 0); + vn_unlock(devvp); if (error) return (error); ronly = (mp->mnt_flag & MNT_RDONLY) != 0; vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY); error = VOP_OPEN(devvp, ronly ? FREAD : FREAD|FWRITE, FSCRED, NULL); - VOP_UNLOCK(devvp, 0); + vn_unlock(devvp); if (error) return (error); dev = devvp->v_rdev; @@ -898,7 +898,7 @@ ffs_flushfiles(struct mount *mp, int flags) */ vn_lock(ump->um_devvp, LK_EXCLUSIVE | LK_RETRY); error = VOP_FSYNC(ump->um_devvp, MNT_WAIT); - VOP_UNLOCK(ump->um_devvp, 0); + vn_unlock(ump->um_devvp); return (error); } @@ -978,7 +978,7 @@ ffs_sync(struct mount *mp, int waitfor) vn_lock(ump->um_devvp, LK_EXCLUSIVE | LK_RETRY); if ((error = VOP_FSYNC(ump->um_devvp, waitfor)) != 0) scaninfo.allerror = error; - VOP_UNLOCK(ump->um_devvp, 0); + vn_unlock(ump->um_devvp); } #ifdef QUOTA ufs_qsync(mp); diff --git a/sys/vfs/ufs/ufs_lookup.c b/sys/vfs/ufs/ufs_lookup.c index 54c42c7b18..c481611e70 100644 --- a/sys/vfs/ufs/ufs_lookup.c +++ b/sys/vfs/ufs/ufs_lookup.c @@ -37,7 +37,7 @@ * * @(#)ufs_lookup.c 8.15 (Berkeley) 6/16/95 * $FreeBSD: src/sys/ufs/ufs/ufs_lookup.c,v 1.33.2.7 2001/09/22 19:22:13 iedowse Exp $ - * $DragonFly: src/sys/vfs/ufs/ufs_lookup.c,v 1.26 2006/05/26 17:07:48 dillon Exp $ + * $DragonFly: src/sys/vfs/ufs/ufs_lookup.c,v 1.27 2006/08/12 00:26:22 dillon Exp $ */ #include "opt_ufs.h" @@ -425,7 +425,7 @@ notfound: * information cannot be used. */ if (!lockparent) { - VOP_UNLOCK(vdp, 0); + vn_unlock(vdp); cnp->cn_flags |= CNP_PDIRUNLOCK; } return (EJUSTRETURN); @@ -484,7 +484,7 @@ found: return (0); } if (flags & CNP_ISDOTDOT) - VOP_UNLOCK(vdp, 0); /* race to get the inode */ + vn_unlock(vdp); /* race to get the inode */ error = VFS_VGET(vdp->v_mount, dp->i_ino, &tdp); if (flags & CNP_ISDOTDOT) { if (vn_lock(vdp, LK_EXCLUSIVE | LK_RETRY) != 0) @@ -507,7 +507,7 @@ found: } *vpp = tdp; if (!lockparent) { - VOP_UNLOCK(vdp, 0); + vn_unlock(vdp); cnp->cn_flags |= CNP_PDIRUNLOCK; } return (0); @@ -529,7 +529,7 @@ found: if (dp->i_number == dp->i_ino) return (EISDIR); if (flags & CNP_ISDOTDOT) - VOP_UNLOCK(vdp, 0); /* race to get the inode */ + vn_unlock(vdp); /* race to get the inode */ error = VFS_VGET(vdp->v_mount, dp->i_ino, &tdp); if (flags & CNP_ISDOTDOT) { if (vn_lock(vdp, LK_EXCLUSIVE | LK_RETRY) != 0) @@ -539,7 +539,7 @@ found: return (error); *vpp = tdp; if (!lockparent) { - VOP_UNLOCK(vdp, 0); + vn_unlock(vdp); cnp->cn_flags |= CNP_PDIRUNLOCK; } return (0); @@ -566,7 +566,7 @@ found: */ pdp = vdp; if (flags & CNP_ISDOTDOT) { - VOP_UNLOCK(pdp, 0); /* race to get the inode */ + vn_unlock(pdp); /* race to get the inode */ cnp->cn_flags |= CNP_PDIRUNLOCK; if ((error = VFS_VGET(vdp->v_mount, dp->i_ino, &tdp)) != 0) { if (vn_lock(pdp, LK_EXCLUSIVE | LK_RETRY) == 0) @@ -589,7 +589,7 @@ found: if (error) return (error); if (!lockparent) { - VOP_UNLOCK(pdp, 0); + vn_unlock(pdp); cnp->cn_flags |= CNP_PDIRUNLOCK; } *vpp = tdp; @@ -899,7 +899,7 @@ ufs_direnter(struct vnode *dvp, struct vnode *tvp, struct direct *dirp, */ if (error == 0 && dp->i_endoff && dp->i_endoff < dp->i_size) { if (tvp != NULL) - VOP_UNLOCK(tvp, 0); + vn_unlock(tvp); #ifdef UFS_DIRHASH if (dp->i_dirhash != NULL) ufsdirhash_dirtrunc(dp, dp->i_endoff); diff --git a/sys/vfs/ufs/ufs_quota.c b/sys/vfs/ufs/ufs_quota.c index 0e34f0dc3a..fafdfa4fae 100644 --- a/sys/vfs/ufs/ufs_quota.c +++ b/sys/vfs/ufs/ufs_quota.c @@ -35,7 +35,7 @@ * * @(#)ufs_quota.c 8.5 (Berkeley) 5/20/95 * $FreeBSD: src/sys/ufs/ufs/ufs_quota.c,v 1.27.2.3 2002/01/15 10:33:32 phk Exp $ - * $DragonFly: src/sys/vfs/ufs/ufs_quota.c,v 1.22 2006/05/06 16:20:19 dillon Exp $ + * $DragonFly: src/sys/vfs/ufs/ufs_quota.c,v 1.23 2006/08/12 00:26:22 dillon Exp $ */ #include @@ -394,7 +394,7 @@ ufs_quotaon(struct ucred *cred, struct mount *mp, int type, caddr_t fname) nd.nl_open_vp = NULL; nlookup_done(&nd); - VOP_UNLOCK(vp, 0); + vn_unlock(vp); if (*vpp != vp) ufs_quotaoff(mp, type); ump->um_qflags[type] |= QTF_OPENING; @@ -785,7 +785,7 @@ ufs_dqget(struct vnode *vp, u_long id, struct ufsmount *ump, int type, if (auio.uio_resid == sizeof(struct ufs_dqblk) && error == 0) bzero((caddr_t)&dq->dq_dqb, sizeof(struct ufs_dqblk)); if (vp != dqvp) - VOP_UNLOCK(dqvp, 0); + vn_unlock(dqvp); if (dq->dq_flags & DQ_WANT) wakeup((caddr_t)dq); dq->dq_flags = 0; @@ -870,7 +870,7 @@ ufs_dqsync(struct vnode *vp, struct ufs_dquot *dq) (void) tsleep((caddr_t)dq, 0, "dqsync", 0); if ((dq->dq_flags & DQ_MOD) == 0) { if (vp != dqvp) - VOP_UNLOCK(dqvp, 0); + vn_unlock(dqvp); return (0); } } @@ -891,7 +891,7 @@ ufs_dqsync(struct vnode *vp, struct ufs_dquot *dq) wakeup((caddr_t)dq); dq->dq_flags &= ~(DQ_MOD|DQ_LOCK|DQ_WANT); if (vp != dqvp) - VOP_UNLOCK(dqvp, 0); + vn_unlock(dqvp); return (error); } diff --git a/sys/vfs/ufs/ufs_vnops.c b/sys/vfs/ufs/ufs_vnops.c index b561f7b330..57d915bf03 100644 --- a/sys/vfs/ufs/ufs_vnops.c +++ b/sys/vfs/ufs/ufs_vnops.c @@ -37,7 +37,7 @@ * * @(#)ufs_vnops.c 8.27 (Berkeley) 5/27/95 * $FreeBSD: src/sys/ufs/ufs/ufs_vnops.c,v 1.131.2.8 2003/01/02 17:26:19 bde Exp $ - * $DragonFly: src/sys/vfs/ufs/ufs_vnops.c,v 1.53 2006/07/19 06:08:14 dillon Exp $ + * $DragonFly: src/sys/vfs/ufs/ufs_vnops.c,v 1.54 2006/08/12 00:26:22 dillon Exp $ */ #include "opt_quota.h" @@ -777,7 +777,7 @@ ufs_link(struct vop_old_link_args *ap) } out1: if (tdvp != vp) - VOP_UNLOCK(vp, 0); + vn_unlock(vp); out2: VN_KNOTE(vp, NOTE_LINK); VN_KNOTE(tdvp, NOTE_WRITE); @@ -923,13 +923,13 @@ abortit: dp = VTOI(fdvp); ip = VTOI(fvp); if (ip->i_nlink >= LINK_MAX) { - VOP_UNLOCK(fvp, 0); + vn_unlock(fvp); error = EMLINK; goto abortit; } if ((ip->i_flags & (NOUNLINK | IMMUTABLE | APPEND)) || (dp->i_flags & APPEND)) { - VOP_UNLOCK(fvp, 0); + vn_unlock(fvp); error = EPERM; goto abortit; } @@ -940,7 +940,7 @@ abortit: if ((fcnp->cn_namelen == 1 && fcnp->cn_nameptr[0] == '.') || dp == ip || (fcnp->cn_flags | tcnp->cn_flags) & CNP_ISDOTDOT || (ip->i_flag & IN_RENAME)) { - VOP_UNLOCK(fvp, 0); + vn_unlock(fvp); error = EINVAL; goto abortit; } @@ -977,7 +977,7 @@ abortit: softdep_change_linkcnt(ip); if ((error = ffs_update(fvp, !(DOINGSOFTDEP(fvp) | DOINGASYNC(fvp)))) != 0) { - VOP_UNLOCK(fvp, 0); + vn_unlock(fvp); goto bad; } @@ -992,7 +992,7 @@ abortit: * call to checkpath(). */ error = VOP_ACCESS(fvp, VWRITE, tcnp->cn_cred); - VOP_UNLOCK(fvp, 0); + vn_unlock(fvp); /* * We are now back to where we were in that fvp, fdvp are unlocked @@ -2378,9 +2378,7 @@ static struct vop_ops ufs_vnode_vops = { .vop_old_create = ufs_create, .vop_getattr = ufs_getattr, .vop_inactive = ufs_inactive, - .vop_islocked = vop_stdislocked, .vop_old_link = ufs_link, - .vop_lock = vop_stdlock, .vop_old_mkdir = ufs_mkdir, .vop_old_mknod = ufs_mknod, .vop_mmap = ufs_mmap, @@ -2398,7 +2396,6 @@ static struct vop_ops ufs_vnode_vops = { .vop_setattr = ufs_setattr, .vop_strategy = ufs_strategy, .vop_old_symlink = ufs_symlink, - .vop_unlock = vop_stdunlock, .vop_old_whiteout = ufs_whiteout }; @@ -2409,13 +2406,10 @@ static struct vop_ops ufs_spec_vops = { .vop_close = ufsspec_close, .vop_getattr = ufs_getattr, .vop_inactive = ufs_inactive, - .vop_islocked = vop_stdislocked, - .vop_lock = vop_stdlock, .vop_print = ufs_print, .vop_read = ufsspec_read, .vop_reclaim = ufs_reclaim, .vop_setattr = ufs_setattr, - .vop_unlock = vop_stdunlock, .vop_write = ufsspec_write }; @@ -2426,14 +2420,11 @@ static struct vop_ops ufs_fifo_vops = { .vop_close = ufsfifo_close, .vop_getattr = ufs_getattr, .vop_inactive = ufs_inactive, - .vop_islocked = vop_stdislocked, .vop_kqfilter = ufsfifo_kqfilter, - .vop_lock = vop_stdlock, .vop_print = ufs_print, .vop_read = ufsfifo_read, .vop_reclaim = ufs_reclaim, .vop_setattr = ufs_setattr, - .vop_unlock = vop_stdunlock, .vop_write = ufsfifo_write }; diff --git a/sys/vfs/union/union_subr.c b/sys/vfs/union/union_subr.c index 77f41a9633..3146a9c283 100644 --- a/sys/vfs/union/union_subr.c +++ b/sys/vfs/union/union_subr.c @@ -36,7 +36,7 @@ * * @(#)union_subr.c 8.20 (Berkeley) 5/20/95 * $FreeBSD: src/sys/miscfs/union/union_subr.c,v 1.43.2.2 2001/12/25 01:44:45 dillon Exp $ - * $DragonFly: src/sys/vfs/union/union_subr.c,v 1.25 2006/06/01 06:10:58 dillon Exp $ + * $DragonFly: src/sys/vfs/union/union_subr.c,v 1.26 2006/08/12 00:26:22 dillon Exp $ */ #include @@ -431,7 +431,7 @@ loop: * while moving up the tree). */ vref(dvp); - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); error = vn_lock(un->un_vnode, LK_EXCLUSIVE); vn_lock(dvp, LK_EXCLUSIVE | LK_RETRY); vrele(dvp); @@ -726,7 +726,7 @@ union_copyup(struct union_node *un, int docopy, struct ucred *cred, */ vn_lock(un->un_lowervp, LK_EXCLUSIVE | LK_RETRY); error = VOP_ACCESS(un->un_lowervp, VREAD, cred); - VOP_UNLOCK(un->un_lowervp, 0); + vn_unlock(un->un_lowervp); if (error) return (error); @@ -746,14 +746,14 @@ union_copyup(struct union_node *un, int docopy, struct ucred *cred, error = VOP_OPEN(lvp, FREAD, cred, NULL); if (error == 0) { error = union_copyfile(lvp, uvp, cred, td); - VOP_UNLOCK(lvp, 0); + vn_unlock(lvp); (void) VOP_CLOSE(lvp, FREAD); } if (error == 0) UDEBUG(("union: copied up %s\n", un->un_path)); } - VOP_UNLOCK(uvp, 0); + vn_unlock(uvp); union_newupper(un, uvp); KASSERT(uvp->v_usecount > 0, ("copy: uvp refcount 0: %d", uvp->v_usecount)); union_vn_close(uvp, FWRITE, cred); @@ -822,7 +822,7 @@ union_relookup(struct union_mount *um, struct vnode *dvp, struct vnode **vpp, cn->cn_consume = cnp->cn_consume; vref(dvp); - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); /* * Pass dvp unlocked and referenced on call to relookup(). @@ -1173,7 +1173,7 @@ union_dircache(struct vnode *vp, struct thread *td) un->un_dircache = dircache; out: - VOP_UNLOCK(vp, 0); + vn_unlock(vp); return (nvp); } @@ -1243,7 +1243,7 @@ union_dircheck(struct thread *td, struct vnode **vp, struct file *fp) vput(lvp); return (error); } - VOP_UNLOCK(lvp, 0); + vn_unlock(lvp); fp->f_data = lvp; fp->f_offset = 0; error = vn_close(*vp, FREAD); diff --git a/sys/vfs/union/union_vfsops.c b/sys/vfs/union/union_vfsops.c index 84e1bf2ffc..4cb7b5b14b 100644 --- a/sys/vfs/union/union_vfsops.c +++ b/sys/vfs/union/union_vfsops.c @@ -36,7 +36,7 @@ * * @(#)union_vfsops.c 8.20 (Berkeley) 5/20/95 * $FreeBSD: src/sys/miscfs/union/union_vfsops.c,v 1.39.2.2 2001/10/25 19:18:53 dillon Exp $ - * $DragonFly: src/sys/vfs/union/union_vfsops.c,v 1.24 2006/07/18 22:22:16 dillon Exp $ + * $DragonFly: src/sys/vfs/union/union_vfsops.c,v 1.25 2006/08/12 00:26:22 dillon Exp $ */ /* @@ -125,7 +125,7 @@ union_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred) * Unlock lower node to avoid deadlock. */ if (lowerrootvp->v_tag == VT_UNION) - VOP_UNLOCK(lowerrootvp, 0); + vn_unlock(lowerrootvp); #endif /* @@ -142,7 +142,7 @@ union_mount(struct mount *mp, char *path, caddr_t data, struct ucred *cred) goto bad; UDEBUG(("mount_root UPPERVP %p locked = %d\n", upperrootvp, - VOP_ISLOCKED(upperrootvp, NULL))); + vn_islocked(upperrootvp))); /* * Check multi union mount to avoid `lock myself again' panic. @@ -364,7 +364,7 @@ union_root(struct mount *mp, struct vnode **vpp) * it. */ UDEBUG(("union_root UPPERVP %p locked = %d\n", um->um_uppervp, - VOP_ISLOCKED(um->um_uppervp, NULL))); + vn_islocked(um->um_uppervp))); vref(um->um_uppervp); if (um->um_lowervp) @@ -374,7 +374,7 @@ union_root(struct mount *mp, struct vnode **vpp) um->um_uppervp, um->um_lowervp, 1); UDEBUG(("error %d\n", error)); UDEBUG(("union_root2 UPPERVP %p locked = %d\n", um->um_uppervp, - VOP_ISLOCKED(um->um_uppervp, NULL))); + vn_islocked(um->um_uppervp))); return (error); } diff --git a/sys/vfs/union/union_vnops.c b/sys/vfs/union/union_vnops.c index d311bd2b91..5d9c696ef8 100644 --- a/sys/vfs/union/union_vnops.c +++ b/sys/vfs/union/union_vnops.c @@ -36,7 +36,7 @@ * * @(#)union_vnops.c 8.32 (Berkeley) 6/23/95 * $FreeBSD: src/sys/miscfs/union/union_vnops.c,v 1.72 1999/12/15 23:02:14 eivind Exp $ - * $DragonFly: src/sys/vfs/union/union_vnops.c,v 1.32 2006/08/11 01:55:02 dillon Exp $ + * $DragonFly: src/sys/vfs/union/union_vnops.c,v 1.33 2006/08/12 00:26:22 dillon Exp $ */ #include @@ -78,7 +78,6 @@ static int union_getattr (struct vop_getattr_args *ap); static int union_inactive (struct vop_inactive_args *ap); static int union_ioctl (struct vop_ioctl_args *ap); static int union_link (struct vop_old_link_args *ap); -static int union_lock (struct vop_lock_args *ap); static int union_lookup (struct vop_old_lookup_args *ap); static int union_lookup1 (struct vnode *udvp, struct vnode **dvp, struct vnode **vpp, @@ -103,7 +102,6 @@ static int union_strategy (struct vop_strategy_args *ap); static int union_getpages (struct vop_getpages_args *ap); static int union_putpages (struct vop_putpages_args *ap); static int union_symlink (struct vop_old_symlink_args *ap); -static int union_unlock (struct vop_unlock_args *ap); static int union_whiteout (struct vop_old_whiteout_args *ap); static int union_write (struct vop_read_args *ap); @@ -358,10 +356,10 @@ union_lookup(struct vop_old_lookup_args *ap) uerror, upperdvp, upperdvp->v_usecount, - VOP_ISLOCKED(upperdvp, NULL), + vn_islocked(upperdvp), uppervp, (uppervp ? uppervp->v_usecount : -99), - (uppervp ? VOP_ISLOCKED(uppervp, NULL) : -99) + (uppervp ? vn_islocked(uppervp) : -99) )); /* @@ -528,11 +526,11 @@ union_lookup(struct vop_old_lookup_args *ap) */ if (uppervp && uppervp != upperdvp) - VOP_UNLOCK(uppervp, 0); + vn_unlock(uppervp); if (lowervp) - VOP_UNLOCK(lowervp, 0); + vn_unlock(lowervp); if (upperdvp) - VOP_UNLOCK(upperdvp, 0); + vn_unlock(upperdvp); error = union_allocvp(ap->a_vpp, dvp->v_mount, dvp, upperdvp, cnp, uppervp, lowervp, 1); @@ -594,7 +592,7 @@ out: if (*ap->a_vpp != dvp) { if ((error == 0 || error == EJUSTRETURN) && !lockparent) { - VOP_UNLOCK(dvp, 0); + vn_unlock(dvp); } } @@ -638,7 +636,7 @@ union_create(struct vop_old_create_args *ap) error = VOP_CREATE(dvp, &vp, cnp, ap->a_vap); if (error == 0) { mp = ap->a_dvp->v_mount; - VOP_UNLOCK(vp, 0); + vn_unlock(vp); UDEBUG(("ALLOCVP-1 FROM %p REFS %d\n", vp, vp->v_usecount)); error = union_allocvp(ap->a_vpp, mp, NULLVP, NULLVP, cnp, vp, NULLVP, 1); @@ -855,7 +853,7 @@ union_access(struct vop_access_args *ap) error = vop_access_ap(ap); } } - VOP_UNLOCK(vp, 0); + vn_unlock(vp); } return(error); } @@ -1258,7 +1256,7 @@ union_link(struct vop_old_link_args *ap) if (dun->un_uppervp == tun->un_dirvp) { if (dun->un_flags & UN_ULOCK) { dun->un_flags &= ~UN_ULOCK; - VOP_UNLOCK(dun->un_uppervp, 0); + vn_unlock(dun->un_uppervp); } } #endif @@ -1270,7 +1268,7 @@ union_link(struct vop_old_link_args *ap) dun->un_flags |= UN_ULOCK; } #endif - VOP_UNLOCK(ap->a_vp, 0); + vn_unlock(ap->a_vp); } vp = tun->un_uppervp; } @@ -1288,7 +1286,7 @@ union_link(struct vop_old_link_args *ap) if ((tdvp = union_lock_upper(dun, td)) == NULLVP) return (EROFS); - VOP_UNLOCK(ap->a_tdvp, 0); /* unlock calling node */ + vn_unlock(ap->a_tdvp); /* unlock calling node */ error = VOP_LINK(tdvp, vp, cnp); /* call link on upper */ /* @@ -1352,7 +1350,7 @@ union_rename(struct vop_old_rename_args *ap) case VREG: vn_lock(un->un_vnode, LK_EXCLUSIVE | LK_RETRY); error = union_copyup(un, 1, ap->a_fcnp->cn_cred, ap->a_fcnp->cn_td); - VOP_UNLOCK(un->un_vnode, 0); + vn_unlock(un->un_vnode); if (error) goto bad; break; @@ -1371,9 +1369,9 @@ union_rename(struct vop_old_rename_args *ap) vn_lock(fdvp, LK_EXCLUSIVE | LK_RETRY); error = union_mkshadow(um, fdvp, ap->a_fcnp, &un->un_uppervp); - VOP_UNLOCK(fdvp, 0); + vn_unlock(fdvp); if (un->un_uppervp) - VOP_UNLOCK(un->un_uppervp, 0); + vn_unlock(un->un_uppervp); if (error) goto bad; break; @@ -1482,7 +1480,7 @@ union_mkdir(struct vop_old_mkdir_args *ap) union_unlock_upper(upperdvp, td); if (error == 0) { - VOP_UNLOCK(vp, 0); + vn_unlock(vp); UDEBUG(("ALLOCVP-2 FROM %p REFS %d\n", vp, vp->v_usecount)); error = union_allocvp(ap->a_vpp, ap->a_dvp->v_mount, ap->a_dvp, NULLVP, cnp, vp, NULLVP, 1); @@ -1639,7 +1637,7 @@ union_inactive(struct vop_inactive_args *ap) #if 0 if ((un->un_flags & UN_ULOCK) && un->un_uppervp) { un->un_flags &= ~UN_ULOCK; - VOP_UNLOCK(un->un_uppervp, 0); + vn_unlock(un->un_uppervp); } #endif @@ -1660,79 +1658,6 @@ union_reclaim(struct vop_reclaim_args *ap) return (0); } -static int -union_lock(struct vop_lock_args *ap) -{ -#if 0 - struct vnode *vp = ap->a_vp; - struct thread *td = ap->a_td; - int flags = ap->a_flags; - struct union_node *un; -#endif - int error; - - error = vop_stdlock(ap); -#if 0 - un = VTOUNION(vp); - - if (error == 0) { - /* - * Lock the upper if it exists and this is an exclusive lock - * request. - */ - if (un->un_uppervp != NULLVP && - (flags & LK_TYPE_MASK) == LK_EXCLUSIVE) { - if ((un->un_flags & UN_ULOCK) == 0 && vp->v_usecount) { - error = vn_lock(un->un_uppervp, flags); - if (error) { - struct vop_unlock_args uap = { 0 }; - uap.a_vp = ap->a_vp; - uap.a_flags = ap->a_flags; - vop_stdunlock(&uap); - return (error); - } - un->un_flags |= UN_ULOCK; - } - } - } -#endif - return (error); -} - -/* - * union_unlock: - * - * Unlock our union node. This also unlocks uppervp. - * - * union_unlock(struct vnode *a_vp, int a_flags, struct thread *a_td) - */ -static int -union_unlock(struct vop_unlock_args *ap) -{ - int error; -#if 0 - struct union_node *un = VTOUNION(ap->a_vp); - - KASSERT((un->un_uppervp == NULL || un->un_uppervp->v_usecount > 0), ("uppervp usecount is 0")); -#endif - - error = vop_stdunlock(ap); -#if 0 - - /* - * If no exclusive locks remain and we are holding an uppervp lock, - * remove the uppervp lock. - */ - - if ((un->un_flags & UN_ULOCK) && - lockstatus(&un->un_lock, NULL) != LK_EXCLUSIVE) { - un->un_flags &= ~UN_ULOCK; - VOP_UNLOCK(un->un_uppervp, LK_EXCLUSIVE); - } -#endif - return(error); -} - /* * union_bmap: * @@ -1848,9 +1773,7 @@ struct vop_ops union_vnode_vops = { .vop_getattr = union_getattr, .vop_inactive = union_inactive, .vop_ioctl = union_ioctl, - .vop_islocked = vop_stdislocked, .vop_old_link = union_link, - .vop_lock = union_lock, .vop_old_lookup = union_lookup, .vop_old_mkdir = union_mkdir, .vop_old_mknod = union_mknod, @@ -1870,7 +1793,6 @@ struct vop_ops union_vnode_vops = { .vop_setattr = union_setattr, .vop_strategy = union_strategy, .vop_old_symlink = union_symlink, - .vop_unlock = union_unlock, .vop_old_whiteout = union_whiteout, .vop_write = union_write }; diff --git a/sys/vm/vm_contig.c b/sys/vm/vm_contig.c index 724f278efe..d4b0e4f88f 100644 --- a/sys/vm/vm_contig.c +++ b/sys/vm/vm_contig.c @@ -64,7 +64,7 @@ * SUCH DAMAGE. * * from: @(#)vm_page.c 7.4 (Berkeley) 5/7/91 - * $DragonFly: src/sys/vm/vm_contig.c,v 1.16 2006/05/05 21:15:11 dillon Exp $ + * $DragonFly: src/sys/vm/vm_contig.c,v 1.17 2006/08/12 00:26:22 dillon Exp $ */ /* @@ -159,7 +159,7 @@ vm_contig_pg_clean(int queue) if (object->type == OBJT_VNODE) { vn_lock(object->handle, LK_EXCLUSIVE|LK_RETRY); vm_object_page_clean(object, 0, 0, OBJPC_SYNC); - VOP_UNLOCK(((struct vnode *)object->handle), 0); + vn_unlock(((struct vnode *)object->handle)); return (TRUE); } else if (object->type == OBJT_SWAP || object->type == OBJT_DEFAULT) { diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c index e9c62325ed..79ca1ecaaa 100644 --- a/sys/vm/vm_map.c +++ b/sys/vm/vm_map.c @@ -62,7 +62,7 @@ * rights to redistribute these changes. * * $FreeBSD: src/sys/vm/vm_map.c,v 1.187.2.19 2003/05/27 00:47:02 alc Exp $ - * $DragonFly: src/sys/vm/vm_map.c,v 1.45 2006/08/08 03:52:45 dillon Exp $ + * $DragonFly: src/sys/vm/vm_map.c,v 1.46 2006/08/12 00:26:22 dillon Exp $ */ /* @@ -2215,7 +2215,7 @@ vm_map_clean(vm_map_t map, vm_offset_t start, vm_offset_t end, boolean_t syncio, OFF_TO_IDX(offset), OFF_TO_IDX(offset + size + PAGE_MASK), flags); - VOP_UNLOCK(((struct vnode *)object->handle), 0); + vn_unlock(((struct vnode *)object->handle)); vm_object_deallocate(object); } if (object && invalidate && diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c index 91e77f022c..cf953d87de 100644 --- a/sys/vm/vm_pageout.c +++ b/sys/vm/vm_pageout.c @@ -66,7 +66,7 @@ * rights to redistribute these changes. * * $FreeBSD: src/sys/vm/vm_pageout.c,v 1.151.2.15 2002/12/29 18:21:04 dillon Exp $ - * $DragonFly: src/sys/vm/vm_pageout.c,v 1.23 2006/05/25 07:36:37 dillon Exp $ + * $DragonFly: src/sys/vm/vm_pageout.c,v 1.24 2006/08/12 00:26:22 dillon Exp $ */ /* @@ -626,11 +626,10 @@ vm_pageout_map_deactivate_pages(vm_map_t map, vm_pindex_t desired) #endif /* - * Don't try to be fancy - being fancy can lead to VOP_LOCK's and therefore - * to vnode deadlocks. We only do it for OBJT_DEFAULT and OBJT_SWAP objects - * which we know can be trivially freed. + * Don't try to be fancy - being fancy can lead to vnode deadlocks. We + * only do it for OBJT_DEFAULT and OBJT_SWAP objects which we know can + * be trivially freed. */ - void vm_pageout_page_free(vm_page_t m) { vm_object_t object = m->object; diff --git a/sys/vm/vm_swap.c b/sys/vm/vm_swap.c index 03d923dd4f..d608d27c0f 100644 --- a/sys/vm/vm_swap.c +++ b/sys/vm/vm_swap.c @@ -32,7 +32,7 @@ * * @(#)vm_swap.c 8.5 (Berkeley) 2/17/94 * $FreeBSD: src/sys/vm/vm_swap.c,v 1.96.2.2 2001/10/14 18:46:47 iedowse Exp $ - * $DragonFly: src/sys/vm/vm_swap.c,v 1.27 2006/07/18 22:22:16 dillon Exp $ + * $DragonFly: src/sys/vm/vm_swap.c,v 1.28 2006/08/12 00:26:22 dillon Exp $ */ #include "opt_swap.h" @@ -249,7 +249,6 @@ swaponvp(struct thread *td, struct vnode *vp, u_long nblks) vx_unlock(swapdev_vp); } - ASSERT_VOP_UNLOCKED(vp, "swaponvp"); for (sp = swdevt, index = 0 ; index < nswdev; index++, sp++) { if (sp->sw_vp == vp) return EBUSY; @@ -261,7 +260,7 @@ swaponvp(struct thread *td, struct vnode *vp, u_long nblks) found: vn_lock(vp, LK_EXCLUSIVE | LK_RETRY); error = VOP_OPEN(vp, FREAD | FWRITE, cred, NULL); - VOP_UNLOCK(vp, 0); + vn_unlock(vp); if (error) return (error); -- 2.41.0