Print this page
NEX-16052 NFS clients cannot reconnect to server after network loss (autofs)
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
Reviewed by: Joyce McIntosh <joyce.mcintosh@nexenta.com>
Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
NEX-4123 xdrmblk_getpos() is unreliable
Reviewed by: Josef 'Jeff' Sipek <josef.sipek@nexenta.com>
Reviewed by: Yuri Pankov <yuri.pankov@nexenta.com>
re #13613 rb4516 Tunables needs volatile keyword
        
@@ -18,11 +18,11 @@
  *
  * CDDL HEADER END
  */
 
 /*
- * Copyright 2016 Nexenta Systems, Inc.  All rights reserved.
+ * Copyright 2018 Nexenta Systems, Inc.  All rights reserved.
  * Copyright (c) 2016 by Delphix. All rights reserved.
  */
 
 /*
  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
@@ -472,11 +472,11 @@
 
 #define COTSRCSTAT_INCR(p, x)   \
         atomic_inc_64(&(p)->x.value.ui64)
 
 #define CLNT_MAX_CONNS  1       /* concurrent connections between clnt/srvr */
-int clnt_max_conns = CLNT_MAX_CONNS;
+volatile int clnt_max_conns = CLNT_MAX_CONNS;
 
 #define CLNT_MIN_TIMEOUT        10      /* seconds to wait after we get a */
                                         /* connection reset */
 #define CLNT_MIN_CONNTIMEOUT    5       /* seconds to wait for a connection */
 
@@ -2278,10 +2278,11 @@
                  * NULL to caller.
                  */
                 if (rpcerr->re_status == RPC_SUCCESS)
                         rpcerr->re_status = RPC_XPRTFAILED;
                 cm_entry->x_connected = FALSE;
+                cm_entry->x_dead = TRUE;
         } else
                 cm_entry->x_connected = connected;
 
         /*
          * There could be a discrepancy here such that
@@ -2396,10 +2397,11 @@
                          * NULL to caller.
                          */
                         if (rpcerr->re_status == RPC_SUCCESS)
                                 rpcerr->re_status = RPC_XPRTFAILED;
                         cm_entry->x_connected = FALSE;
+                        cm_entry->x_dead = TRUE;
                 } else
                         cm_entry->x_connected = connected;
 
                 /*
                  * There could be a discrepancy here such that