Index: external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ioctl.c =================================================================== RCS file: /cvsroot/src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ioctl.c,v retrieving revision 1.9 diff -p -u -4 -r1.9 zfs_ioctl.c --- external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ioctl.c 4 Mar 2013 01:14:35 -0000 1.9 +++ external/cddl/osnet/dist/uts/common/fs/zfs/zfs_ioctl.c 15 Jan 2014 11:56:37 -0000 @@ -4214,9 +4214,8 @@ zfs_ioc_smb_acl(zfs_cmd_t *zc) if (nvlist_lookup_string(nvlist, ZFS_SMB_ACL_SRC, &src) || nvlist_lookup_string(nvlist, ZFS_SMB_ACL_TARGET, &target)) { VN_RELE(vp); - VN_RELE(ZTOV(sharedir)); ZFS_EXIT(zfsvfs); nvlist_free(nvlist); return (error); } @@ -4234,9 +4233,8 @@ zfs_ioc_smb_acl(zfs_cmd_t *zc) break; } VN_RELE(vp); - VN_RELE(ZTOV(sharedir)); ZFS_EXIT(zfsvfs); return (error); Index: external/cddl/osnet/dist/uts/common/fs/zfs/zfs_replay.c =================================================================== RCS file: /cvsroot/src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_replay.c,v retrieving revision 1.7 diff -p -u -4 -r1.7 zfs_replay.c --- external/cddl/osnet/dist/uts/common/fs/zfs/zfs_replay.c 30 Nov 2010 10:45:27 -0000 1.7 +++ external/cddl/osnet/dist/uts/common/fs/zfs/zfs_replay.c 15 Jan 2014 11:56:37 -0000 @@ -399,10 +399,8 @@ zfs_replay_create_acl(zfsvfs_t *zfsvfs, bail: if (error == 0 && vp != NULL) VN_RELE(vp); - VN_RELE(ZTOV(dzp)); - if (zfsvfs->z_fuid_replay) zfs_fuid_info_free(zfsvfs->z_fuid_replay); zfsvfs->z_fuid_replay = NULL; @@ -525,18 +523,15 @@ zfs_replay_create(zfsvfs_t *zfsvfs, lr_c break; default: error = ENOTSUP; } - VOP_UNLOCK(ZTOV(dzp)); out: if (error == 0 && vp != NULL) { VOP_UNLOCK(vp); VN_RELE(vp); } - VN_RELE(ZTOV(dzp)); - if (zfsvfs->z_fuid_replay) zfs_fuid_info_free(zfsvfs->z_fuid_replay); zfsvfs->z_fuid_replay = NULL; return (error); Index: external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c =================================================================== RCS file: /cvsroot/src/external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c,v retrieving revision 1.14 diff -p -u -4 -r1.14 zfs_vnops.c --- external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c 18 Oct 2012 14:22:57 -0000 1.14 +++ external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c 15 Jan 2014 11:56:37 -0000 @@ -4945,9 +4945,9 @@ out: static int zfs_netbsd_create(void *v) { - struct vop_create_args /* { + struct vop_create_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -4995,14 +4995,8 @@ zfs_netbsd_create(void *v) out: KASSERT(VOP_ISLOCKED(dvp) == LK_EXCLUSIVE); KASSERT((*vpp == NULL) || (VOP_ISLOCKED(*vpp) == LK_EXCLUSIVE)); - /* - * Unlock and release dvp because the VOP_CREATE protocol is insane. - */ - VOP_UNLOCK(dvp); - VN_RELE(dvp); - return (error); } static int @@ -5056,9 +5050,9 @@ zfs_netbsd_remove(void *v) static int zfs_netbsd_mkdir(void *v) { - struct vop_mkdir_args /* { + struct vop_mkdir_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -5103,14 +5097,8 @@ zfs_netbsd_mkdir(void *v) out: KASSERT(VOP_ISLOCKED(dvp) == LK_EXCLUSIVE); KASSERT((*vpp == NULL) || (VOP_ISLOCKED(*vpp) == LK_EXCLUSIVE)); - /* - * Unlock and release dvp because the VOP_MKDIR protocol is insane. - */ - VOP_UNLOCK(dvp); - VN_RELE(dvp); - return (error); } static int @@ -5372,9 +5360,9 @@ zfs_netbsd_rename(void *v) static int zfs_netbsd_symlink(void *v) { - struct vop_symlink_args /* { + struct vop_symlink_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -5424,14 +5412,8 @@ zfs_netbsd_symlink(void *v) out: KASSERT(VOP_ISLOCKED(dvp) == LK_EXCLUSIVE); KASSERT((*vpp == NULL) || (VOP_ISLOCKED(*vpp) == LK_EXCLUSIVE)); - /* - * Unlock and release dvp because the VOP_SYMLINK protocol is insane. - */ - VOP_UNLOCK(dvp); - VN_RELE(dvp); - return (error); } #ifdef PORT_SOLARIS Index: lib/libp2k/p2k.c =================================================================== RCS file: /cvsroot/src/lib/libp2k/p2k.c,v retrieving revision 1.60 diff -p -u -4 -r1.60 p2k.c --- lib/libp2k/p2k.c 23 Nov 2012 14:27:14 -0000 1.60 +++ lib/libp2k/p2k.c 15 Jan 2014 11:57:23 -0000 @@ -803,9 +803,9 @@ do_makenode(struct puffs_usermount *pu, rv = makefn(dvp, &vp, cn, va_x); } else { rv = symfn(dvp, &vp, cn, va_x, link_target); } - assert(RUMP_VOP_ISLOCKED(dvp) == 0); + RUMP_VOP_UNLOCK(dvp); freecn(cn); if (rv == 0) { RUMP_VOP_UNLOCK(vp); Index: sys/coda/coda_vnops.c =================================================================== RCS file: /cvsroot/src/sys/coda/coda_vnops.c,v retrieving revision 1.91 diff -p -u -4 -r1.91 coda_vnops.c --- sys/coda/coda_vnops.c 17 Oct 2013 20:55:30 -0000 1.91 +++ sys/coda/coda_vnops.c 15 Jan 2014 11:57:38 -0000 @@ -1023,9 +1023,9 @@ coda_lookup(void *v) int coda_create(void *v) { /* true args */ - struct vop_create_args *ap = v; + struct vop_create_v2_args *ap = v; vnode_t *dvp = ap->a_dvp; struct cnode *dcp = VTOC(dvp); struct vattr *va = ap->a_vap; int exclusive = 1; @@ -1095,13 +1095,8 @@ coda_create(void *v) CODADEBUG(CODA_CREATE, myprintf(("%s: create error %d\n", __func__, error));) } - /* - * vnodeops(9) says that we must unlock the parent and lock the child. - * XXX Should we lock the child first? - */ - vput(dvp); if (!error) { #ifdef CODA_VERBOSE if ((cnp->cn_flags & LOCKLEAF) == 0) /* This should not happen; flags are for lookup only. */ @@ -1356,9 +1351,9 @@ coda_rename(void *v) int coda_mkdir(void *v) { /* true args */ - struct vop_mkdir_args *ap = v; + struct vop_mkdir_v2_args *ap = v; vnode_t *dvp = ap->a_dvp; struct cnode *dcp = VTOC(dvp); struct componentname *cnp = ap->a_cnp; struct vattr *va = ap->a_vap; @@ -1419,15 +1414,8 @@ coda_mkdir(void *v) *vpp = (vnode_t *)0; CODADEBUG(CODA_MKDIR, myprintf(("%s error %d\n", __func__, error));) } - /* - * Currently, all mkdirs explicitly vput their dvp's. - * It also appears that we *must* lock the vpp, since - * lockleaf isn't set, but someone down the road is going - * to try to unlock the new directory. - */ - vput(dvp); if (!error) { if ((error = vn_lock(*ap->a_vpp, LK_EXCLUSIVE))) { panic("%s: couldn't lock child", __func__); } @@ -1506,9 +1494,9 @@ exit: int coda_symlink(void *v) { /* true args */ - struct vop_symlink_args *ap = v; + struct vop_symlink_v2_args *ap = v; vnode_t *dvp = ap->a_dvp; struct cnode *dcp = VTOC(dvp); /* a_vpp is used in place below */ struct componentname *cnp = ap->a_cnp; @@ -1580,11 +1568,8 @@ coda_symlink(void *v) /* Either an error occurs, or ap->a_vpp is locked. */ } exit: - /* unlock and deference parent */ - vput(dvp); - CODADEBUG(CODA_SYMLINK, myprintf(("in symlink result %d\n",error)); ) return(error); } Index: sys/fs/adosfs/advnops.c =================================================================== RCS file: /cvsroot/src/sys/fs/adosfs/advnops.c,v retrieving revision 1.41 diff -p -u -4 -r1.41 advnops.c --- sys/fs/adosfs/advnops.c 18 Mar 2013 19:35:35 -0000 1.41 +++ sys/fs/adosfs/advnops.c 15 Jan 2014 11:57:42 -0000 @@ -420,18 +420,17 @@ adosfs_link(void *v) int adosfs_symlink(void *v) { - struct vop_symlink_args /* { + struct vop_symlink_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; char *a_target; } */ *ap = v; VOP_ABORTOP(ap->a_dvp, ap->a_cnp); - vput(ap->a_dvp); return (EROFS); } /* Index: sys/fs/cd9660/cd9660_vnops.c =================================================================== RCS file: /cvsroot/src/sys/fs/cd9660/cd9660_vnops.c,v retrieving revision 1.45 diff -p -u -4 -r1.45 cd9660_vnops.c --- sys/fs/cd9660/cd9660_vnops.c 23 Jun 2013 07:28:36 -0000 1.45 +++ sys/fs/cd9660/cd9660_vnops.c 15 Jan 2014 11:57:42 -0000 @@ -677,18 +677,17 @@ cd9660_link(void *v) int cd9660_symlink(void *v) { - struct vop_symlink_args /* { + struct vop_symlink_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; char *a_target; } */ *ap = v; VOP_ABORTOP(ap->a_dvp, ap->a_cnp); - vput(ap->a_dvp); return (EROFS); } /* Index: sys/fs/filecorefs/filecore_vnops.c =================================================================== RCS file: /cvsroot/src/sys/fs/filecorefs/filecore_vnops.c,v retrieving revision 1.39 diff -p -u -4 -r1.39 filecore_vnops.c --- sys/fs/filecorefs/filecore_vnops.c 20 Oct 2013 17:14:48 -0000 1.39 +++ sys/fs/filecorefs/filecore_vnops.c 15 Jan 2014 11:57:42 -0000 @@ -432,18 +432,17 @@ filecore_link(void *v) int filecore_symlink(void *v) { - struct vop_symlink_args /* { + struct vop_symlink_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; char *a_target; } */ *ap = v; VOP_ABORTOP(ap->a_dvp, ap->a_cnp); - vput(ap->a_dvp); return (EROFS); } /* Index: sys/fs/msdosfs/msdosfs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/fs/msdosfs/msdosfs_vnops.c,v retrieving revision 1.87 diff -p -u -4 -r1.87 msdosfs_vnops.c --- sys/fs/msdosfs/msdosfs_vnops.c 2 Nov 2013 10:30:18 -0000 1.87 +++ sys/fs/msdosfs/msdosfs_vnops.c 15 Jan 2014 11:57:42 -0000 @@ -103,9 +103,9 @@ __KERNEL_RCSID(0, "$NetBSD: msdosfs_vnop */ int msdosfs_create(void *v) { - struct vop_create_args /* { + struct vop_create_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -154,15 +154,13 @@ msdosfs_create(void *v) if ((error = createde(&ndirent, pdep, &dep, cnp)) != 0) goto bad; fstrans_done(ap->a_dvp->v_mount); VN_KNOTE(ap->a_dvp, NOTE_WRITE); - vput(ap->a_dvp); *ap->a_vpp = DETOV(dep); return (0); bad: fstrans_done(ap->a_dvp->v_mount); - vput(ap->a_dvp); return (error); } int @@ -1167,9 +1165,9 @@ static const struct { int msdosfs_mkdir(void *v) { - struct vop_mkdir_args /* { + struct vop_mkdir_v2_args /* { struct vnode *a_dvp; struvt vnode **a_vpp; struvt componentname *a_cnp; struct vattr *a_vap; @@ -1268,17 +1266,15 @@ msdosfs_mkdir(void *v) ndirent.de_devvp = pdep->de_devvp; if ((error = createde(&ndirent, pdep, &dep, cnp)) != 0) goto bad; VN_KNOTE(ap->a_dvp, NOTE_WRITE | NOTE_LINK); - vput(ap->a_dvp); *ap->a_vpp = DETOV(dep); fstrans_done(ap->a_dvp->v_mount); return (0); bad: clusterfree(pmp, newcluster, NULL); bad2: - vput(ap->a_dvp); fstrans_done(ap->a_dvp->v_mount); return (error); } Index: sys/fs/nilfs/nilfs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/fs/nilfs/nilfs_vnops.c,v retrieving revision 1.24 diff -p -u -4 -r1.24 nilfs_vnops.c --- sys/fs/nilfs/nilfs_vnops.c 18 Oct 2013 19:57:28 -0000 1.24 +++ sys/fs/nilfs/nilfs_vnops.c 15 Jan 2014 11:57:42 -0000 @@ -1082,9 +1082,9 @@ nilfs_access(void *v) int nilfs_create(void *v) { - struct vop_create_args /* { + struct vop_create_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -1097,18 +1097,17 @@ nilfs_create(void *v) DPRINTF(VFSCALL, ("nilfs_create called\n")); error = nilfs_create_node(dvp, vpp, vap, cnp); - vput(dvp); return error; } /* --------------------------------------------------------------------- */ int nilfs_mknod(void *v) { - struct vop_mknod_args /* { + struct vop_mknod_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -1121,18 +1120,17 @@ nilfs_mknod(void *v) DPRINTF(VFSCALL, ("nilfs_mknod called\n")); error = nilfs_create_node(dvp, vpp, vap, cnp); - vput(dvp); return error; } /* --------------------------------------------------------------------- */ int nilfs_mkdir(void *v) { - struct vop_mkdir_args /* { + struct vop_mkdir_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -1145,9 +1143,8 @@ nilfs_mkdir(void *v) DPRINTF(VFSCALL, ("nilfs_mkdir called\n")); error = nilfs_create_node(dvp, vpp, vap, cnp); - vput(dvp); return error; } /* --------------------------------------------------------------------- */ @@ -1227,9 +1224,9 @@ nilfs_do_symlink(struct nilfs_node *nilf int nilfs_symlink(void *v) { - struct vop_symlink_args /* { + struct vop_symlink_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -1257,9 +1254,8 @@ nilfs_symlink(void *v) nilfs_shrink_node(nilfs_node, 0); nilfs_dir_detach(nilfs_node->ump, dir_node, nilfs_node, cnp); } } - vput(dvp); return error; } /* --------------------------------------------------------------------- */ Index: sys/fs/puffs/puffs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/fs/puffs/puffs_vnops.c,v retrieving revision 1.177 diff -p -u -4 -r1.177 puffs_vnops.c --- sys/fs/puffs/puffs_vnops.c 17 Oct 2013 21:03:27 -0000 1.177 +++ sys/fs/puffs/puffs_vnops.c 15 Jan 2014 11:57:42 -0000 @@ -754,9 +754,9 @@ do { \ int puffs_vnop_create(void *v) { - struct vop_create_args /* { + struct vop_create_v2_args /* { const struct vnodeop_desc *a_desc; struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; @@ -808,19 +808,17 @@ puffs_vnop_create(void *v) (VPTOPP(*ap->a_vpp)->pn_parent != dvp)) update_parent(*ap->a_vpp, dvp); out: - vput(dvp); - DPRINTF(("puffs_create: return %d\n", error)); PUFFS_MSG_RELEASE(create); return error; } int puffs_vnop_mknod(void *v) { - struct vop_mknod_args /* { + struct vop_mknod_v2_args /* { const struct vnodeop_desc *a_desc; struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; @@ -871,9 +869,8 @@ puffs_vnop_mknod(void *v) (VPTOPP(*ap->a_vpp)->pn_parent != dvp)) update_parent(*ap->a_vpp, dvp); out: - vput(dvp); PUFFS_MSG_RELEASE(mknod); return error; } @@ -1815,9 +1812,9 @@ puffs_vnop_remove(void *v) int puffs_vnop_mkdir(void *v) { - struct vop_mkdir_args /* { + struct vop_mkdir_v2_args /* { const struct vnodeop_desc *a_desc; struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; @@ -1867,9 +1864,8 @@ puffs_vnop_mkdir(void *v) (VPTOPP(*ap->a_vpp)->pn_parent != dvp)) update_parent(*ap->a_vpp, dvp); out: - vput(dvp); PUFFS_MSG_RELEASE(mkdir); return error; } @@ -1980,9 +1976,9 @@ puffs_vnop_link(void *v) int puffs_vnop_symlink(void *v) { - struct vop_symlink_args /* { + struct vop_symlink_v2_args /* { const struct vnodeop_desc *a_desc; struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; @@ -2037,9 +2033,8 @@ puffs_vnop_symlink(void *v) (VPTOPP(*ap->a_vpp)->pn_parent != dvp)) update_parent(*ap->a_vpp, dvp); out: - vput(dvp); PUFFS_MSG_RELEASE(symlink); return error; } Index: sys/fs/smbfs/smbfs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/fs/smbfs/smbfs_vnops.c,v retrieving revision 1.86 diff -p -u -4 -r1.86 smbfs_vnops.c --- sys/fs/smbfs/smbfs_vnops.c 18 Mar 2013 19:35:39 -0000 1.86 +++ sys/fs/smbfs/smbfs_vnops.c 15 Jan 2014 11:57:42 -0000 @@ -572,9 +572,9 @@ smbfs_write(void *v) */ int smbfs_create(void *v) { - struct vop_create_args /* { + struct vop_create_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -609,9 +609,8 @@ smbfs_create(void *v) cnp->cn_flags); out: VN_KNOTE(dvp, NOTE_WRITE); - vput(dvp); return (error); } int @@ -774,9 +773,9 @@ smbfs_symlink(void *v) int smbfs_mkdir(void *v) { - struct vop_mkdir_args /* { + struct vop_mkdir_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -810,9 +809,8 @@ smbfs_mkdir(void *v) *ap->a_vpp = vp; out: VN_KNOTE(dvp, NOTE_WRITE | NOTE_LINK); - vput(dvp); return (error); } Index: sys/fs/sysvbfs/sysvbfs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/fs/sysvbfs/sysvbfs_vnops.c,v retrieving revision 1.50 diff -p -u -4 -r1.50 sysvbfs_vnops.c --- sys/fs/sysvbfs/sysvbfs_vnops.c 9 Jan 2014 13:23:57 -0000 1.50 +++ sys/fs/sysvbfs/sysvbfs_vnops.c 15 Jan 2014 11:57:42 -0000 @@ -126,9 +126,9 @@ sysvbfs_lookup(void *arg) int sysvbfs_create(void *arg) { - struct vop_create_args /* { + struct vop_create_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -151,27 +151,23 @@ sysvbfs_create(void *arg) if ((err = bfs_file_create(bfs, a->a_cnp->cn_nameptr, 0, 0, &attr)) != 0) { DPRINTF("%s: bfs_file_create failed.\n", __func__); - goto unlock_exit; + return err; } if (!bfs_dirent_lookup_by_name(bfs, a->a_cnp->cn_nameptr, &dirent)) panic("no dirent for created file."); if ((err = sysvbfs_vget(mp, dirent->inode, a->a_vpp)) != 0) { DPRINTF("%s: sysvbfs_vget failed.\n", __func__); - goto unlock_exit; + return err; } bnode = (*a->a_vpp)->v_data; bnode->update_ctime = true; bnode->update_mtime = true; bnode->update_atime = true; - unlock_exit: - /* unlock parent directory */ - vput(a->a_dvp); /* locked at sysvbfs_lookup(); */ - return err; } int Index: sys/fs/tmpfs/tmpfs_subr.c =================================================================== RCS file: /cvsroot/src/sys/fs/tmpfs/tmpfs_subr.c,v retrieving revision 1.94 diff -p -u -4 -r1.94 tmpfs_subr.c --- sys/fs/tmpfs/tmpfs_subr.c 8 Jan 2014 16:11:04 -0000 1.94 +++ sys/fs/tmpfs/tmpfs_subr.c 15 Jan 2014 11:57:42 -0000 @@ -423,9 +423,8 @@ tmpfs_construct_node(vnode_t *dvp, vnode /* Update the parent's timestamps. */ tmpfs_update(dvp, TMPFS_UPDATE_MTIME | TMPFS_UPDATE_CTIME); out: - vput(dvp); return error; } /* Index: sys/fs/tmpfs/tmpfs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/fs/tmpfs/tmpfs_vnops.c,v retrieving revision 1.112 diff -p -u -4 -r1.112 tmpfs_vnops.c --- sys/fs/tmpfs/tmpfs_vnops.c 10 Jan 2014 16:42:38 -0000 1.112 +++ sys/fs/tmpfs/tmpfs_vnops.c 15 Jan 2014 11:57:42 -0000 @@ -310,9 +310,9 @@ out: int tmpfs_create(void *v) { - struct vop_create_args /* { + struct vop_create_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -328,9 +328,9 @@ tmpfs_create(void *v) int tmpfs_mknod(void *v) { - struct vop_mknod_args /* { + struct vop_mknod_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -803,9 +803,9 @@ out: int tmpfs_mkdir(void *v) { - struct vop_mkdir_args /* { + struct vop_mkdir_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -915,9 +915,9 @@ out: int tmpfs_symlink(void *v) { - struct vop_symlink_args /* { + struct vop_symlink_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; Index: sys/fs/udf/udf_vnops.c =================================================================== RCS file: /cvsroot/src/sys/fs/udf/udf_vnops.c,v retrieving revision 1.87 diff -p -u -4 -r1.87 udf_vnops.c --- sys/fs/udf/udf_vnops.c 18 Oct 2013 19:56:55 -0000 1.87 +++ sys/fs/udf/udf_vnops.c 15 Jan 2014 11:57:43 -0000 @@ -1452,9 +1452,9 @@ udf_access(void *v) int udf_create(void *v) { - struct vop_create_args /* { + struct vop_create_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -1467,18 +1467,17 @@ udf_create(void *v) DPRINTF(CALL, ("udf_create called\n")); error = udf_create_node(dvp, vpp, vap, cnp); - vput(dvp); return error; } /* --------------------------------------------------------------------- */ int udf_mknod(void *v) { - struct vop_mknod_args /* { + struct vop_mknod_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -1491,18 +1490,17 @@ udf_mknod(void *v) DPRINTF(CALL, ("udf_mknod called\n")); error = udf_create_node(dvp, vpp, vap, cnp); - vput(dvp); return error; } /* --------------------------------------------------------------------- */ int udf_mkdir(void *v) { - struct vop_mkdir_args /* { + struct vop_mkdir_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -1515,9 +1513,8 @@ udf_mkdir(void *v) DPRINTF(CALL, ("udf_mkdir called\n")); error = udf_create_node(dvp, vpp, vap, cnp); - vput(dvp); return error; } /* --------------------------------------------------------------------- */ @@ -1698,9 +1695,9 @@ udf_do_symlink(struct udf_node *udf_node int udf_symlink(void *v) { - struct vop_symlink_args /* { + struct vop_symlink_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -1728,9 +1725,8 @@ udf_symlink(void *v) udf_shrink_node(udf_node, 0); udf_dir_detach(udf_node->ump, dir_node, udf_node, cnp); } } - vput(dvp); return error; } /* --------------------------------------------------------------------- */ Index: sys/fs/union/union_subr.c =================================================================== RCS file: /cvsroot/src/sys/fs/union/union_subr.c,v retrieving revision 1.57 diff -p -u -4 -r1.57 union_subr.c --- sys/fs/union/union_subr.c 17 Oct 2013 21:03:50 -0000 1.57 +++ sys/fs/union/union_subr.c 15 Jan 2014 11:57:43 -0000 @@ -851,10 +851,10 @@ union_mkshadow(struct union_mount *um, s vattr_null(&va); va.va_type = VDIR; va.va_mode = um->um_cmode; - vref(dvp); error = VOP_MKDIR(dvp, vpp, &cn, &va); + VOP_UNLOCK(dvp); PNBUF_PUT(pnbuf); return error; } Index: sys/fs/union/union_vnops.c =================================================================== RCS file: /cvsroot/src/sys/fs/union/union_vnops.c,v retrieving revision 1.49 diff -p -u -4 -r1.49 union_vnops.c --- sys/fs/union/union_vnops.c 21 Nov 2011 18:29:22 -0000 1.49 +++ sys/fs/union/union_vnops.c 15 Jan 2014 11:57:43 -0000 @@ -484,9 +484,9 @@ start: int union_create(void *v) { - struct vop_create_args /* { + struct vop_create_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -499,12 +499,9 @@ union_create(void *v) int error; struct vnode *vp; struct mount *mp; - vref(dvp); - un->un_flags |= UN_KLOCK; mp = ap->a_dvp->v_mount; - vput(ap->a_dvp); error = VOP_CREATE(dvp, &vp, cnp, ap->a_vap); if (error) return (error); @@ -514,9 +511,8 @@ union_create(void *v) vput(vp); return (error); } - vput(ap->a_dvp); return (EROFS); } int @@ -538,9 +534,9 @@ union_whiteout(void *v) int union_mknod(void *v) { - struct vop_mknod_args /* { + struct vop_mknod_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -553,12 +549,9 @@ union_mknod(void *v) int error; struct vnode *vp; struct mount *mp; - vref(dvp); - un->un_flags |= UN_KLOCK; mp = ap->a_dvp->v_mount; - vput(ap->a_dvp); error = VOP_MKNOD(dvp, &vp, cnp, ap->a_vap); if (error) return (error); @@ -568,9 +561,8 @@ union_mknod(void *v) vput(vp); return (error); } - vput(ap->a_dvp); return (EROFS); } int @@ -1348,9 +1340,9 @@ out: int union_mkdir(void *v) { - struct vop_mkdir_args /* { + struct vop_mkdir_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -1362,11 +1354,8 @@ union_mkdir(void *v) if (dvp != NULLVP) { int error; struct vnode *vp; - vref(dvp); - un->un_flags |= UN_KLOCK; - VOP_UNLOCK(ap->a_dvp); error = VOP_MKDIR(dvp, &vp, cnp, ap->a_vap); if (error) { vrele(ap->a_dvp); return (error); @@ -1375,13 +1364,11 @@ union_mkdir(void *v) error = union_allocvp(ap->a_vpp, ap->a_dvp->v_mount, ap->a_dvp, NULLVP, cnp, vp, NULLVP, 1); if (error) vput(vp); - vrele(ap->a_dvp); return (error); } - vput(ap->a_dvp); return (EROFS); } int @@ -1436,9 +1423,9 @@ union_rmdir(void *v) int union_symlink(void *v) { - struct vop_symlink_args /* { + struct vop_symlink_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -1450,17 +1437,13 @@ union_symlink(void *v) if (dvp != NULLVP) { int error; - vref(dvp); - un->un_flags |= UN_KLOCK; - vput(ap->a_dvp); error = VOP_SYMLINK(dvp, ap->a_vpp, cnp, ap->a_vap, ap->a_target); return (error); } - vput(ap->a_dvp); return (EROFS); } /* Index: sys/fs/v7fs/v7fs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/fs/v7fs/v7fs_vnops.c,v retrieving revision 1.13 diff -p -u -4 -r1.13 v7fs_vnops.c --- sys/fs/v7fs/v7fs_vnops.c 20 Nov 2013 23:44:23 -0000 1.13 +++ sys/fs/v7fs/v7fs_vnops.c 15 Jan 2014 11:57:43 -0000 @@ -188,9 +188,9 @@ v7fs_lookup(void *v) int v7fs_create(void *v) { - struct vop_create_args /* { + struct vop_create_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -218,18 +218,18 @@ v7fs_create(void *v) /* Allocate disk entry. and register its entry to parent directory. */ if ((error = v7fs_file_allocate(fs, &parent_node->inode, a->a_cnp->cn_nameptr, &attr, &ino))) { DPRINTF("v7fs_file_allocate failed.\n"); - goto unlock_exit; + return error; } /* Sync dirent size change. */ uvm_vnp_setsize(a->a_dvp, v7fs_inode_filesize(&parent_node->inode)); /* Get myself vnode. */ *a->a_vpp = 0; if ((error = v7fs_vget(mp, ino, a->a_vpp))) { DPRINTF("v7fs_vget failed.\n"); - goto unlock_exit; + return error; } /* Scheduling update time. real update by v7fs_update */ struct v7fs_node *newnode = (*a->a_vpp)->v_data; @@ -237,19 +237,15 @@ v7fs_create(void *v) newnode->update_mtime = true; newnode->update_atime = true; DPRINTF("allocated %s->#%d\n", a->a_cnp->cn_nameptr, ino); -unlock_exit: - /* unlock parent directory */ - vput(a->a_dvp); /* locked at v7fs_lookup(); */ - return error; } int v7fs_mknod(void *v) { - struct vop_mknod_args /* { + struct vop_mknod_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -276,24 +272,21 @@ v7fs_mknod(void *v) attr.device = va->va_rdev; if ((error = v7fs_file_allocate(fs, &parent_node->inode, cnp->cn_nameptr, &attr, &ino))) - goto unlock_exit; + return error; /* Sync dirent size change. */ uvm_vnp_setsize(dvp, v7fs_inode_filesize(&parent_node->inode)); if ((error = v7fs_vget(mp, ino, a->a_vpp))) { DPRINTF("can't get vnode.\n"); - goto unlock_exit; + return error; } struct v7fs_node *newnode = (*a->a_vpp)->v_data; newnode->update_ctime = true; newnode->update_mtime = true; newnode->update_atime = true; -unlock_exit: - vput(dvp); - return error; } int @@ -809,9 +802,9 @@ out: int v7fs_mkdir(void *v) { - struct vop_mkdir_args /* { + struct vop_mkdir_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -835,9 +828,9 @@ v7fs_mkdir(void *v) attr.mode = va->va_mode | vtype_to_v7fs_mode(va->va_type); if ((error = v7fs_file_allocate(fs, &parent_node->inode, cnp->cn_nameptr, &attr, &ino))) - goto unlock_exit; + return error; /* Sync dirent size change. */ uvm_vnp_setsize(dvp, v7fs_inode_filesize(&parent_node->inode)); if ((error = v7fs_vget(mp, ino, a->a_vpp))) { @@ -847,11 +840,8 @@ v7fs_mkdir(void *v) newnode->update_ctime = true; newnode->update_mtime = true; newnode->update_atime = true; -unlock_exit: - vput(dvp); - return error; } int @@ -1234,9 +1224,9 @@ v7fs_update(struct vnode *vp, const stru int v7fs_symlink(void *v) { - struct vop_symlink_args /* { + struct vop_symlink_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -1266,9 +1256,9 @@ v7fs_symlink(void *v) attr.mode = va->va_mode | vtype_to_v7fs_mode(va->va_type); if ((error = v7fs_file_allocate (fs, &parent_node->inode, to, &attr, &ino))) { - goto unlock_exit; + return error; } /* Sync dirent size change. */ uvm_vnp_setsize(a->a_dvp, v7fs_inode_filesize(&parent_node->inode)); @@ -1284,11 +1274,8 @@ v7fs_symlink(void *v) newnode->update_ctime = true; newnode->update_mtime = true; newnode->update_atime = true; -unlock_exit: - /* unlock parent directory */ - vput(a->a_dvp); return error; } Index: sys/kern/uipc_usrreq.c =================================================================== RCS file: /cvsroot/src/sys/kern/uipc_usrreq.c,v retrieving revision 1.148 diff -p -u -4 -r1.148 uipc_usrreq.c --- sys/kern/uipc_usrreq.c 29 Oct 2013 09:53:51 -0000 1.148 +++ sys/kern/uipc_usrreq.c 15 Jan 2014 11:57:43 -0000 @@ -961,8 +961,9 @@ unp_bind(struct socket *so, struct mbuf vattr.va_type = VSOCK; vattr.va_mode = ACCESSPERMS & ~(p->p_cwdi->cwdi_cmask); error = VOP_CREATE(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, &vattr); if (error) { + vput(nd.ni_dvp); pathbuf_destroy(pb); goto bad; } vp = nd.ni_vp; @@ -975,8 +976,9 @@ unp_bind(struct socket *so, struct mbuf unp->unp_connid.unp_euid = kauth_cred_geteuid(l->l_cred); unp->unp_connid.unp_egid = kauth_cred_getegid(l->l_cred); unp->unp_flags |= UNP_EIDSBIND; VOP_UNLOCK(vp); + vput(nd.ni_dvp); unp->unp_flags &= ~UNP_BUSY; pathbuf_destroy(pb); return (0); Index: sys/kern/vfs_syscalls.c =================================================================== RCS file: /cvsroot/src/sys/kern/vfs_syscalls.c,v retrieving revision 1.471 diff -p -u -4 -r1.471 vfs_syscalls.c --- sys/kern/vfs_syscalls.c 27 Nov 2013 17:24:44 -0000 1.471 +++ sys/kern/vfs_syscalls.c 15 Jan 2014 11:57:43 -0000 @@ -2253,15 +2253,17 @@ do_sys_mknodat(struct lwp *l, int fdat, error = VOP_MKNOD(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, &vattr); if (error == 0) vput(nd.ni_vp); + vput(nd.ni_dvp); break; case VOP_CREATE_DESCOFFSET: error = VOP_CREATE(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, &vattr); if (error == 0) vput(nd.ni_vp); + vput(nd.ni_dvp); break; } } else { VOP_ABORTOP(nd.ni_dvp, &nd.ni_cnd); @@ -2341,8 +2343,9 @@ do_sys_mkfifoat(struct lwp *l, int fdat, vattr.va_mode = (mode & ALLPERMS) &~ p->p_cwdi->cwdi_cmask; error = VOP_MKNOD(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, &vattr); if (error == 0) vput(nd.ni_vp); + vput(nd.ni_dvp); pathbuf_destroy(pb); return (error); } @@ -2498,8 +2501,9 @@ do_sys_symlinkat(struct lwp *l, const ch vattr.va_mode = ACCESSPERMS &~ p->p_cwdi->cwdi_cmask; error = VOP_SYMLINK(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, &vattr, path); if (error == 0) vput(nd.ni_vp); + vput(nd.ni_dvp); out2: pathbuf_destroy(linkpb); out1: PNBUF_PUT(path); @@ -4557,8 +4561,9 @@ do_sys_mkdirat(struct lwp *l, int fdat, vattr.va_mode = (mode & ACCESSPERMS) &~ p->p_cwdi->cwdi_cmask; error = VOP_MKDIR(nd.ni_dvp, &nd.ni_vp, &nd.ni_cnd, &vattr); if (!error) vput(nd.ni_vp); + vput(nd.ni_dvp); pathbuf_destroy(pb); return (error); } Index: sys/kern/vfs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/kern/vfs_vnops.c,v retrieving revision 1.186 diff -p -u -4 -r1.186 vfs_vnops.c --- sys/kern/vfs_vnops.c 12 Nov 2012 11:00:07 -0000 1.186 +++ sys/kern/vfs_vnops.c 15 Jan 2014 11:57:43 -0000 @@ -183,8 +183,9 @@ vn_open(struct nameidata *ndp, int fmode if (fmode & O_EXCL) va.va_vaflags |= VA_EXCLUSIVE; error = VOP_CREATE(ndp->ni_dvp, &ndp->ni_vp, &ndp->ni_cnd, &va); + vput(ndp->ni_dvp); if (error) goto out; fmode &= ~O_TRUNC; vp = ndp->ni_vp; Index: sys/kern/vnode_if.c =================================================================== RCS file: /cvsroot/src/sys/kern/vnode_if.c,v retrieving revision 1.89 diff -p -u -4 -r1.89 vnode_if.c --- sys/kern/vnode_if.c 17 Jul 2013 21:21:34 -0000 1.89 +++ sys/kern/vnode_if.c 15 Jan 2014 11:57:43 -0000 @@ -1,14 +1,14 @@ -/* $NetBSD: vnode_if.c,v 1.89 2013/07/17 21:21:34 pooka Exp $ */ +/* $NetBSD$ */ /* * Warning: DO NOT EDIT! This file is automatically generated! * (Modifications made here may easily be lost!) * * Created from the file: * NetBSD: vnode_if.src,v 1.63 2011/10/14 09:23:31 hannken Exp * by the script: - * NetBSD: vnode_if.sh,v 1.59 2013/07/17 21:20:53 pooka Exp + * NetBSD: vnode_if.sh,v 1.60 2014/01/13 12:07:55 hannken Exp */ /* * Copyright (c) 1992, 1993, 1994, 1995 @@ -39,9 +39,9 @@ * SUCH DAMAGE. */ #include -__KERNEL_RCSID(0, "$NetBSD: vnode_if.c,v 1.89 2013/07/17 21:21:34 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD$"); #include #include #include @@ -126,19 +126,19 @@ VOP_LOOKUP(struct vnode *dvp, return error; } const int vop_create_vp_offsets[] = { - VOPARG_OFFSETOF(struct vop_create_args,a_dvp), + VOPARG_OFFSETOF(struct vop_create_v2_args,a_dvp), VDESC_NO_OFFSET }; const struct vnodeop_desc vop_create_desc = { VOP_CREATE_DESCOFFSET, "vop_create", - 0 | VDESC_VP0_WILLPUT, + 0, vop_create_vp_offsets, - VOPARG_OFFSETOF(struct vop_create_args, a_vpp), + VOPARG_OFFSETOF(struct vop_create_v2_args, a_vpp), VDESC_NO_OFFSET, - VOPARG_OFFSETOF(struct vop_create_args, a_cnp), + VOPARG_OFFSETOF(struct vop_create_v2_args, a_cnp), }; int VOP_CREATE(struct vnode *dvp, struct vnode **vpp, @@ -146,9 +146,9 @@ VOP_CREATE(struct vnode *dvp, struct vattr *vap) { int error; bool mpsafe; - struct vop_create_args a; + struct vop_create_v2_args a; a.a_desc = VDESC(vop_create); a.a_dvp = dvp; a.a_vpp = vpp; a.a_cnp = cnp; @@ -165,19 +165,19 @@ VOP_CREATE(struct vnode *dvp, return error; } const int vop_mknod_vp_offsets[] = { - VOPARG_OFFSETOF(struct vop_mknod_args,a_dvp), + VOPARG_OFFSETOF(struct vop_mknod_v2_args,a_dvp), VDESC_NO_OFFSET }; const struct vnodeop_desc vop_mknod_desc = { VOP_MKNOD_DESCOFFSET, "vop_mknod", - 0 | VDESC_VP0_WILLPUT, + 0, vop_mknod_vp_offsets, - VOPARG_OFFSETOF(struct vop_mknod_args, a_vpp), + VOPARG_OFFSETOF(struct vop_mknod_v2_args, a_vpp), VDESC_NO_OFFSET, - VOPARG_OFFSETOF(struct vop_mknod_args, a_cnp), + VOPARG_OFFSETOF(struct vop_mknod_v2_args, a_cnp), }; int VOP_MKNOD(struct vnode *dvp, struct vnode **vpp, @@ -185,9 +185,9 @@ VOP_MKNOD(struct vnode *dvp, struct vattr *vap) { int error; bool mpsafe; - struct vop_mknod_args a; + struct vop_mknod_v2_args a; a.a_desc = VDESC(vop_mknod); a.a_dvp = dvp; a.a_vpp = vpp; a.a_cnp = cnp; @@ -803,19 +803,19 @@ VOP_RENAME(struct vnode *fdvp, return error; } const int vop_mkdir_vp_offsets[] = { - VOPARG_OFFSETOF(struct vop_mkdir_args,a_dvp), + VOPARG_OFFSETOF(struct vop_mkdir_v2_args,a_dvp), VDESC_NO_OFFSET }; const struct vnodeop_desc vop_mkdir_desc = { VOP_MKDIR_DESCOFFSET, "vop_mkdir", - 0 | VDESC_VP0_WILLPUT, + 0, vop_mkdir_vp_offsets, - VOPARG_OFFSETOF(struct vop_mkdir_args, a_vpp), + VOPARG_OFFSETOF(struct vop_mkdir_v2_args, a_vpp), VDESC_NO_OFFSET, - VOPARG_OFFSETOF(struct vop_mkdir_args, a_cnp), + VOPARG_OFFSETOF(struct vop_mkdir_v2_args, a_cnp), }; int VOP_MKDIR(struct vnode *dvp, struct vnode **vpp, @@ -823,9 +823,9 @@ VOP_MKDIR(struct vnode *dvp, struct vattr *vap) { int error; bool mpsafe; - struct vop_mkdir_args a; + struct vop_mkdir_v2_args a; a.a_desc = VDESC(vop_mkdir); a.a_dvp = dvp; a.a_vpp = vpp; a.a_cnp = cnp; @@ -875,19 +875,19 @@ VOP_RMDIR(struct vnode *dvp, return error; } const int vop_symlink_vp_offsets[] = { - VOPARG_OFFSETOF(struct vop_symlink_args,a_dvp), + VOPARG_OFFSETOF(struct vop_symlink_v2_args,a_dvp), VDESC_NO_OFFSET }; const struct vnodeop_desc vop_symlink_desc = { VOP_SYMLINK_DESCOFFSET, "vop_symlink", - 0 | VDESC_VP0_WILLPUT, + 0, vop_symlink_vp_offsets, - VOPARG_OFFSETOF(struct vop_symlink_args, a_vpp), + VOPARG_OFFSETOF(struct vop_symlink_v2_args, a_vpp), VDESC_NO_OFFSET, - VOPARG_OFFSETOF(struct vop_symlink_args, a_cnp), + VOPARG_OFFSETOF(struct vop_symlink_v2_args, a_cnp), }; int VOP_SYMLINK(struct vnode *dvp, struct vnode **vpp, @@ -896,9 +896,9 @@ VOP_SYMLINK(struct vnode *dvp, char *target) { int error; bool mpsafe; - struct vop_symlink_args a; + struct vop_symlink_v2_args a; a.a_desc = VDESC(vop_symlink); a.a_dvp = dvp; a.a_vpp = vpp; a.a_cnp = cnp; Index: sys/kern/vnode_if.src =================================================================== RCS file: /cvsroot/src/sys/kern/vnode_if.src,v retrieving revision 1.63 diff -p -u -4 -r1.63 vnode_if.src --- sys/kern/vnode_if.src 14 Oct 2011 09:23:31 -0000 1.63 +++ sys/kern/vnode_if.src 15 Jan 2014 11:57:43 -0000 @@ -87,28 +87,30 @@ vop_lookup { IN struct componentname *cnp; }; # -#% create dvp L U U +#% create dvp L L L #% create vpp - L - # #! create cnp CREATE, LOCKPARENT # vop_create { - IN LOCKED=YES WILLPUT struct vnode *dvp; + VERSION 2 + IN LOCKED=YES struct vnode *dvp; OUT WILLMAKE struct vnode **vpp; IN struct componentname *cnp; IN struct vattr *vap; }; # -#% mknod dvp L U U +#% mknod dvp L L L #% mknod vpp - L - # #! mknod cnp CREATE, LOCKPARENT # vop_mknod { - IN LOCKED=YES WILLPUT struct vnode *dvp; + VERSION 2 + IN LOCKED=YES struct vnode *dvp; OUT WILLMAKE struct vnode **vpp; IN struct componentname *cnp; IN struct vattr *vap; }; @@ -297,15 +299,16 @@ vop_rename { IN struct componentname *tcnp; }; # -#% mkdir dvp L U U +#% mkdir dvp L L L #% mkdir vpp - L - # #! mkdir cnp CREATE, LOCKPARENT # vop_mkdir { - IN LOCKED=YES WILLPUT struct vnode *dvp; + VERSION 2 + IN LOCKED=YES struct vnode *dvp; OUT WILLMAKE struct vnode **vpp; IN struct componentname *cnp; IN struct vattr *vap; }; @@ -322,15 +325,16 @@ vop_rmdir { IN struct componentname *cnp; }; # -#% symlink dvp L U U +#% symlink dvp L L L #% symlink vpp - L - # #! symlink cnp CREATE, LOCKPARENT # vop_symlink { - IN LOCKED=YES WILLPUT struct vnode *dvp; + VERSION 2 + IN LOCKED=YES struct vnode *dvp; OUT WILLMAKE struct vnode **vpp; IN struct componentname *cnp; IN struct vattr *vap; IN char *target; Index: sys/miscfs/deadfs/dead_vnops.c =================================================================== RCS file: /cvsroot/src/sys/miscfs/deadfs/dead_vnops.c,v retrieving revision 1.52 diff -p -u -4 -r1.52 dead_vnops.c --- sys/miscfs/deadfs/dead_vnops.c 7 Nov 2013 09:45:53 -0000 1.52 +++ sys/miscfs/deadfs/dead_vnops.c 15 Jan 2014 11:57:43 -0000 @@ -49,10 +49,8 @@ __KERNEL_RCSID(0, "$NetBSD: dead_vnops.c * Prototypes for dead operations on vnodes. */ #define dead_bwrite genfs_nullop int dead_lookup(void *); -int dead_create(void *); -int dead_mknod(void *); int dead_open(void *); #define dead_close genfs_nullop int dead_read(void *); int dead_write(void *); @@ -61,11 +59,9 @@ int dead_ioctl(void *); int dead_poll(void *); int dead_remove(void *); int dead_link(void *); int dead_rename(void *); -int dead_mkdir(void *); int dead_rmdir(void *); -int dead_symlink(void *); #define dead_fsync genfs_nullop #define dead_seek genfs_nullop int dead_inactive(void *); #define dead_reclaim genfs_nullop @@ -86,10 +82,8 @@ int (**dead_vnodeop_p)(void *); const struct vnodeopv_entry_desc dead_vnodeop_entries[] = { { &vop_default_desc, dead_default_error }, { &vop_bwrite_desc, dead_bwrite }, /* bwrite */ { &vop_lookup_desc, dead_lookup }, /* lookup */ - { &vop_create_desc, dead_create }, /* create */ - { &vop_mknod_desc, dead_mknod }, /* mknod */ { &vop_open_desc, dead_open }, /* open */ { &vop_close_desc, dead_close }, /* close */ { &vop_read_desc, dead_read }, /* read */ { &vop_write_desc, dead_write }, /* write */ @@ -98,11 +92,9 @@ const struct vnodeopv_entry_desc dead_vn { &vop_poll_desc, dead_poll }, /* poll */ { &vop_remove_desc, dead_remove }, /* remove */ { &vop_link_desc, dead_link }, /* link */ { &vop_rename_desc, dead_rename }, /* rename */ - { &vop_mkdir_desc, dead_mkdir }, /* mkdir */ { &vop_rmdir_desc, dead_rmdir }, /* rmdir */ - { &vop_symlink_desc, dead_symlink }, /* symlink */ { &vop_fsync_desc, dead_fsync }, /* fsync */ { &vop_seek_desc, dead_seek }, /* seek */ { &vop_inactive_desc, dead_inactive }, /* inactive */ { &vop_reclaim_desc, dead_reclaim }, /* reclaim */ @@ -156,38 +148,8 @@ dead_lookup(void *v) return EIO; } -int -dead_create(void *v) -{ - struct vop_create_args /* { - struct vnode *a_dvp; - struct vnode **a_vpp; - struct componentname *a_cnp; - struct vattr *a_vap; - } */ *ap = v; - - vput(ap->a_dvp); - - return EIO; -} - -int -dead_mknod(void *v) -{ - struct vop_mknod_args /* { - struct vnode *a_dvp; - struct vnode **a_vpp; - struct componentname *a_cnp; - struct vattr *a_vap; - } */ *ap = v; - - vput(ap->a_dvp); - - return EIO; -} - /* ARGSUSED */ int dead_open(void *v) { @@ -315,23 +277,8 @@ dead_rename(void *v) return EIO; } int -dead_mkdir(void *v) -{ - struct vop_mkdir_args /* { - struct vnode *a_dvp; - struct vnode **a_vpp; - struct componentname *a_cnp; - struct vattr *a_vap; - } */ *ap = v; - - vput(ap->a_dvp); - - return EIO; -} - -int dead_rmdir(void *v) { struct vop_rmdir_args /* { struct vnode *a_dvp; @@ -345,24 +292,8 @@ dead_rmdir(void *v) return EIO; } int -dead_symlink(void *v) -{ - struct vop_symlink_args /* { - struct vnode *a_dvp; - struct vnode **a_vpp; - struct componentname *a_cnp; - struct vattr *a_vap; - char *a_target; - } */ *ap = v; - - vput(ap->a_dvp); - - return EIO; -} - -int dead_inactive(void *v) { struct vop_inactive_args /* { struct vnode *a_vp; Index: sys/miscfs/fdesc/fdesc_vnops.c =================================================================== RCS file: /cvsroot/src/sys/miscfs/fdesc/fdesc_vnops.c,v retrieving revision 1.114 diff -p -u -4 -r1.114 fdesc_vnops.c --- sys/miscfs/fdesc/fdesc_vnops.c 16 Oct 2011 12:26:16 -0000 1.114 +++ sys/miscfs/fdesc/fdesc_vnops.c 15 Jan 2014 11:57:43 -0000 @@ -1034,16 +1034,15 @@ fdesc_link(void *v) int fdesc_symlink(void *v) { - struct vop_symlink_args /* { + struct vop_symlink_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; char *a_target; } */ *ap = v; VOP_ABORTOP(ap->a_dvp, ap->a_cnp); - vput(ap->a_dvp); return (EROFS); } Index: sys/miscfs/kernfs/kernfs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/miscfs/kernfs/kernfs_vnops.c,v retrieving revision 1.147 diff -p -u -4 -r1.147 kernfs_vnops.c --- sys/miscfs/kernfs/kernfs_vnops.c 18 Mar 2013 19:35:44 -0000 1.147 +++ sys/miscfs/kernfs/kernfs_vnops.c 15 Jan 2014 11:57:43 -0000 @@ -1154,16 +1154,15 @@ kernfs_link(void *v) int kernfs_symlink(void *v) { - struct vop_symlink_args /* { + struct vop_symlink_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; char *a_target; } */ *ap = v; VOP_ABORTOP(ap->a_dvp, ap->a_cnp); - vput(ap->a_dvp); return (EROFS); } Index: sys/miscfs/procfs/procfs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/miscfs/procfs/procfs_vnops.c,v retrieving revision 1.186 diff -p -u -4 -r1.186 procfs_vnops.c --- sys/miscfs/procfs/procfs_vnops.c 18 Mar 2013 19:35:44 -0000 1.186 +++ sys/miscfs/procfs/procfs_vnops.c 15 Jan 2014 11:57:43 -0000 @@ -517,18 +517,17 @@ procfs_link(void *v) int procfs_symlink(void *v) { - struct vop_symlink_args /* { + struct vop_symlink_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; char *a_target; } */ *ap = v; VOP_ABORTOP(ap->a_dvp, ap->a_cnp); - vput(ap->a_dvp); return (EROFS); } /* Index: sys/nfs/nfs_serv.c =================================================================== RCS file: /cvsroot/src/sys/nfs/nfs_serv.c,v retrieving revision 1.168 diff -p -u -4 -r1.168 nfs_serv.c --- sys/nfs/nfs_serv.c 14 Dec 2013 22:04:03 -0000 1.168 +++ sys/nfs/nfs_serv.c 15 Jan 2014 11:57:45 -0000 @@ -1548,9 +1548,8 @@ nfsrv_create(struct nfsrv_descript *nfsd if (nd.ni_pathbuf != NULL) { pathbuf_destroy(nd.ni_pathbuf); nd.ni_pathbuf = NULL; } - vput(nd.ni_dvp); error = ENXIO; abort = 0; } vp = nd.ni_vp; @@ -1560,12 +1559,8 @@ nfsrv_create(struct nfsrv_descript *nfsd pathbuf_destroy(nd.ni_pathbuf); nd.ni_pathbuf = NULL; } vp = nd.ni_vp; - if (nd.ni_dvp == vp) - vrele(nd.ni_dvp); - else - vput(nd.ni_dvp); abort = 0; if (!error && va.va_size != -1) { error = nfsrv_access(vp, VWRITE, cred, (nd.ni_cnd.cn_flags & RDONLY), lwp, 0); @@ -1585,8 +1580,12 @@ nfsrv_create(struct nfsrv_descript *nfsd if (!error) error = VOP_GETATTR(vp, &va, cred); vput(vp); } + if (nd.ni_dvp == vp) + vrele(nd.ni_dvp); + else + vput(nd.ni_dvp); if (v3) { if (exclusive_flag && !error) { /* * XXX assuming NFSX_V3CREATEVERF == sizeof(nfstime3) @@ -1720,12 +1719,8 @@ nfsrv_mknod(struct nfsrv_descript *nfsd, if (nd.ni_vp) { error = EEXIST; abort: VOP_ABORTOP(nd.ni_dvp, &nd.ni_cnd); - if (nd.ni_dvp == nd.ni_vp) - vrele(nd.ni_dvp); - else - vput(nd.ni_dvp); if (nd.ni_vp) vput(nd.ni_vp); if (nd.ni_pathbuf != NULL) { pathbuf_destroy(nd.ni_pathbuf); @@ -1757,8 +1752,12 @@ out: if (!error) error = VOP_GETATTR(vp, &va, cred); vput(vp); } + if (nd.ni_dvp == nd.ni_vp) + vrele(nd.ni_dvp); + else + vput(nd.ni_dvp); if (dirp) { vn_lock(dirp, LK_SHARED | LK_RETRY); diraft_ret = VOP_GETATTR(dirp, &diraft, cred); VOP_UNLOCK(dirp); @@ -2349,8 +2348,9 @@ abortop: } else { vput(nd.ni_vp); } } + vput(nd.ni_dvp); out: if (pathcp) free(pathcp, M_TEMP); if (dirp) { @@ -2474,8 +2474,9 @@ nfsrv_mkdir(struct nfsrv_descript *nfsd, if (!error) error = VOP_GETATTR(vp, &va, cred); vput(vp); } + vput(nd.ni_dvp); out: if (dirp) { if (v3) { vn_lock(dirp, LK_SHARED | LK_RETRY); Index: sys/nfs/nfs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/nfs/nfs_vnops.c,v retrieving revision 1.301 diff -p -u -4 -r1.301 nfs_vnops.c --- sys/nfs/nfs_vnops.c 15 Nov 2013 14:39:53 -0000 1.301 +++ sys/nfs/nfs_vnops.c 15 Jan 2014 11:57:45 -0000 @@ -1498,9 +1498,8 @@ nfs_mknodrpc(struct vnode *dvp, struct v else if (vap->va_type == VFIFO || vap->va_type == VSOCK) rdev = nfs_xdrneg1; else { VOP_ABORTOP(dvp, cnp); - vput(dvp); return (EOPNOTSUPP); } nfsstats.rpccnt[NFSPROC_MKNOD]++; dnp = VTONFS(dvp); @@ -1553,9 +1552,8 @@ nfs_mknodrpc(struct vnode *dvp, struct v } VTONFS(dvp)->n_flag |= NMODIFIED; if (!wccflag) NFS_INVALIDATE_ATTRCACHE(VTONFS(dvp)); - vput(dvp); return (error); } /* @@ -1565,9 +1563,9 @@ nfs_mknodrpc(struct vnode *dvp, struct v /* ARGSUSED */ int nfs_mknod(void *v) { - struct vop_mknod_args /* { + struct vop_mknod_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -1588,9 +1586,9 @@ nfs_mknod(void *v) */ int nfs_create(void *v) { - struct vop_create_args /* { + struct vop_create_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -1717,9 +1715,8 @@ again: VTONFS(dvp)->n_flag |= NMODIFIED; if (!wccflag) NFS_INVALIDATE_ATTRCACHE(VTONFS(dvp)); VN_KNOTE(ap->a_dvp, NOTE_WRITE); - vput(dvp); return (error); } /* @@ -2083,9 +2080,9 @@ nfs_link(void *v) */ int nfs_symlink(void *v) { - struct vop_symlink_args /* { + struct vop_symlink_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -2163,9 +2160,8 @@ nfs_symlink(void *v) VTONFS(dvp)->n_flag |= NMODIFIED; if (!wccflag) NFS_INVALIDATE_ATTRCACHE(VTONFS(dvp)); VN_KNOTE(dvp, NOTE_WRITE); - vput(dvp); return (error); } /* @@ -2173,9 +2169,9 @@ nfs_symlink(void *v) */ int nfs_mkdir(void *v) { - struct vop_mkdir_args /* { + struct vop_mkdir_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -2254,9 +2250,8 @@ nfs_mkdir(void *v) VN_KNOTE(dvp, NOTE_WRITE | NOTE_LINK); nfs_cache_enter(dvp, newvp, cnp); *ap->a_vpp = newvp; } - vput(dvp); return (error); } /* Index: sys/rump/include/rump/rumpvnode_if.h =================================================================== RCS file: /cvsroot/src/sys/rump/include/rump/rumpvnode_if.h,v retrieving revision 1.13 diff -p -u -4 -r1.13 rumpvnode_if.h --- sys/rump/include/rump/rumpvnode_if.h 17 Jul 2013 21:21:34 -0000 1.13 +++ sys/rump/include/rump/rumpvnode_if.h 15 Jan 2014 11:57:46 -0000 @@ -1,14 +1,14 @@ -/* $NetBSD: rumpvnode_if.h,v 1.13 2013/07/17 21:21:34 pooka Exp $ */ +/* $NetBSD$ */ /* * Warning: DO NOT EDIT! This file is automatically generated! * (Modifications made here may easily be lost!) * * Created from the file: * NetBSD: vnode_if.src,v 1.63 2011/10/14 09:23:31 hannken Exp * by the script: - * NetBSD: vnode_if.sh,v 1.59 2013/07/17 21:20:53 pooka Exp + * NetBSD: vnode_if.sh,v 1.60 2014/01/13 12:07:55 hannken Exp */ /* * Copyright (c) 1992, 1993, 1994, 1995 Index: sys/rump/librump/rumpvfs/rumpfs.c =================================================================== RCS file: /cvsroot/src/sys/rump/librump/rumpvfs/rumpfs.c,v retrieving revision 1.121 diff -p -u -4 -r1.121 rumpfs.c --- sys/rump/librump/rumpvfs/rumpfs.c 23 Nov 2013 13:35:36 -0000 1.121 +++ sys/rump/librump/rumpvfs/rumpfs.c 15 Jan 2014 11:57:46 -0000 @@ -992,9 +992,9 @@ rump_vop_setattr(void *v) static int rump_vop_mkdir(void *v) { - struct vop_mkdir_args /* { + struct vop_mkdir_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -1011,14 +1011,12 @@ rump_vop_mkdir(void *v) rn->rn_va.va_flags |= UF_OPAQUE; rn->rn_parent = rnd; rv = makevnode(dvp->v_mount, rn, vpp); if (rv) - goto out; + return rv; makedir(rnd, cnp, rn); - out: - vput(dvp); return rv; } static int @@ -1090,9 +1088,9 @@ rump_vop_remove(void *v) static int rump_vop_mknod(void *v) { - struct vop_mknod_args /* { + struct vop_mknod_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -1109,21 +1107,19 @@ rump_vop_mknod(void *v) if ((cnp->cn_flags & ISWHITEOUT) != 0) rn->rn_va.va_flags |= UF_OPAQUE; rv = makevnode(dvp->v_mount, rn, vpp); if (rv) - goto out; + return rv; makedir(rnd, cnp, rn); - out: - vput(dvp); return rv; } static int rump_vop_create(void *v) { - struct vop_create_args /* { + struct vop_create_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -1142,21 +1138,19 @@ rump_vop_create(void *v) if ((cnp->cn_flags & ISWHITEOUT) != 0) rn->rn_va.va_flags |= UF_OPAQUE; rv = makevnode(dvp->v_mount, rn, vpp); if (rv) - goto out; + return rv; makedir(rnd, cnp, rn); - out: - vput(dvp); return rv; } static int rump_vop_symlink(void *v) { - struct vop_symlink_args /* { + struct vop_symlink_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -1177,19 +1171,17 @@ rump_vop_symlink(void *v) if ((cnp->cn_flags & ISWHITEOUT) != 0) rn->rn_va.va_flags |= UF_OPAQUE; rv = makevnode(dvp->v_mount, rn, vpp); if (rv) - goto out; + return rv; makedir(rnd, cnp, rn); KASSERT(linklen < MAXPATHLEN); rn->rn_linktarg = PNBUF_GET(); rn->rn_linklen = linklen; strcpy(rn->rn_linktarg, target); - out: - vput(dvp); return rv; } static int Index: sys/rump/librump/rumpvfs/rumpvnode_if.c =================================================================== RCS file: /cvsroot/src/sys/rump/librump/rumpvfs/rumpvnode_if.c,v retrieving revision 1.12 diff -p -u -4 -r1.12 rumpvnode_if.c --- sys/rump/librump/rumpvfs/rumpvnode_if.c 17 Jul 2013 21:21:34 -0000 1.12 +++ sys/rump/librump/rumpvfs/rumpvnode_if.c 15 Jan 2014 11:57:46 -0000 @@ -1,14 +1,14 @@ -/* $NetBSD: rumpvnode_if.c,v 1.12 2013/07/17 21:21:34 pooka Exp $ */ +/* $NetBSD$ */ /* * Warning: DO NOT EDIT! This file is automatically generated! * (Modifications made here may easily be lost!) * * Created from the file: * NetBSD: vnode_if.src,v 1.63 2011/10/14 09:23:31 hannken Exp * by the script: - * NetBSD: vnode_if.sh,v 1.59 2013/07/17 21:20:53 pooka Exp + * NetBSD: vnode_if.sh,v 1.60 2014/01/13 12:07:55 hannken Exp */ /* * Copyright (c) 1992, 1993, 1994, 1995 @@ -39,9 +39,9 @@ * SUCH DAMAGE. */ #include -__KERNEL_RCSID(0, "$NetBSD: rumpvnode_if.c,v 1.12 2013/07/17 21:21:34 pooka Exp $"); +__KERNEL_RCSID(0, "$NetBSD$"); #include #include #include Index: sys/sys/vnode_if.h =================================================================== RCS file: /cvsroot/src/sys/sys/vnode_if.h,v retrieving revision 1.84 diff -p -u -4 -r1.84 vnode_if.h --- sys/sys/vnode_if.h 17 Jul 2013 21:21:34 -0000 1.84 +++ sys/sys/vnode_if.h 15 Jan 2014 11:57:46 -0000 @@ -1,14 +1,14 @@ -/* $NetBSD: vnode_if.h,v 1.84 2013/07/17 21:21:34 pooka Exp $ */ +/* $NetBSD$ */ /* * Warning: DO NOT EDIT! This file is automatically generated! * (Modifications made here may easily be lost!) * * Created from the file: * NetBSD: vnode_if.src,v 1.63 2011/10/14 09:23:31 hannken Exp * by the script: - * NetBSD: vnode_if.sh,v 1.59 2013/07/17 21:20:53 pooka Exp + * NetBSD: vnode_if.sh,v 1.60 2014/01/13 12:07:55 hannken Exp */ /* * Copyright (c) 1992, 1993, 1994, 1995 @@ -69,9 +69,9 @@ struct vop_lookup_args { extern const struct vnodeop_desc vop_lookup_desc; int VOP_LOOKUP(struct vnode *, struct vnode **, struct componentname *); #define VOP_CREATE_DESCOFFSET 3 -struct vop_create_args { +struct vop_create_v2_args { const struct vnodeop_desc *a_desc; struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; @@ -81,9 +81,9 @@ extern const struct vnodeop_desc vop_cre int VOP_CREATE(struct vnode *, struct vnode **, struct componentname *, struct vattr *); #define VOP_MKNOD_DESCOFFSET 4 -struct vop_mknod_args { +struct vop_mknod_v2_args { const struct vnodeop_desc *a_desc; struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; @@ -283,9 +283,9 @@ extern const struct vnodeop_desc vop_ren int VOP_RENAME(struct vnode *, struct vnode *, struct componentname *, struct vnode *, struct vnode *, struct componentname *); #define VOP_MKDIR_DESCOFFSET 23 -struct vop_mkdir_args { +struct vop_mkdir_v2_args { const struct vnodeop_desc *a_desc; struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; @@ -305,9 +305,9 @@ struct vop_rmdir_args { extern const struct vnodeop_desc vop_rmdir_desc; int VOP_RMDIR(struct vnode *, struct vnode *, struct componentname *); #define VOP_SYMLINK_DESCOFFSET 25 -struct vop_symlink_args { +struct vop_symlink_v2_args { const struct vnodeop_desc *a_desc; struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; Index: sys/ufs/chfs/chfs_vnode.c =================================================================== RCS file: /cvsroot/src/sys/ufs/chfs/chfs_vnode.c,v retrieving revision 1.8 diff -p -u -4 -r1.8 chfs_vnode.c --- sys/ufs/chfs/chfs_vnode.c 19 Oct 2012 12:44:39 -0000 1.8 +++ sys/ufs/chfs/chfs_vnode.c 15 Jan 2014 11:57:47 -0000 @@ -256,9 +256,8 @@ chfs_makeinode(int mode, struct vnode *d error = chfs_write_flash_vnode(chmp, ip, ALLOC_NORMAL); if (error) { mutex_exit(&chmp->chm_lock_mountfields); vput(vp); - vput(dvp); return error; } /* update parent's vnode information and write it to the flash */ @@ -268,12 +267,10 @@ chfs_makeinode(int mode, struct vnode *d error = chfs_write_flash_vnode(chmp, pdir, ALLOC_NORMAL); if (error) { mutex_exit(&chmp->chm_lock_mountfields); vput(vp); - vput(dvp); return error; } - vput(dvp); /* setup directory entry */ nfd = chfs_alloc_dirent(cnp->cn_namelen + 1); nfd->vno = ip->ino; Index: sys/ufs/chfs/chfs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/ufs/chfs/chfs_vnops.c,v retrieving revision 1.18 diff -p -u -4 -r1.18 chfs_vnops.c --- sys/ufs/chfs/chfs_vnops.c 20 Oct 2013 17:18:38 -0000 1.18 +++ sys/ufs/chfs/chfs_vnops.c 15 Jan 2014 11:57:47 -0000 @@ -173,9 +173,9 @@ out: int chfs_create(void *v) { - struct vop_create_args /* { + struct vop_create_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -206,12 +206,12 @@ chfs_create(void *v) int chfs_mknod(void *v) { - struct vnode *dvp = ((struct vop_mknod_args *) v)->a_dvp; - struct vnode **vpp = ((struct vop_mknod_args *) v)->a_vpp; - struct componentname *cnp = ((struct vop_mknod_args *) v)->a_cnp; - struct vattr *vap = ((struct vop_mknod_args *) v)->a_vap; + struct vnode *dvp = ((struct vop_mknod_v2_args *) v)->a_dvp; + struct vnode **vpp = ((struct vop_mknod_v2_args *) v)->a_vpp; + struct componentname *cnp = ((struct vop_mknod_v2_args *) v)->a_cnp; + struct vattr *vap = ((struct vop_mknod_v2_args *) v)->a_vap; int mode, err = 0; struct chfs_inode *ip; struct vnode *vp; @@ -1178,12 +1178,12 @@ out_unlocked: int chfs_mkdir(void *v) { - struct vnode *dvp = ((struct vop_mkdir_args *) v)->a_dvp; - struct vnode **vpp = ((struct vop_mkdir_args *)v)->a_vpp; - struct componentname *cnp = ((struct vop_mkdir_args *) v)->a_cnp; - struct vattr *vap = ((struct vop_mkdir_args *) v)->a_vap; + struct vnode *dvp = ((struct vop_mkdir_v2_args *) v)->a_dvp; + struct vnode **vpp = ((struct vop_mkdir_v2_args *)v)->a_vpp; + struct componentname *cnp = ((struct vop_mkdir_v2_args *) v)->a_cnp; + struct vattr *vap = ((struct vop_mkdir_v2_args *) v)->a_vap; dbg("mkdir()\n"); int mode; @@ -1243,13 +1243,13 @@ out: int chfs_symlink(void *v) { - struct vnode *dvp = ((struct vop_symlink_args *) v)->a_dvp; - struct vnode **vpp = ((struct vop_symlink_args *) v)->a_vpp; - struct componentname *cnp = ((struct vop_symlink_args *) v)->a_cnp; - struct vattr *vap = ((struct vop_symlink_args *) v)->a_vap; - char *target = ((struct vop_symlink_args *) v)->a_target; + struct vnode *dvp = ((struct vop_symlink_v2_args *) v)->a_dvp; + struct vnode **vpp = ((struct vop_symlink_v2_args *) v)->a_vpp; + struct componentname *cnp = ((struct vop_symlink_v2_args *) v)->a_cnp; + struct vattr *vap = ((struct vop_symlink_v2_args *) v)->a_vap; + char *target = ((struct vop_symlink_v2_args *) v)->a_target; struct ufsmount *ump; struct chfs_mount *chmp; struct vnode *vp; Index: sys/ufs/ext2fs/ext2fs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/ufs/ext2fs/ext2fs_vnops.c,v retrieving revision 1.107 diff -p -u -4 -r1.107 ext2fs_vnops.c --- sys/ufs/ext2fs/ext2fs_vnops.c 18 Mar 2013 19:35:47 -0000 1.107 +++ sys/ufs/ext2fs/ext2fs_vnops.c 15 Jan 2014 11:57:47 -0000 @@ -125,9 +125,9 @@ union _qcvt { */ int ext2fs_create(void *v) { - struct vop_create_args /* { + struct vop_create_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -150,9 +150,9 @@ ext2fs_create(void *v) /* ARGSUSED */ int ext2fs_mknod(void *v) { - struct vop_mknod_args /* { + struct vop_mknod_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -648,9 +648,9 @@ out2: */ int ext2fs_mkdir(void *v) { - struct vop_mkdir_args /* { + struct vop_mkdir_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -767,9 +767,8 @@ bad: VN_KNOTE(dvp, NOTE_WRITE | NOTE_LINK); *ap->a_vpp = tvp; } out: - vput(dvp); return (error); } /* @@ -864,9 +863,9 @@ out: */ int ext2fs_symlink(void *v) { - struct vop_symlink_args /* { + struct vop_symlink_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -1045,9 +1044,8 @@ ext2fs_makeinode(int mode, struct vnode if ((mode & IFMT) == 0) mode |= IFREG; if ((error = ext2fs_valloc(dvp, mode, cnp->cn_cred, &tvp)) != 0) { - vput(dvp); return (error); } ip = VTOI(tvp); ip->i_uid = kauth_cred_geteuid(cnp->cn_cred); @@ -1082,9 +1080,8 @@ ext2fs_makeinode(int mode, struct vnode goto bad; error = ext2fs_direnter(ip, dvp, ulr, cnp); if (error != 0) goto bad; - vput(dvp); *vpp = tvp; return (0); bad: @@ -1095,9 +1092,8 @@ bad: tvp->v_type = VNON; /* Stop explosion if VBLK */ ip->i_e2fs_nlink = 0; ip->i_flag |= IN_CHANGE; vput(tvp); - vput(dvp); return (error); } /* Index: sys/ufs/lfs/lfs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/ufs/lfs/lfs_vnops.c,v retrieving revision 1.259 diff -p -u -4 -r1.259 lfs_vnops.c --- sys/ufs/lfs/lfs_vnops.c 18 Oct 2013 15:15:22 -0000 1.259 +++ sys/ufs/lfs/lfs_vnops.c 15 Jan 2014 11:57:47 -0000 @@ -552,9 +552,9 @@ lfs_unmark_vnode(struct vnode *vp) int lfs_symlink(void *v) { - struct vop_symlink_args /* { + struct vop_symlink_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -562,9 +562,8 @@ lfs_symlink(void *v) } */ *ap = v; int error; if ((error = SET_DIROP_CREATE(ap->a_dvp, ap->a_vpp)) != 0) { - vput(ap->a_dvp); return error; } error = ulfs_symlink(ap); SET_ENDOP_CREATE_AP(ap, "symlink"); @@ -573,9 +572,9 @@ lfs_symlink(void *v) int lfs_mknod(void *v) { - struct vop_mknod_args /* { + struct vop_mknod_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -595,9 +594,8 @@ lfs_mknod(void *v) ulr = &VTOI(ap->a_dvp)->i_crap; ULFS_CHECK_CRAPCOUNTER(VTOI(ap->a_dvp)); if ((error = SET_DIROP_CREATE(ap->a_dvp, ap->a_vpp)) != 0) { - vput(ap->a_dvp); return error; } fstrans_start(ap->a_dvp->v_mount, FSTRANS_SHARED); @@ -668,18 +666,17 @@ lfs_mknod(void *v) int lfs_create(void *v) { - struct vop_create_args /* { + struct vop_create_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; } */ *ap = v; int error; if ((error = SET_DIROP_CREATE(ap->a_dvp, ap->a_vpp)) != 0) { - vput(ap->a_dvp); return error; } error = ulfs_create(ap); SET_ENDOP_CREATE_AP(ap, "create"); @@ -688,18 +685,17 @@ lfs_create(void *v) int lfs_mkdir(void *v) { - struct vop_mkdir_args /* { + struct vop_mkdir_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; } */ *ap = v; int error; if ((error = SET_DIROP_CREATE(ap->a_dvp, ap->a_vpp)) != 0) { - vput(ap->a_dvp); return error; } error = ulfs_mkdir(ap); SET_ENDOP_CREATE_AP(ap, "mkdir"); Index: sys/ufs/lfs/ulfs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/ufs/lfs/ulfs_vnops.c,v retrieving revision 1.18 diff -p -u -4 -r1.18 ulfs_vnops.c --- sys/ufs/lfs/ulfs_vnops.c 28 Jul 2013 01:10:49 -0000 1.18 +++ sys/ufs/lfs/ulfs_vnops.c 15 Jan 2014 11:57:47 -0000 @@ -126,9 +126,9 @@ static const struct lfs_dirtemplate mast */ int ulfs_create(void *v) { - struct vop_create_args /* { + struct vop_create_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -713,9 +713,9 @@ ulfs_whiteout(void *v) int ulfs_mkdir(void *v) { - struct vop_mkdir_args /* { + struct vop_mkdir_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -764,9 +764,8 @@ ulfs_mkdir(void *v) if ((error = lfs_chkiq(ip, 1, cnp->cn_cred, 0))) { lfs_vfree(tvp, ip->i_number, dmode); fstrans_done(dvp->v_mount); vput(tvp); - vput(dvp); return (error); } #endif ip->i_flag |= IN_ACCESS | IN_CHANGE | IN_UPDATE; @@ -857,9 +856,8 @@ ulfs_mkdir(void *v) vput(tvp); } out: fstrans_done(dvp->v_mount); - vput(dvp); return (error); } int @@ -958,9 +956,9 @@ ulfs_rmdir(void *v) */ int ulfs_symlink(void *v) { - struct vop_symlink_args /* { + struct vop_symlink_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -1428,9 +1426,8 @@ ulfs_makeinode(int mode, struct vnode *d if ((mode & LFS_IFMT) == 0) mode |= LFS_IFREG; if ((error = lfs_valloc(dvp, mode, cnp->cn_cred, vpp)) != 0) { - vput(dvp); return (error); } tvp = *vpp; ip = VTOI(tvp); @@ -1441,9 +1438,8 @@ ulfs_makeinode(int mode, struct vnode *d #if defined(LFS_QUOTA) || defined(LFS_QUOTA2) if ((error = lfs_chkiq(ip, 1, cnp->cn_cred, 0))) { lfs_vfree(tvp, ip->i_number, mode); vput(tvp); - vput(dvp); return (error); } #endif ip->i_flag |= IN_ACCESS | IN_CHANGE | IN_UPDATE; @@ -1479,9 +1475,8 @@ ulfs_makeinode(int mode, struct vnode *d error = ulfs_direnter(dvp, ulr, tvp, newdir, cnp, NULL); pool_cache_put(ulfs_direct_cache, newdir); if (error) goto bad; - vput(dvp); *vpp = tvp; return (0); bad: @@ -1495,9 +1490,8 @@ ulfs_makeinode(int mode, struct vnode *d /* If IN_ADIROP, account for it */ lfs_unmark_vnode(tvp); tvp->v_type = VNON; /* explodes later if VBLK */ vput(tvp); - vput(dvp); return (error); } /* Index: sys/ufs/ufs/ufs_vnops.c =================================================================== RCS file: /cvsroot/src/sys/ufs/ufs/ufs_vnops.c,v retrieving revision 1.218 diff -p -u -4 -r1.218 ufs_vnops.c --- sys/ufs/ufs/ufs_vnops.c 15 Sep 2013 15:32:18 -0000 1.218 +++ sys/ufs/ufs/ufs_vnops.c 15 Jan 2014 11:57:47 -0000 @@ -133,9 +133,9 @@ static const struct dirtemplate masterte */ int ufs_create(void *v) { - struct vop_create_args /* { + struct vop_create_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -172,9 +172,9 @@ ufs_create(void *v) /* ARGSUSED */ int ufs_mknod(void *v) { - struct vop_mknod_args /* { + struct vop_mknod_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -968,9 +968,9 @@ ufs_whiteout(void *v) int ufs_mkdir(void *v) { - struct vop_mkdir_args /* { + struct vop_mkdir_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -1025,9 +1025,8 @@ ufs_mkdir(void *v) UFS_VFREE(tvp, ip->i_number, dmode); UFS_WAPBL_END(dvp->v_mount); fstrans_done(dvp->v_mount); vput(tvp); - vput(dvp); return (error); } #endif ip->i_flag |= IN_ACCESS | IN_CHANGE | IN_UPDATE; @@ -1120,9 +1119,8 @@ ufs_mkdir(void *v) vput(tvp); } out: fstrans_done(dvp->v_mount); - vput(dvp); return (error); } int @@ -1231,9 +1229,9 @@ ufs_rmdir(void *v) */ int ufs_symlink(void *v) { - struct vop_symlink_args /* { + struct vop_symlink_v2_args /* { struct vnode *a_dvp; struct vnode **a_vpp; struct componentname *a_cnp; struct vattr *a_vap; @@ -1828,9 +1826,8 @@ ufs_makeinode(int mode, struct vnode *dv if ((mode & IFMT) == 0) mode |= IFREG; if ((error = UFS_VALLOC(dvp, mode, cnp->cn_cred, vpp)) != 0) { - vput(dvp); return (error); } tvp = *vpp; ip = VTOI(tvp); @@ -1845,17 +1842,15 @@ ufs_makeinode(int mode, struct vnode *dv * because we can't write to the disk. Instead, we leave * the vnode dangling from the journal. */ vput(tvp); - vput(dvp); return (error); } #if defined(QUOTA) || defined(QUOTA2) if ((error = chkiq(ip, 1, cnp->cn_cred, 0))) { UFS_VFREE(tvp, ip->i_number, mode); UFS_WAPBL_END1(dvp->v_mount, dvp); vput(tvp); - vput(dvp); return (error); } #endif ip->i_flag |= IN_ACCESS | IN_CHANGE | IN_UPDATE; @@ -1891,9 +1886,8 @@ ufs_makeinode(int mode, struct vnode *dv error = ufs_direnter(dvp, ulr, tvp, newdir, cnp, NULL); pool_cache_put(ufs_direct_cache, newdir); if (error) goto bad; - vput(dvp); *vpp = tvp; return (0); bad: @@ -1907,9 +1901,8 @@ ufs_makeinode(int mode, struct vnode *dv UFS_WAPBL_UPDATE(tvp, NULL, NULL, 0); tvp->v_type = VNON; /* explodes later if VBLK */ UFS_WAPBL_END1(dvp->v_mount, dvp); vput(tvp); - vput(dvp); return (error); } /*