summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
authorevanl <none@none>2007-01-03 06:54:36 -0800
committerevanl <none@none>2007-01-03 06:54:36 -0800
commitfa864c018a8a591e2185f96815ba4d33afb14236 (patch)
tree6ffe3345776fac57d1b93537daeb5424ef57d430 /usr/src
parent7ef01d19733736b76dbf3fcffc88ee683858206a (diff)
downloadillumos-joyent-fa864c018a8a591e2185f96815ba4d33afb14236.tar.gz
6395357 nfsv4 client paniced at nfs:nfs4_waitfor_purge_complete
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/uts/common/fs/nfs/nfs4_vnops.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/usr/src/uts/common/fs/nfs/nfs4_vnops.c b/usr/src/uts/common/fs/nfs/nfs4_vnops.c
index 7c044d6d76..ba1155d523 100644
--- a/usr/src/uts/common/fs/nfs/nfs4_vnops.c
+++ b/usr/src/uts/common/fs/nfs/nfs4_vnops.c
@@ -19,7 +19,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -1528,6 +1528,14 @@ recov_retry:
" remove file", e.error));
VN_RELE(vp);
(void) nfs4_remove(dvp, file_name, cr);
+ /*
+ * Since we've reled the vnode and removed
+ * the file we now need to return the error.
+ * At this point we don't want to update the
+ * dircaches, call nfs4_waitfor_purge_complete
+ * or set vpp to vp so we need to skip these
+ * as well.
+ */
goto skip_update_dircaches;
}
}
@@ -1558,7 +1566,6 @@ recov_retry:
nfs4_update_dircaches(&op_res->cinfo, dvp, vp, file_name,
dinfop);
}
-skip_update_dircaches:
/*
* If the page cache for this file was flushed from actions
@@ -1580,6 +1587,8 @@ skip_update_dircaches:
*/
*vpp = vp;
+skip_update_dircaches:
+
nfs4args_copen_free(open_args);
if (setgid_flag) {
nfs4args_verify_free(&argop[8]);