Module Name: src Committed By: pooka Date: Tue Nov 30 15:42:12 UTC 2010
Modified Files: src/lib/libp2k: p2k.c Log Message: Remove dead code from previous revision. To generate a diff of this commit: cvs rdiff -u -r1.46 -r1.47 src/lib/libp2k/p2k.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/libp2k/p2k.c diff -u src/lib/libp2k/p2k.c:1.46 src/lib/libp2k/p2k.c:1.47 --- src/lib/libp2k/p2k.c:1.46 Tue Nov 30 10:49:22 2010 +++ src/lib/libp2k/p2k.c Tue Nov 30 15:42:11 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: p2k.c,v 1.46 2010/11/30 10:49:22 dholland Exp $ */ +/* $NetBSD: p2k.c,v 1.47 2010/11/30 15:42:11 pooka Exp $ */ /* * Copyright (c) 2007, 2008, 2009 Antti Kantee. All Rights Reserved. @@ -84,7 +84,6 @@ struct p2k_node { struct vnode *p2n_vp; - struct componentname *p2n_cn; /* * Ok, then, uhm, we need .. *drumroll*.. two componentname @@ -134,21 +133,21 @@ } static struct componentname * -makecn(const struct puffs_cn *pcn, int myflags) +makecn(const struct puffs_cn *pcn) { struct kauth_cred *cred; cred = cred_create(pcn->pcn_cred); /* LINTED: prehistoric types in first two args */ - return rump_pub_makecn(pcn->pcn_nameiop, pcn->pcn_flags | myflags, + return rump_pub_makecn(pcn->pcn_nameiop, pcn->pcn_flags, pcn->pcn_name, pcn->pcn_namelen, cred, rump_pub_lwproc_curlwp()); } static __inline void -freecn(struct componentname *cnp, int flags) +freecn(struct componentname *cnp) { - rump_pub_freecn(cnp, flags | RUMPCN_FREECRED); + rump_pub_freecn(cnp, RUMPCN_FREECRED); } static void @@ -218,7 +217,6 @@ { assert(p2n->p2n_vp == NULL); - assert(p2n->p2n_cn == NULL); LIST_REMOVE(p2n, p2n_entries); free(p2n); } @@ -675,48 +673,42 @@ uint64_t rdev; /* XXX: uint64_t because of stack overwrite in compat */ int rv; - cn = makecn(pcn, 0); + cn = makecn(pcn); RUMP_VOP_LOCK(dvp, LK_EXCLUSIVE); rv = RUMP_VOP_LOOKUP(dvp, &vp, cn); RUMP_VOP_UNLOCK(dvp); - if (rump_pub_checksavecn(cn)) { - /* - * XXX the rename lookup protocol is currently horribly - * broken. We get 1) DELETE with SAVESTART 2) DELETE - * without SAVESTART 3) RENAME. Hold on to this like - * it were the absolute truth for now. However, do - * not sprinkle asserts based on this due to abovementioned - * brokenness -- some file system drivers might not - * even issue ABORT properly, so just free resources - * on the fly and hope for the best. PR kern/42348 - */ - if (pcn->pcn_flags & RUMP_NAMEI_INRENAME) { - if (pcn->pcn_nameiop == RUMP_NAMEI_DELETE) { - /* save path from the first lookup */ - if (pcn->pcn_flags & RUMP_NAMEI_SAVESTART) { - if (p2n_dir->p2n_cn_ren_src) - freecn(p2n_dir->p2n_cn_ren_src, - 0); - p2n_dir->p2n_cn_ren_src = cn; - } else { - freecn(cn, 0); - cn = NULL; - } + + /* + * XXX the rename lookup protocol is currently horribly + * broken. We get 1) DELETE with SAVESTART 2) DELETE + * without SAVESTART 3) RENAME. Hold on to this like + * it were the absolute truth for now. However, do + * not sprinkle asserts based on this due to abovementioned + * brokenness -- some file system drivers might not + * even issue ABORT properly, so just free resources + * on the fly and hope for the best. PR kern/42348 + */ + if (pcn->pcn_flags & RUMP_NAMEI_INRENAME) { + if (pcn->pcn_nameiop == RUMP_NAMEI_DELETE) { + /* save path from the first lookup */ + if (pcn->pcn_flags & RUMP_NAMEI_SAVESTART) { + if (p2n_dir->p2n_cn_ren_src) + freecn(p2n_dir->p2n_cn_ren_src); + p2n_dir->p2n_cn_ren_src = cn; } else { - assert(pcn->pcn_nameiop == RUMP_NAMEI_RENAME); - if (p2n_dir->p2n_cn_ren_targ) - freecn(p2n_dir->p2n_cn_ren_targ, - 0); - p2n_dir->p2n_cn_ren_targ = cn; + freecn(cn); + cn = NULL; } } else { - assert(p2n_dir->p2n_cn == NULL); - p2n_dir->p2n_cn = cn; + assert(pcn->pcn_nameiop == RUMP_NAMEI_RENAME); + if (p2n_dir->p2n_cn_ren_targ) + freecn(p2n_dir->p2n_cn_ren_targ); + p2n_dir->p2n_cn_ren_targ = cn; } } else { - freecn(cn, 0); - cn = NULL; + freecn(cn); } + if (rv) { if (rv == EJUSTRETURN) { rv = ENOENT; @@ -733,11 +725,9 @@ } else { p2n_dir->p2n_cn_ren_targ = NULL; } - } else { - p2n_dir->p2n_cn = NULL; + + RUMP_VOP_ABORTOP(dvp, cn); } - /* XXX: what in the world should happen with SAVESTART? */ - RUMP_VOP_ABORTOP(dvp, cn); return ENOMEM; } @@ -799,13 +789,7 @@ return ENOMEM; DOCOMPAT(vap, va_x); - if (p2n_dir->p2n_cn) { - cn = p2n_dir->p2n_cn; - p2n_dir->p2n_cn = NULL; - } else { - cn = makecn(pcn, 0); - } - + cn = makecn(pcn); RUMP_VOP_LOCK(dvp, LK_EXCLUSIVE); rump_pub_vp_incref(dvp); if (makefn) { @@ -814,7 +798,7 @@ rv = symfn(dvp, &vp, cn, va_x, link_target); } assert(RUMP_VOP_ISLOCKED(dvp) == 0); - freecn(cn, 0); + freecn(cn); if (rv == 0) { RUMP_VOP_UNLOCK(vp); @@ -1027,16 +1011,12 @@ struct p2k_node *p2n_dir = opc; struct componentname *cnp; - if ((cnp = p2n_dir->p2n_cn) != NULL) { - freecn(cnp, 0); - p2n_dir->p2n_cn = NULL; - } if ((cnp = p2n_dir->p2n_cn_ren_src) != NULL) { - freecn(cnp, 0); + freecn(cnp); p2n_dir->p2n_cn_ren_src = NULL; } if ((cnp = p2n_dir->p2n_cn_ren_targ) != NULL) { - freecn(cnp, 0); + freecn(cnp); p2n_dir->p2n_cn_ren_targ = NULL; } @@ -1052,13 +1032,7 @@ struct componentname *cn; int rv; - if (p2n_dir->p2n_cn) { - cn = p2n_dir->p2n_cn; - p2n_dir->p2n_cn = NULL; - } else { - cn = makecn(pcn, 0); - } - + cn = makecn(pcn); RUMP_VOP_LOCK(dvp, LK_EXCLUSIVE); rump_pub_vp_incref(dvp); RUMP_VOP_LOCK(vp, LK_EXCLUSIVE); @@ -1066,7 +1040,7 @@ rv = nukefn(dvp, vp, cn); assert(RUMP_VOP_ISLOCKED(dvp) == 0); assert(RUMP_VOP_ISLOCKED(vp) == 0); - freecn(cn, 0); + freecn(cn); return rv; @@ -1087,21 +1061,14 @@ puffs_cookie_t targ, const struct puffs_cn *pcn) { struct vnode *dvp = OPC2VP(opc); - struct p2k_node *p2n_dir = opc; struct componentname *cn; int rv; - if (p2n_dir->p2n_cn) { - cn = p2n_dir->p2n_cn; - p2n_dir->p2n_cn = NULL; - } else { - cn = makecn(pcn, 0); - } - + cn = makecn(pcn); RUMP_VOP_LOCK(dvp, LK_EXCLUSIVE); rump_pub_vp_incref(dvp); rv = RUMP_VOP_LINK(dvp, OPC2VP(targ), cn); - freecn(cn, 0); + freecn(cn); return rv; } @@ -1123,14 +1090,14 @@ cn_src = p2n_srcdir->p2n_cn_ren_src; p2n_srcdir->p2n_cn_ren_src = NULL; } else { - cn_src = makecn(pcn_src, 0); + cn_src = makecn(pcn_src); } if (p2n_targdir->p2n_cn_ren_targ) { cn_targ = p2n_targdir->p2n_cn_ren_targ; p2n_targdir->p2n_cn_ren_targ = NULL; } else { - cn_targ = makecn(pcn_targ, 0); + cn_targ = makecn(pcn_targ); } dvp = OPC2VP(src_dir); @@ -1153,8 +1120,8 @@ if (tvp) { assert(RUMP_VOP_ISLOCKED(tvp) == 0); } - freecn(cn_src, 0); - freecn(cn_targ, 0); + freecn(cn_src); + freecn(cn_targ); return rv; }