Module Name: src Committed By: snj Date: Sat Sep 26 18:53:48 UTC 2009
Modified Files: src/sys/fs/puffs [netbsd-5]: puffs_vnops.c Log Message: Pull up following revision(s) (requested by pooka in ticket #1014): sys/fs/puffs/puffs_vnops.c: revision 1.133 Set SAVENAME for rmdir and remove. Addresses an easy part of PR kern/38188 To generate a diff of this commit: cvs rdiff -u -r1.129 -r1.129.4.1 src/sys/fs/puffs/puffs_vnops.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/fs/puffs/puffs_vnops.c diff -u src/sys/fs/puffs/puffs_vnops.c:1.129 src/sys/fs/puffs/puffs_vnops.c:1.129.4.1 --- src/sys/fs/puffs/puffs_vnops.c:1.129 Wed Sep 10 19:25:33 2008 +++ src/sys/fs/puffs/puffs_vnops.c Sat Sep 26 18:53:48 2009 @@ -1,4 +1,4 @@ -/* $NetBSD: puffs_vnops.c,v 1.129 2008/09/10 19:25:33 christos Exp $ */ +/* $NetBSD: puffs_vnops.c,v 1.129.4.1 2009/09/26 18:53:48 snj Exp $ */ /* * Copyright (c) 2005, 2006, 2007 Antti Kantee. All Rights Reserved. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: puffs_vnops.c,v 1.129 2008/09/10 19:25:33 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: puffs_vnops.c,v 1.129.4.1 2009/09/26 18:53:48 snj Exp $"); #include <sys/param.h> #include <sys/fstrans.h> @@ -580,6 +580,13 @@ cnp->cn_consume = MIN(lookup_msg->pvnr_cn.pkcn_consume, strlen(cnp->cn_nameptr) - cnp->cn_namelen); + /* + * We need the name in remove and rmdir (well, rename too, but + * SAVESTART takes care of that) + */ + if (cnp->cn_nameiop == DELETE) + cnp->cn_flags |= SAVENAME; + out: if (cnp->cn_flags & ISDOTDOT) vn_lock(dvp, LK_EXCLUSIVE | LK_RETRY); @@ -1438,6 +1445,8 @@ RELEPN_AND_VP(vp, pn); error = checkerr(pmp, error, __func__); + if (error || (cnp->cn_flags & SAVESTART) == 0) + PNBUF_PUT(cnp->cn_pnbuf); return error; } @@ -1543,6 +1552,9 @@ RELEPN_AND_VP(dvp, dpn); RELEPN_AND_VP(vp, pn); + if (error || (cnp->cn_flags & SAVESTART) == 0) + PNBUF_PUT(cnp->cn_pnbuf); + return error; }