changeset 284:6b3591f4954d

6295532 weird NFS warnings of "try_failover: unexpected rpc error" during halt if zones are active
author ek110237
date Wed, 03 Aug 2005 14:12:25 -0700
parents f7518827bcbb
children 0a8c4f500a47
files usr/src/uts/common/fs/nfs/nfs4_recovery.c
diffstat 1 files changed, 15 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/uts/common/fs/nfs/nfs4_recovery.c	Wed Aug 03 13:46:46 2005 -0700
+++ b/usr/src/uts/common/fs/nfs/nfs4_recovery.c	Wed Aug 03 14:12:25 2005 -0700
@@ -2652,7 +2652,7 @@
 {
 	nfs4_lost_rqst_t	*lrp, *tlrp;
 	mntinfo4_t		*mi = recovp->rc_mi;
-	nfs4_error_t		e;
+	nfs4_error_t		n4e;
 #ifdef NOTYET
 	uint32_t		deny_bits = 0;
 #endif
@@ -2666,10 +2666,12 @@
 	lrp = list_head(&mi->mi_lost_state);
 	mutex_exit(&mi->mi_lock);
 	while (lrp != NULL) {
-		resend_one_op(lrp, &e, mi, sp);
+		nfs4_error_zinit(&n4e);
+		resend_one_op(lrp, &n4e, mi, sp);
 		NFS4_DEBUG(nfs4_lost_rqst_debug, (CE_NOTE,
 		    "nfs4_resend_lost_rqsts: resend request: for vp %p got "
-		    "error %d stat %d", (void *)lrp->lr_vp, e.error, e.stat));
+		    "error %d stat %d", (void *)lrp->lr_vp, n4e.error,
+		    n4e.stat));
 
 		/*
 		 * If we get a recovery error that we can actually
@@ -2678,11 +2680,11 @@
 		 * Don't requeue unless the zone is still healthy.
 		 */
 		if (zone_status_get(curproc->p_zone) < ZONE_IS_SHUTTING_DOWN &&
-		    nfs4_needs_recovery(&e, TRUE, mi->mi_vfsp) &&
-		    (nfs4_try_failover(&e) ||
-		    NFS4_FRC_UNMT_ERR(e.error, mi->mi_vfsp) ||
-		    (e.error == 0 && e.stat != NFS4ERR_BADHANDLE &&
-		    !nfs4_recov_marks_dead(e.stat)))) {
+		    nfs4_needs_recovery(&n4e, TRUE, mi->mi_vfsp) &&
+		    (nfs4_try_failover(&n4e) ||
+		    NFS4_FRC_UNMT_ERR(n4e.error, mi->mi_vfsp) ||
+		    (n4e.error == 0 && n4e.stat != NFS4ERR_BADHANDLE &&
+		    !nfs4_recov_marks_dead(n4e.stat)))) {
 			/*
 			 * For these three errors, we want to delay a bit
 			 * instead of pounding the server into submission.
@@ -2690,13 +2692,13 @@
 			 * processing for these errors only works for
 			 * non-recovery requests.
 			 */
-			if ((e.error == 0 && e.stat == NFS4ERR_DELAY) ||
-			    (e.error == 0 && e.stat == NFS4ERR_GRACE) ||
-			    (e.error == 0 && e.stat == NFS4ERR_RESOURCE) ||
-			    NFS4_FRC_UNMT_ERR(e.error, mi->mi_vfsp)) {
+			if ((n4e.error == 0 && n4e.stat == NFS4ERR_DELAY) ||
+			    (n4e.error == 0 && n4e.stat == NFS4ERR_GRACE) ||
+			    (n4e.error == 0 && n4e.stat == NFS4ERR_RESOURCE) ||
+			    NFS4_FRC_UNMT_ERR(n4e.error, mi->mi_vfsp)) {
 				delay(SEC_TO_TICK(nfs4err_delay_time));
 			} else {
-				(void) nfs4_start_recovery(&e,
+				(void) nfs4_start_recovery(&n4e,
 					mi, lrp->lr_dvp, lrp->lr_vp, NULL, NULL,
 					lrp->lr_op, NULL);
 			}