summaryrefslogtreecommitdiffstats
path: root/sys/coda/coda_vnops.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/coda/coda_vnops.c')
-rw-r--r--sys/coda/coda_vnops.c21
1 files changed, 9 insertions, 12 deletions
diff --git a/sys/coda/coda_vnops.c b/sys/coda/coda_vnops.c
index 94d95d9..75de19f 100644
--- a/sys/coda/coda_vnops.c
+++ b/sys/coda/coda_vnops.c
@@ -1289,21 +1289,18 @@ coda_rename(struct vop_rename_args *ap)
/* XXX - do we need to call cache pureg on the moved vnode? */
cache_purge(ap->a_fvp);
- /* It seems to be incumbent on us to drop locks on all four vnodes */
- /* From-vnodes are not locked, only ref'd. To-vnodes are locked. */
-
- vrele(ap->a_fvp);
+ /* Release parents first, then children. */
vrele(odvp);
-
if (ap->a_tvp) {
- if (ap->a_tvp == ndvp) {
- vrele(ap->a_tvp);
- } else {
- vput(ap->a_tvp);
- }
- }
+ if (ap->a_tvp == ndvp)
+ vrele(ndvp);
+ else
+ vput(ndvp);
+ vput(ap->a_tvp);
+ } else
+ vput(ndvp);
+ vrele(ap->a_fvp);
- vput(ndvp);
return(error);
}
OpenPOWER on IntegriCloud