<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">Index: openafs/src/NTMakefile
diff -c openafs/src/NTMakefile:1.27.2.9 openafs/src/NTMakefile:1.27.2.10
*** openafs/src/NTMakefile:1.27.2.9	Sat Jun 28 19:42:54 2008
--- openafs/src/NTMakefile	Tue Jul 22 11:02:56 2008
***************
*** 47,60 ****
  	$(NTMAKE)
  	$(CD) ..\..
  
! man-pages: config
!      echo ***** $@
!         $(DOCD) $(DOC)\man-pages
!         $(CD) $(DOC)\man-pages
!         $(NTMAKE)
!         $(CD) ..\..
! 
! procmgmt_headers: man-pages
       echo ***** $@
  	$(DOCD) $(SRC)\procmgmt
  	$(CD) $(SRC)\procmgmt
--- 47,53 ----
  	$(NTMAKE)
  	$(CD) ..\..
  
! procmgmt_headers: config
       echo ***** $@
  	$(DOCD) $(SRC)\procmgmt
  	$(CD) $(SRC)\procmgmt
***************
*** 660,673 ****
     $(NTMAKE)
     $(CD) ..\..\..\..
  
! NSIS: loopback
     echo ***** Making NSIS Installer
     $(DOCD) $(SRC)\WINNT\install\$@
     $(CD) $(SRC)\WINNT\install\$@
     $(NTMAKE)
     $(CD) ..\..\..\..
  
! wix: loopback
     echo ***** Making Wix MSI Installer
     $(DOCD) $(SRC)\WINNT\install\$@
     $(CD) $(SRC)\WINNT\install\$@
--- 653,673 ----
     $(NTMAKE)
     $(CD) ..\..\..\..
  
! man-pages: 
!    echo ***** $@
!    $(DOCD) $(DOC)\man-pages
!    $(CD) $(DOC)\man-pages
!    $(NTMAKE)
!    $(CD) ..\..
! 
! NSIS: loopback man-pages
     echo ***** Making NSIS Installer
     $(DOCD) $(SRC)\WINNT\install\$@
     $(CD) $(SRC)\WINNT\install\$@
     $(NTMAKE)
     $(CD) ..\..\..\..
  
! wix: loopback man-pages
     echo ***** Making Wix MSI Installer
     $(DOCD) $(SRC)\WINNT\install\$@
     $(CD) $(SRC)\WINNT\install\$@
Index: openafs/src/ntbuild.bat
diff -c openafs/src/ntbuild.bat:1.18.4.2 openafs/src/ntbuild.bat:1.18.4.3
*** openafs/src/ntbuild.bat:1.18.4.2	Fri May  9 11:10:10 2008
--- openafs/src/ntbuild.bat	Fri Jul 25 16:27:24 2008
***************
*** 23,31 ****
  REM Choose one of "i386_w2k", "amd64_w2k", or "i64_w2k"
  SET SYS_NAME=i386_w2k
  
! REM Specify the targeted version of Windows and IE: 0x400 for Win9x/NT4 
! REM and above; 0x500 for Windows 2000 and above
! SET _WIN32_IE=0x400
  
  REM ########################################################################
  REM Location of base folder where source lies, build directory
--- 23,33 ----
  REM Choose one of "i386_w2k", "amd64_w2k", or "i64_w2k"
  SET SYS_NAME=i386_w2k
  
! REM Specify the targeted version of Windows and IE: 
! REM   0x500 for Windows 2000 and above
! REM   0x502 for Windows XP 64 and above
! SET APPVER=0x500
! SET _WIN32_IE=0x500
  
  REM ########################################################################
  REM Location of base folder where source lies, build directory
***************
*** 38,58 ****
  REM                  "1200" for VC6
  REM                  "1300" for VC7 (.NET)
  REM                  "1310" for .NET 2003
! REM                  "1400" for VC8
  set AFSVER_CL=1400
  
- REM Location of Microsoft Visual C++ development folder (8.3 short name)
- set MSVCDIR=c:\progra~1\micros~2\vc98
- 
- REM Location of Microsoft Platform SDK (8.3 short name)
- set MSSDKDIR=c:\progra~1\micros~4
- 
- REM Location of WDK/DDK (8.3 short name)
- set NTDDKDIR=c:\progra~1\micros~5
- 
- REM Location of Microsoft IDN Normalization SDK
- set MSIDNNLS=C:\progra~1\MI5913~1
- 
  REM ########################################################################
  REM NTMakefile optional definitions:
  REM
--- 40,48 ----
  REM                  "1200" for VC6
  REM                  "1300" for VC7 (.NET)
  REM                  "1310" for .NET 2003
! REM                  "1400" for VC8 (VS2005)
  set AFSVER_CL=1400
  
  REM ########################################################################
  REM NTMakefile optional definitions:
  REM
***************
*** 69,74 ****
--- 59,71 ----
  set BISON_HAIRY=c:\bin\bison.hairy
  
  REM ########################################################################
+ REM Code Signing Definitions for signtool.exe
+ 
+ REM SET CODESIGN_DESC=OpenAFS for Windows
+ REM SET CODESIGN_TIMESTAMP=&lt;URL for Time Stamp Service&gt;
+ REM SET CODESIGN_URL=&lt;Support URL displayed in Add/Remove Programs&gt;
+ 
+ REM ########################################################################
  REM Accept build type as an argument; default to checked.
  
  if "%1"=="" goto checked
***************
*** 83,107 ****
  :checked
  set AFSBLD_TYPE=CHECKED
  set AFSDEV_CRTDEBUG=1
! goto ifs_arg
  
  :free
  set AFSBLD_TYPE=FREE
  set AFSDEV_CRTDEBUG=0
- goto ifs_arg
- 
- :ifs_arg
- 
- set AFSIFS=
- if "%2"=="ifs" goto is_ifs
- if "%2"=="IFS" goto is_ifs
- 
  goto args_done
  
- :is_ifs
- 
- set AFSIFS=TRUE
- 
  :args_done
  
  REM #######################################################################
--- 80,92 ----
  :checked
  set AFSBLD_TYPE=CHECKED
  set AFSDEV_CRTDEBUG=1
! goto args_done
  
  :free
  set AFSBLD_TYPE=FREE
  set AFSDEV_CRTDEBUG=0
  goto args_done
  
  :args_done
  
  REM #######################################################################
***************
*** 113,124 ****
  
  set AFSDEV_BUILDTYPE=%AFSBLD_TYPE%
  
  set AFSDEV_INCLUDE=%MSSDKDIR%\include;%MSVCDIR%\include;%MSIDNNLS%\include
  IF "%AFSVER_CL%" == "1400" set AFSDEV_INCLUDE=%AFSDEV_INCLUDE%;%MSVCDIR%\atlmfc\include
  IF "%AFSVER_CL%" == "1310" set AFSDEV_INCLUDE=%AFSDEV_INCLUDE%;%MSVCDIR%\atlmfc\include
  IF "%AFSVER_CL%" == "1300" set AFSDEV_INCLUDE=%AFSDEV_INCLUDE%;%MSVCDIR%\atlmfc\include
  IF "%AFSVER_CL%" == "1200" set AFSDEV_INCLUDE=%AFSDEV_INCLUDE%;%MSVCDIR%\atl\include;%MSVCDIR%\mfc\include
! set AFSDEV_INCLUDE=%AFSDEV_INCLUDE%;%NTDDKDIR%\include;%W9XDDKDIR%\include
  
  set AFSDEV_LIB=%MSSDKDIR%\lib;%MSVCDIR%\lib
  IF "%AFSVER_CL%" == "1400" set AFSDEV_LIB=%AFSDEV_LIB%;%MSVCDIR%\atlmfc\lib
--- 98,121 ----
  
  set AFSDEV_BUILDTYPE=%AFSBLD_TYPE%
  
+ REM Location of Microsoft Visual C++ development folder (8.3 short name)
+ set MSVCDIR=c:\progra~1\MID05A~1\vc
+ 
+ REM Location of Microsoft Platform SDK (8.3 short name)
+ set MSSDKDIR=c:\progra~1\MIC977~1
+ 
+ REM Location of npapi.h (from DDK or Platform SDK samples - 8.3 short name)
+ set NTDDKDIR=C:\WINDDK\6000
+ 
+ REM Location of Microsoft IDN Normalization SDK
+ set MSIDNNLS=C:\progra~1\MI5913~1
+ 
  set AFSDEV_INCLUDE=%MSSDKDIR%\include;%MSVCDIR%\include;%MSIDNNLS%\include
  IF "%AFSVER_CL%" == "1400" set AFSDEV_INCLUDE=%AFSDEV_INCLUDE%;%MSVCDIR%\atlmfc\include
  IF "%AFSVER_CL%" == "1310" set AFSDEV_INCLUDE=%AFSDEV_INCLUDE%;%MSVCDIR%\atlmfc\include
  IF "%AFSVER_CL%" == "1300" set AFSDEV_INCLUDE=%AFSDEV_INCLUDE%;%MSVCDIR%\atlmfc\include
  IF "%AFSVER_CL%" == "1200" set AFSDEV_INCLUDE=%AFSDEV_INCLUDE%;%MSVCDIR%\atl\include;%MSVCDIR%\mfc\include
! set AFSDEV_INCLUDE=%AFSDEV_INCLUDE%;%NTDDKDIR%\INC\DDK;%NTDDKDIR%\INC\API;
  
  set AFSDEV_LIB=%MSSDKDIR%\lib;%MSVCDIR%\lib
  IF "%AFSVER_CL%" == "1400" set AFSDEV_LIB=%AFSDEV_LIB%;%MSVCDIR%\atlmfc\lib
***************
*** 127,133 ****
  IF "%AFSVER_CL%" == "1200" set AFSDEV_LIB=%AFSDEV_LIB%;%MSVCDIR%\mfc\lib
  
  set AFSDEV_BIN=%MSSDKDIR%\bin;%MSVCDIR%\bin
- 
  goto end
  
  :usage
--- 124,129 ----
Index: openafs/src/WINNT/afsd/cm.h
diff -c openafs/src/WINNT/afsd/cm.h:1.17.2.14 openafs/src/WINNT/afsd/cm.h:1.17.2.15
*** openafs/src/WINNT/afsd/cm.h:1.17.2.14	Mon Apr 14 18:44:03 2008
--- openafs/src/WINNT/afsd/cm.h	Mon Jul 28 19:05:32 2008
***************
*** 10,18 ****
--- 10,25 ----
  #ifndef __CM_H_ENV__
  #define __CM_H_ENV__ 1
  
+ /* We use pthreads in the cache manager (not LWP) */
  #ifndef AFS_PTHREAD_ENV
  #define AFS_PTHREAD_ENV 1
  #endif
+ 
+ /* Support largefiles by default */
+ #ifndef AFS_LARGEFILES
+ #define AFS_LARGEFILES 1
+ #endif
+ 
  #include &lt;rx/rx.h&gt;
  #include &lt;afs/vldbint.h&gt;
  #include &lt;afs/afsint.h&gt;
Index: openafs/src/WINNT/afsd/cm_btree.c
diff -c openafs/src/WINNT/afsd/cm_btree.c:1.1.2.20 openafs/src/WINNT/afsd/cm_btree.c:1.1.2.21
*** openafs/src/WINNT/afsd/cm_btree.c:1.1.2.20	Mon Jul 14 09:01:31 2008
--- openafs/src/WINNT/afsd/cm_btree.c	Wed Jul 23 17:20:45 2008
***************
*** 2336,2346 ****
  long 
  cm_BPlusDirNextEnumEntry(cm_direnum_t *enump, cm_direnum_entry_t **entrypp)
  {	
!     if (enump == NULL || entrypp == NULL || enump-&gt;next &gt; enump-&gt;count) {
  	if (entrypp)
  	    *entrypp = NULL;
  	osi_Log0(afsd_logp, "cm_BPlusDirNextEnumEntry invalid input");
! 	return CM_ERROR_INVAL;			      \
      }
  
      *entrypp = &amp;enump-&gt;entry[enump-&gt;next++];
--- 2336,2346 ----
  long 
  cm_BPlusDirNextEnumEntry(cm_direnum_t *enump, cm_direnum_entry_t **entrypp)
  {	
!     if (enump == NULL || entrypp == NULL || enump-&gt;next &gt;= enump-&gt;count) {
  	if (entrypp)
  	    *entrypp = NULL;
  	osi_Log0(afsd_logp, "cm_BPlusDirNextEnumEntry invalid input");
! 	return CM_ERROR_INVAL;
      }
  
      *entrypp = &amp;enump-&gt;entry[enump-&gt;next++];
Index: openafs/src/WINNT/afsd/cm_buf.c
diff -c openafs/src/WINNT/afsd/cm_buf.c:1.31.2.41 openafs/src/WINNT/afsd/cm_buf.c:1.31.2.43
*** openafs/src/WINNT/afsd/cm_buf.c:1.31.2.41	Thu Jun 26 10:38:23 2008
--- openafs/src/WINNT/afsd/cm_buf.c	Mon Jul 28 22:55:41 2008
***************
*** 714,720 ****
  	 * because we aren't going to be able to write this data to the file
  	 * server.
  	 */
! 	if (code == CM_ERROR_NOSUCHFILE || code == CM_ERROR_BADFD || code == CM_ERROR_NOACCESS){
  	    bp-&gt;flags &amp;= ~CM_BUF_DIRTY;
  	    bp-&gt;flags |= CM_BUF_ERROR;
              bp-&gt;dirty_offset = 0;
--- 714,722 ----
  	 * because we aren't going to be able to write this data to the file
  	 * server.
  	 */
! 	if (code == CM_ERROR_NOSUCHFILE || code == CM_ERROR_BADFD || code == CM_ERROR_NOACCESS || 
!             code == CM_ERROR_QUOTA || code == CM_ERROR_SPACE || code == CM_ERROR_TOOBIG || 
!             code == CM_ERROR_READONLY || code == CM_ERROR_NOSUCHPATH){
  	    bp-&gt;flags &amp;= ~CM_BUF_DIRTY;
  	    bp-&gt;flags |= CM_BUF_ERROR;
              bp-&gt;dirty_offset = 0;
***************
*** 722,727 ****
--- 724,730 ----
  	    bp-&gt;error = code;
  	    bp-&gt;dataVersion = CM_BUF_VERSION_BAD; /* bad */
  	    bp-&gt;dirtyCounter++;
+             break;
  	}
  
  #ifdef DISKCACHE95
***************
*** 1282,1288 ****
   *
   * The buffer must be locked before calling this routine.
   */
! void buf_SetDirty(cm_buf_t *bp, afs_uint32 offset, afs_uint32 length)
  {
      osi_assertx(bp-&gt;magic == CM_BUF_MAGIC, "invalid cm_buf_t magic");
      osi_assertx(bp-&gt;refCount &gt; 0, "cm_buf_t refcount 0");
--- 1285,1291 ----
   *
   * The buffer must be locked before calling this routine.
   */
! void buf_SetDirty(cm_buf_t *bp, afs_uint32 offset, afs_uint32 length, cm_user_t *userp)
  {
      osi_assertx(bp-&gt;magic == CM_BUF_MAGIC, "invalid cm_buf_t magic");
      osi_assertx(bp-&gt;refCount &gt; 0, "cm_buf_t refcount 0");
***************
*** 1341,1346 ****
--- 1344,1357 ----
          }
          lock_ReleaseWrite(&amp;buf_globalLock);
      }
+ 
+     /* and record the last writer */
+     if (bp-&gt;userp != userp) {
+         cm_HoldUser(userp);
+         if (bp-&gt;userp) 
+             cm_ReleaseUser(bp-&gt;userp);
+         bp-&gt;userp = userp;
+     }
  }
  
  /* clean all buffers, reset log pointers and invalidate all buffers.
Index: openafs/src/WINNT/afsd/cm_buf.h
diff -c openafs/src/WINNT/afsd/cm_buf.h:1.12.4.16 openafs/src/WINNT/afsd/cm_buf.h:1.12.4.17
*** openafs/src/WINNT/afsd/cm_buf.h:1.12.4.16	Thu Jun 26 12:38:29 2008
--- openafs/src/WINNT/afsd/cm_buf.h	Thu Jul 24 15:33:53 2008
***************
*** 166,172 ****
  
  extern void buf_CleanWait(cm_scache_t *, cm_buf_t *, afs_uint32 locked);
  
! extern void buf_SetDirty(cm_buf_t *, afs_uint32 offset, afs_uint32 length);
  
  extern long buf_CleanAndReset(void);
  
--- 166,172 ----
  
  extern void buf_CleanWait(cm_scache_t *, cm_buf_t *, afs_uint32 locked);
  
! extern void buf_SetDirty(cm_buf_t *, afs_uint32 offset, afs_uint32 length, cm_user_t *);
  
  extern long buf_CleanAndReset(void);
  
Index: openafs/src/WINNT/afsd/cm_callback.c
diff -c openafs/src/WINNT/afsd/cm_callback.c:1.41.4.45 openafs/src/WINNT/afsd/cm_callback.c:1.41.4.46
*** openafs/src/WINNT/afsd/cm_callback.c:1.41.4.45	Thu Jun 26 12:38:29 2008
--- openafs/src/WINNT/afsd/cm_callback.c	Mon Jul 21 12:19:53 2008
***************
*** 1671,1677 ****
      cm_callbackRequest_t cbr;
      int mustCall;
      cm_fid_t sfid;
!     struct rx_connection * callp = NULL;
      int syncop_done = 0;
  
      osi_Log4(afsd_logp, "GetCallback scp 0x%p cell %d vol %d flags %lX", 
--- 1671,1677 ----
      cm_callbackRequest_t cbr;
      int mustCall;
      cm_fid_t sfid;
!     struct rx_connection * rxconnp = NULL;
      int syncop_done = 0;
  
      osi_Log4(afsd_logp, "GetCallback scp 0x%p cell %d vol %d flags %lX", 
***************
*** 1745,1754 ****
              if (code) 
                  continue;
  
!             callp = cm_GetRxConn(connp);
!             code = RXAFS_FetchStatus(callp, &amp;tfid,
                                       &amp;afsStatus, &amp;callback, &amp;volSync);
!             rx_PutConnection(callp);
  
          } while (cm_Analyze(connp, userp, reqp, &amp;sfid, &amp;volSync, NULL,
                              &amp;cbr, code));
--- 1745,1754 ----
              if (code) 
                  continue;
  
!             rxconnp = cm_GetRxConn(connp);
!             code = RXAFS_FetchStatus(rxconnp, &amp;tfid,
                                       &amp;afsStatus, &amp;callback, &amp;volSync);
!             rx_PutConnection(rxconnp);
  
          } while (cm_Analyze(connp, userp, reqp, &amp;sfid, &amp;volSync, NULL,
                              &amp;cbr, code));
Index: openafs/src/WINNT/afsd/cm_conn.c
diff -c openafs/src/WINNT/afsd/cm_conn.c:1.49.2.45 openafs/src/WINNT/afsd/cm_conn.c:1.49.2.46
*** openafs/src/WINNT/afsd/cm_conn.c:1.49.2.45	Wed Jul 16 00:44:27 2008
--- openafs/src/WINNT/afsd/cm_conn.c	Mon Jul 21 16:56:30 2008
***************
*** 829,836 ****
                          hardTimeLeft = HardDeadtimeout;
  
                      lock_ObtainMutex(&amp;(*connpp)-&gt;mx);
!                     rx_SetConnDeadTime((*connpp)-&gt;callp, timeLeft);
!                     rx_SetConnHardDeadTime((*connpp)-&gt;callp, (u_short) hardTimeLeft);
                      lock_ReleaseMutex(&amp;(*connpp)-&gt;mx);
  #endif
                      return 0;
--- 829,836 ----
                          hardTimeLeft = HardDeadtimeout;
  
                      lock_ObtainMutex(&amp;(*connpp)-&gt;mx);
!                     rx_SetConnDeadTime((*connpp)-&gt;rxconnp, timeLeft);
!                     rx_SetConnHardDeadTime((*connpp)-&gt;rxconnp, (u_short) hardTimeLeft);
                      lock_ReleaseMutex(&amp;(*connpp)-&gt;mx);
  #endif
                      return 0;
***************
*** 880,886 ****
              cm_PutServer(tcp-&gt;serverp);
              cm_ReleaseUser(userp);
              *lcpp = tcp-&gt;nextp;
!             rx_DestroyConnection(tcp-&gt;callp);
              lock_FinalizeMutex(&amp;tcp-&gt;mx);
              free(tcp);
          }
--- 880,886 ----
              cm_PutServer(tcp-&gt;serverp);
              cm_ReleaseUser(userp);
              *lcpp = tcp-&gt;nextp;
!             rx_DestroyConnection(tcp-&gt;rxconnp);
              lock_FinalizeMutex(&amp;tcp-&gt;mx);
              free(tcp);
          }
***************
*** 926,939 ****
          secObjp = rxnull_NewClientSecurityObject();
      }
      osi_assertx(secObjp != NULL, "null rx_securityClass");
!     tcp-&gt;callp = rx_NewConnection(serverp-&gt;addr.sin_addr.s_addr,
                                    port,
                                    serviceID,
                                    secObjp,
                                    secIndex);
!     rx_SetConnDeadTime(tcp-&gt;callp, ConnDeadtimeout);
!     rx_SetConnHardDeadTime(tcp-&gt;callp, HardDeadtimeout);
!     rx_SetConnIdleDeadTime(tcp-&gt;callp, IdleDeadtimeout);
      tcp-&gt;ucgen = ucellp-&gt;gen;
      if (secObjp)
          rxs_Release(secObjp);   /* Decrement the initial refCount */
--- 926,939 ----
          secObjp = rxnull_NewClientSecurityObject();
      }
      osi_assertx(secObjp != NULL, "null rx_securityClass");
!     tcp-&gt;rxconnp = rx_NewConnection(serverp-&gt;addr.sin_addr.s_addr,
                                    port,
                                    serviceID,
                                    secObjp,
                                    secIndex);
!     rx_SetConnDeadTime(tcp-&gt;rxconnp, ConnDeadtimeout);
!     rx_SetConnHardDeadTime(tcp-&gt;rxconnp, HardDeadtimeout);
!     rx_SetConnIdleDeadTime(tcp-&gt;rxconnp, IdleDeadtimeout);
      tcp-&gt;ucgen = ucellp-&gt;gen;
      if (secObjp)
          rxs_Release(secObjp);   /* Decrement the initial refCount */
***************
*** 998,1004 ****
              else
                  osi_Log0(afsd_logp, "cm_ConnByServer replace connection due to crypt change");
  	    tcp-&gt;flags &amp;= ~CM_CONN_FLAG_FORCE_NEW;
!             rx_DestroyConnection(tcp-&gt;callp);
              cm_NewRXConnection(tcp, ucellp, serverp);
          }
          lock_ReleaseMutex(&amp;tcp-&gt;mx);
--- 998,1004 ----
              else
                  osi_Log0(afsd_logp, "cm_ConnByServer replace connection due to crypt change");
  	    tcp-&gt;flags &amp;= ~CM_CONN_FLAG_FORCE_NEW;
!             rx_DestroyConnection(tcp-&gt;rxconnp);
              cm_NewRXConnection(tcp, ucellp, serverp);
          }
          lock_ReleaseMutex(&amp;tcp-&gt;mx);
***************
*** 1099,1110 ****
  extern struct rx_connection *
  cm_GetRxConn(cm_conn_t *connp)
  {
!     struct rx_connection * rxconn;
      lock_ObtainMutex(&amp;connp-&gt;mx);
!     rxconn = connp-&gt;callp;
!     rx_GetConnection(rxconn);
      lock_ReleaseMutex(&amp;connp-&gt;mx);
!     return rxconn;
  }
  
  void cm_ForceNewConnections(cm_server_t *serverp)
--- 1099,1110 ----
  extern struct rx_connection *
  cm_GetRxConn(cm_conn_t *connp)
  {
!     struct rx_connection * rxconnp;
      lock_ObtainMutex(&amp;connp-&gt;mx);
!     rxconnp = connp-&gt;rxconnp;
!     rx_GetConnection(rxconnp);
      lock_ReleaseMutex(&amp;connp-&gt;mx);
!     return rxconnp;
  }
  
  void cm_ForceNewConnections(cm_server_t *serverp)
Index: openafs/src/WINNT/afsd/cm_conn.h
diff -c openafs/src/WINNT/afsd/cm_conn.h:1.13.4.13 openafs/src/WINNT/afsd/cm_conn.h:1.13.4.15
*** openafs/src/WINNT/afsd/cm_conn.h:1.13.4.13	Wed Jul 16 00:44:27 2008
--- openafs/src/WINNT/afsd/cm_conn.h	Wed Jul 23 17:46:44 2008
***************
*** 22,28 ****
  typedef struct cm_conn {
  	struct cm_conn *nextp;		/* locked by cm_connLock */
  	struct cm_server *serverp;	/* locked by cm_serverLock */
!         struct rx_connection *callp;	/* locked by mx */
          struct cm_user *userp;		/* locked by mx; a held reference */
          osi_mutex_t mx;			/* mutex for some of these fields */
          afs_int32 refCount;		/* Interlocked */
--- 22,28 ----
  typedef struct cm_conn {
  	struct cm_conn *nextp;		/* locked by cm_connLock */
  	struct cm_server *serverp;	/* locked by cm_serverLock */
!         struct rx_connection *rxconnp;	/* locked by mx */
          struct cm_user *userp;		/* locked by mx; a held reference */
          osi_mutex_t mx;			/* mutex for some of these fields */
          afs_int32 refCount;		/* Interlocked */
***************
*** 54,59 ****
--- 54,60 ----
  /* flags in cm_req structure */
  #define	CM_REQ_NORETRY		0x1
  #define CM_REQ_NEW_CONN_FORCED  0x2
+ #define CM_REQ_SOURCE_SMB       0x4
  
  /*
   * Vice2 error codes
Index: openafs/src/WINNT/afsd/cm_dcache.c
diff -c openafs/src/WINNT/afsd/cm_dcache.c:1.30.2.31 openafs/src/WINNT/afsd/cm_dcache.c:1.30.2.32
*** openafs/src/WINNT/afsd/cm_dcache.c:1.30.2.31	Thu Jun 26 10:38:23 2008
--- openafs/src/WINNT/afsd/cm_dcache.c	Mon Jul 21 12:19:54 2008
***************
*** 62,68 ****
      osi_hyper_t thyper;
      AFSVolSync volSync;
      AFSFid tfid;
!     struct rx_call *callp;
      struct rx_connection *rxconnp;
      osi_queueData_t *qdp;
      cm_buf_t *bufp;
--- 62,68 ----
      osi_hyper_t thyper;
      AFSVolSync volSync;
      AFSFid tfid;
!     struct rx_call *rxcallp;
      struct rx_connection *rxconnp;
      osi_queueData_t *qdp;
      cm_buf_t *bufp;
***************
*** 153,159 ****
  
      retry:
          rxconnp = cm_GetRxConn(connp);
!         callp = rx_NewCall(rxconnp);
          rx_PutConnection(rxconnp);
  
  #ifdef AFS_LARGEFILES
--- 153,159 ----
  
      retry:
          rxconnp = cm_GetRxConn(connp);
!         rxcallp = rx_NewCall(rxconnp);
          rx_PutConnection(rxconnp);
  
  #ifdef AFS_LARGEFILES
***************
*** 161,167 ****
              osi_Log4(afsd_logp, "CALL StartRXAFS_StoreData64 scp 0x%p, offset 0x%x:%08x, length 0x%x",
                       scp, biod.offset.HighPart, biod.offset.LowPart, nbytes);
  
!             code = StartRXAFS_StoreData64(callp, &amp;tfid, &amp;inStatus,
                                            biod.offset.QuadPart,
                                            nbytes,
                                            truncPos.QuadPart);
--- 161,167 ----
              osi_Log4(afsd_logp, "CALL StartRXAFS_StoreData64 scp 0x%p, offset 0x%x:%08x, length 0x%x",
                       scp, biod.offset.HighPart, biod.offset.LowPart, nbytes);
  
!             code = StartRXAFS_StoreData64(rxcallp, &amp;tfid, &amp;inStatus,
                                            biod.offset.QuadPart,
                                            nbytes,
                                            truncPos.QuadPart);
***************
*** 177,183 ****
                  osi_Log4(afsd_logp, "CALL StartRXAFS_StoreData scp 0x%p, offset 0x%x:%08x, length 0x%x",
                           scp, biod.offset.HighPart, biod.offset.LowPart, nbytes);
  
!                 code = StartRXAFS_StoreData(callp, &amp;tfid, &amp;inStatus,
                                              biod.offset.LowPart, nbytes, truncPos.LowPart);
  		if (code)
  		    osi_Log1(afsd_logp, "CALL StartRXAFS_StoreData FAILURE, code 0x%x", code);
--- 177,183 ----
                  osi_Log4(afsd_logp, "CALL StartRXAFS_StoreData scp 0x%p, offset 0x%x:%08x, length 0x%x",
                           scp, biod.offset.HighPart, biod.offset.LowPart, nbytes);
  
!                 code = StartRXAFS_StoreData(rxcallp, &amp;tfid, &amp;inStatus,
                                              biod.offset.LowPart, nbytes, truncPos.LowPart);
  		if (code)
  		    osi_Log1(afsd_logp, "CALL StartRXAFS_StoreData FAILURE, code 0x%x", code);
***************
*** 189,195 ****
          osi_Log4(afsd_logp, "CALL StartRXAFS_StoreData scp 0x%p, offset 0x%x:%08x, length 0x%x",
                   scp, biod.offset.HighPart, biod.offset.LowPart, nbytes);
  
!         code = StartRXAFS_StoreData(callp, &amp;tfid, &amp;inStatus,
                                      biod.offset.LowPart, nbytes, truncPos.LowPart);
  	if (code)
  	    osi_Log1(afsd_logp, "CALL StartRXAFS_StoreData FAILURE, code 0x%x", code);
--- 189,195 ----
          osi_Log4(afsd_logp, "CALL StartRXAFS_StoreData scp 0x%p, offset 0x%x:%08x, length 0x%x",
                   scp, biod.offset.HighPart, biod.offset.LowPart, nbytes);
  
!         code = StartRXAFS_StoreData(rxcallp, &amp;tfid, &amp;inStatus,
                                      biod.offset.LowPart, nbytes, truncPos.LowPart);
  	if (code)
  	    osi_Log1(afsd_logp, "CALL StartRXAFS_StoreData FAILURE, code 0x%x", code);
***************
*** 213,219 ****
                      wbytes = cm_data.buf_blockSize;
  
                  /* write out wbytes of data from bufferp */
!                 temp = rx_Write(callp, bufferp, wbytes);
                  if (temp != wbytes) {
                      osi_Log3(afsd_logp, "rx_Write failed bp 0x%p, %d != %d",bufp,temp,wbytes);
                      code = -1;
--- 213,219 ----
                      wbytes = cm_data.buf_blockSize;
  
                  /* write out wbytes of data from bufferp */
!                 temp = rx_Write(rxcallp, bufferp, wbytes);
                  if (temp != wbytes) {
                      osi_Log3(afsd_logp, "rx_Write failed bp 0x%p, %d != %d",bufp,temp,wbytes);
                      code = -1;
***************
*** 227,239 ****
  
          if (code == 0) {
              if (SERVERHAS64BIT(connp)) {
!                 code = EndRXAFS_StoreData64(callp, &amp;outStatus, &amp;volSync);
                  if (code)
                      osi_Log2(afsd_logp, "EndRXAFS_StoreData64 FAILURE scp 0x%p code %lX", scp, code);
  		else
  		    osi_Log0(afsd_logp, "EndRXAFS_StoreData64 SUCCESS");
              } else {
!                 code = EndRXAFS_StoreData(callp, &amp;outStatus, &amp;volSync);
                  if (code)
                      osi_Log2(afsd_logp, "EndRXAFS_StoreData FAILURE scp 0x%p code %lX",scp,code);
  		else
--- 227,239 ----
  
          if (code == 0) {
              if (SERVERHAS64BIT(connp)) {
!                 code = EndRXAFS_StoreData64(rxcallp, &amp;outStatus, &amp;volSync);
                  if (code)
                      osi_Log2(afsd_logp, "EndRXAFS_StoreData64 FAILURE scp 0x%p code %lX", scp, code);
  		else
  		    osi_Log0(afsd_logp, "EndRXAFS_StoreData64 SUCCESS");
              } else {
!                 code = EndRXAFS_StoreData(rxcallp, &amp;outStatus, &amp;volSync);
                  if (code)
                      osi_Log2(afsd_logp, "EndRXAFS_StoreData FAILURE scp 0x%p code %lX",scp,code);
  		else
***************
*** 241,247 ****
              }
          }
  
!         code = rx_EndCall(callp, code);
  
  #ifdef AFS_LARGEFILES
          if (code == RXGEN_OPCODE &amp;&amp; SERVERHAS64BIT(connp)) {
--- 241,247 ----
              }
          }
  
!         code = rx_EndCall(rxcallp, code);
  
  #ifdef AFS_LARGEFILES
          if (code == RXGEN_OPCODE &amp;&amp; SERVERHAS64BIT(connp)) {
***************
*** 322,328 ****
      long code;
      osi_hyper_t truncPos;
      cm_conn_t *connp;
!     struct rx_call *callp;
      struct rx_connection *rxconnp;
      int require_64bit_ops = 0;
  
--- 322,328 ----
      long code;
      osi_hyper_t truncPos;
      cm_conn_t *connp;
!     struct rx_call *rxcallp;
      struct rx_connection *rxconnp;
      int require_64bit_ops = 0;
  
***************
*** 360,392 ****
  
      retry:	
          rxconnp = cm_GetRxConn(connp);
!         callp = rx_NewCall(rxconnp);
          rx_PutConnection(rxconnp);
  
  #ifdef AFS_LARGEFILES
          if (SERVERHAS64BIT(connp)) {
!             code = StartRXAFS_StoreData64(callp, &amp;tfid, &amp;inStatus,
                                            0, 0, truncPos.QuadPart);
          } else {
              if (require_64bit_ops) {
                  code = CM_ERROR_TOOBIG;
              } else {
!                 code = StartRXAFS_StoreData(callp, &amp;tfid, &amp;inStatus,
                                              0, 0, truncPos.LowPart);
              }
          }
  #else
!         code = StartRXAFS_StoreData(callp, &amp;tfid, &amp;inStatus,
                                      0, 0, truncPos.LowPart);
  #endif
  
          if (code == 0) {
              if (SERVERHAS64BIT(connp))
!                 code = EndRXAFS_StoreData64(callp, &amp;outStatus, &amp;volSync);
              else
!                 code = EndRXAFS_StoreData(callp, &amp;outStatus, &amp;volSync);
          }
!         code = rx_EndCall(callp, code);
  
  #ifdef AFS_LARGEFILES
          if (code == RXGEN_OPCODE &amp;&amp; SERVERHAS64BIT(connp)) {
--- 360,392 ----
  
      retry:	
          rxconnp = cm_GetRxConn(connp);
!         rxcallp = rx_NewCall(rxconnp);
          rx_PutConnection(rxconnp);
  
  #ifdef AFS_LARGEFILES
          if (SERVERHAS64BIT(connp)) {
!             code = StartRXAFS_StoreData64(rxcallp, &amp;tfid, &amp;inStatus,
                                            0, 0, truncPos.QuadPart);
          } else {
              if (require_64bit_ops) {
                  code = CM_ERROR_TOOBIG;
              } else {
!                 code = StartRXAFS_StoreData(rxcallp, &amp;tfid, &amp;inStatus,
                                              0, 0, truncPos.LowPart);
              }
          }
  #else
!         code = StartRXAFS_StoreData(rxcallp, &amp;tfid, &amp;inStatus,
                                      0, 0, truncPos.LowPart);
  #endif
  
          if (code == 0) {
              if (SERVERHAS64BIT(connp))
!                 code = EndRXAFS_StoreData64(rxcallp, &amp;outStatus, &amp;volSync);
              else
!                 code = EndRXAFS_StoreData(rxcallp, &amp;outStatus, &amp;volSync);
          }
!         code = rx_EndCall(rxcallp, code);
  
  #ifdef AFS_LARGEFILES
          if (code == RXGEN_OPCODE &amp;&amp; SERVERHAS64BIT(connp)) {
***************
*** 1344,1350 ****
      cm_buf_t *tbufp;		        /* buf we're filling */
      osi_queueData_t *qdp;		/* q element we're scanning */
      AFSFid tfid;
!     struct rx_call *callp;
      struct rx_connection *rxconnp;
      cm_bulkIO_t biod;		/* bulk IO descriptor */
      cm_conn_t *connp;
--- 1344,1350 ----
      cm_buf_t *tbufp;		        /* buf we're filling */
      osi_queueData_t *qdp;		/* q element we're scanning */
      AFSFid tfid;
!     struct rx_call *rxcallp;
      struct rx_connection *rxconnp;
      cm_bulkIO_t biod;		/* bulk IO descriptor */
      cm_conn_t *connp;
***************
*** 1499,1505 ****
              continue;
  
          rxconnp = cm_GetRxConn(connp);
!         callp = rx_NewCall(rxconnp);
          rx_PutConnection(rxconnp);
  
  #ifdef AFS_LARGEFILES
--- 1499,1505 ----
              continue;
  
          rxconnp = cm_GetRxConn(connp);
!         rxcallp = rx_NewCall(rxconnp);
          rx_PutConnection(rxconnp);
  
  #ifdef AFS_LARGEFILES
***************
*** 1509,1525 ****
              osi_Log4(afsd_logp, "CALL FetchData64 scp 0x%p, off 0x%x:%08x, size 0x%x",
                       scp, biod.offset.HighPart, biod.offset.LowPart, biod.length);
  
!             code = StartRXAFS_FetchData64(callp, &amp;tfid, biod.offset.QuadPart, biod.length);
  
              if (code == 0) {
!                 temp = rx_Read(callp, (char *) &amp;nbytes_hi, sizeof(afs_int32));
                  if (temp == sizeof(afs_int32)) {
                      nbytes_hi = ntohl(nbytes_hi);
                  } else {
                      nbytes_hi = 0;
! 		    code = callp-&gt;error;
!                     rx_EndCall(callp, code);
!                     callp = NULL;
                  }
              }
          }
--- 1509,1525 ----
              osi_Log4(afsd_logp, "CALL FetchData64 scp 0x%p, off 0x%x:%08x, size 0x%x",
                       scp, biod.offset.HighPart, biod.offset.LowPart, biod.length);
  
!             code = StartRXAFS_FetchData64(rxcallp, &amp;tfid, biod.offset.QuadPart, biod.length);
  
              if (code == 0) {
!                 temp = rx_Read(rxcallp, (char *) &amp;nbytes_hi, sizeof(afs_int32));
                  if (temp == sizeof(afs_int32)) {
                      nbytes_hi = ntohl(nbytes_hi);
                  } else {
                      nbytes_hi = 0;
! 		    code = rxcallp-&gt;error;
!                     rx_EndCall(rxcallp, code);
!                     rxcallp = NULL;
                  }
              }
          }
***************
*** 1529,1544 ****
                  osi_Log0(afsd_logp, "Skipping FetchData.  Operation requires FetchData64");
                  code = CM_ERROR_TOOBIG;
              } else {
!                 if (!callp) {
                      rxconnp = cm_GetRxConn(connp);
!                     callp = rx_NewCall(rxconnp);
                      rx_PutConnection(rxconnp);
                  }
  
                  osi_Log3(afsd_logp, "CALL FetchData scp 0x%p, off 0x%x, size 0x%x",
                           scp, biod.offset.LowPart, biod.length);
  
!                 code = StartRXAFS_FetchData(callp, &amp;tfid, biod.offset.LowPart,
                                              biod.length);
  
                  SET_SERVERHASNO64BIT(connp);
--- 1529,1544 ----
                  osi_Log0(afsd_logp, "Skipping FetchData.  Operation requires FetchData64");
                  code = CM_ERROR_TOOBIG;
              } else {
!                 if (!rxcallp) {
                      rxconnp = cm_GetRxConn(connp);
!                     rxcallp = rx_NewCall(rxconnp);
                      rx_PutConnection(rxconnp);
                  }
  
                  osi_Log3(afsd_logp, "CALL FetchData scp 0x%p, off 0x%x, size 0x%x",
                           scp, biod.offset.LowPart, biod.length);
  
!                 code = StartRXAFS_FetchData(rxcallp, &amp;tfid, biod.offset.LowPart,
                                              biod.length);
  
                  SET_SERVERHASNO64BIT(connp);
***************
*** 1546,1559 ****
          }
  
          if (code == 0) {
!             temp  = rx_Read(callp, (char *)&amp;nbytes, sizeof(afs_int32));
              if (temp == sizeof(afs_int32)) {
                  nbytes = ntohl(nbytes);
                  FillInt64(length_found, nbytes_hi, nbytes);
                  if (length_found &gt; biod.length) 
!                     code = (callp-&gt;error &lt; 0) ? callp-&gt;error : -1;
              } else {
!                 code = (callp-&gt;error &lt; 0) ? callp-&gt;error : -1;
              }
          }
          /* for the moment, nbytes_hi will always be 0 if code == 0
--- 1546,1559 ----
          }
  
          if (code == 0) {
!             temp  = rx_Read(rxcallp, (char *)&amp;nbytes, sizeof(afs_int32));
              if (temp == sizeof(afs_int32)) {
                  nbytes = ntohl(nbytes);
                  FillInt64(length_found, nbytes_hi, nbytes);
                  if (length_found &gt; biod.length) 
!                     code = (rxcallp-&gt;error &lt; 0) ? rxcallp-&gt;error : -1;
              } else {
!                 code = (rxcallp-&gt;error &lt; 0) ? rxcallp-&gt;error : -1;
              }
          }
          /* for the moment, nbytes_hi will always be 0 if code == 0
***************
*** 1562,1580 ****
          osi_Log3(afsd_logp, "CALL FetchData scp 0x%p, off 0x%x, size 0x%x",
                   scp, biod.offset.LowPart, biod.length);
  
!         code = StartRXAFS_FetchData(callp, &amp;tfid, biod.offset.LowPart,
                                      biod.length);
  
          /* now copy the data out of the pipe and put it in the buffer */
          if (code == 0) {
!             temp  = rx_Read(callp, (char *)&amp;nbytes, sizeof(afs_int32));
              if (temp == sizeof(afs_int32)) {
                  nbytes = ntohl(nbytes);
                  if (nbytes &gt; biod.length) 
!                     code = (callp-&gt;error &lt; 0) ? callp-&gt;error : -1;
              }
              else 
!                 code = (callp-&gt;error &lt; 0) ? callp-&gt;error : -1;
          }
  #endif
  
--- 1562,1580 ----
          osi_Log3(afsd_logp, "CALL FetchData scp 0x%p, off 0x%x, size 0x%x",
                   scp, biod.offset.LowPart, biod.length);
  
!         code = StartRXAFS_FetchData(rxcallp, &amp;tfid, biod.offset.LowPart,
                                      biod.length);
  
          /* now copy the data out of the pipe and put it in the buffer */
          if (code == 0) {
!             temp  = rx_Read(rxcallp, (char *)&amp;nbytes, sizeof(afs_int32));
              if (temp == sizeof(afs_int32)) {
                  nbytes = ntohl(nbytes);
                  if (nbytes &gt; biod.length) 
!                     code = (rxcallp-&gt;error &lt; 0) ? rxcallp-&gt;error : -1;
              }
              else 
!                 code = (rxcallp-&gt;error &lt; 0) ? rxcallp-&gt;error : -1;
          }
  #endif
  
***************
*** 1602,1610 ****
  
                  /* read rbytes of data */
                  rbytes = (nbytes &gt; cm_data.buf_blockSize? cm_data.buf_blockSize : nbytes);
!                 temp = rx_Read(callp, bufferp, rbytes);
                  if (temp &lt; rbytes) {
!                     code = (callp-&gt;error &lt; 0) ? callp-&gt;error : -1;
                      break;
                  }
  
--- 1602,1610 ----
  
                  /* read rbytes of data */
                  rbytes = (nbytes &gt; cm_data.buf_blockSize? cm_data.buf_blockSize : nbytes);
!                 temp = rx_Read(rxcallp, bufferp, rbytes);
                  if (temp &lt; rbytes) {
!                     code = (rxcallp-&gt;error &lt; 0) ? rxcallp-&gt;error : -1;
                      break;
                  }
  
***************
*** 1669,1677 ****
  
          if (code == 0) {
              if (SERVERHAS64BIT(connp))
!                 code = EndRXAFS_FetchData64(callp, &amp;afsStatus, &amp;callback, &amp;volSync);
              else
!                 code = EndRXAFS_FetchData(callp, &amp;afsStatus, &amp;callback, &amp;volSync);
          } else {
              if (SERVERHAS64BIT(connp))
                  osi_Log1(afsd_logp, "CALL EndRXAFS_FetchData64 skipped due to error %d", code);
--- 1669,1677 ----
  
          if (code == 0) {
              if (SERVERHAS64BIT(connp))
!                 code = EndRXAFS_FetchData64(rxcallp, &amp;afsStatus, &amp;callback, &amp;volSync);
              else
!                 code = EndRXAFS_FetchData(rxcallp, &amp;afsStatus, &amp;callback, &amp;volSync);
          } else {
              if (SERVERHAS64BIT(connp))
                  osi_Log1(afsd_logp, "CALL EndRXAFS_FetchData64 skipped due to error %d", code);
***************
*** 1679,1686 ****
                  osi_Log1(afsd_logp, "CALL EndRXAFS_FetchData skipped due to error %d", code);
          }
  
!         if (callp)
!             code = rx_EndCall(callp, code);
  
          if (code == RXKADUNKNOWNKEY)
              osi_Log0(afsd_logp, "CALL EndCall returns RXKADUNKNOWNKEY");
--- 1679,1686 ----
                  osi_Log1(afsd_logp, "CALL EndRXAFS_FetchData skipped due to error %d", code);
          }
  
!         if (rxcallp)
!             code = rx_EndCall(rxcallp, code);
  
          if (code == RXKADUNKNOWNKEY)
              osi_Log0(afsd_logp, "CALL EndCall returns RXKADUNKNOWNKEY");
Index: openafs/src/WINNT/afsd/cm_ioctl.c
diff -c openafs/src/WINNT/afsd/cm_ioctl.c:1.73.2.50 openafs/src/WINNT/afsd/cm_ioctl.c:1.73.2.51
*** openafs/src/WINNT/afsd/cm_ioctl.c:1.73.2.50	Fri Jul 11 18:27:01 2008
--- openafs/src/WINNT/afsd/cm_ioctl.c	Mon Jul 21 12:19:54 2008
***************
*** 381,387 ****
      AFSVolSync volSync;
      AFSFid afid;
      int tlen;
!     struct rx_connection * callp;
  
      /* now make the get acl call */
  #ifdef AFS_FREELANCE_CLIENT
--- 381,387 ----
      AFSVolSync volSync;
      AFSFid afid;
      int tlen;
!     struct rx_connection * rxconnp;
  
      /* now make the get acl call */
  #ifdef AFS_FREELANCE_CLIENT
***************
*** 401,409 ****
              if (code) 
                  continue;
  
!             callp = cm_GetRxConn(connp);
!             code = RXAFS_FetchACL(callp, &amp;afid, &amp;acl, &amp;fileStatus, &amp;volSync);
!             rx_PutConnection(callp);
  
          } while (cm_Analyze(connp, userp, reqp, &amp;scp-&gt;fid, &amp;volSync, NULL, NULL, code));
          code = cm_MapRPCError(code, reqp);
--- 401,409 ----
              if (code) 
                  continue;
  
!             rxconnp = cm_GetRxConn(connp);
!             code = RXAFS_FetchACL(rxconnp, &amp;afid, &amp;acl, &amp;fileStatus, &amp;volSync);
!             rx_PutConnection(rxconnp);
  
          } while (cm_Analyze(connp, userp, reqp, &amp;scp-&gt;fid, &amp;volSync, NULL, NULL, code));
          code = cm_MapRPCError(code, reqp);
***************
*** 474,480 ****
      AFSFetchStatus fileStatus;
      AFSVolSync volSync;
      AFSFid fid;
!     struct rx_connection * callp;
  
  #ifdef AFS_FREELANCE_CLIENT
      if ( scp-&gt;fid.cell == AFS_FAKE_ROOT_CELL_ID &amp;&amp; scp-&gt;fid.volume == AFS_FAKE_ROOT_VOL_ID ) {
--- 474,480 ----
      AFSFetchStatus fileStatus;
      AFSVolSync volSync;
      AFSFid fid;
!     struct rx_connection * rxconnp;
  
  #ifdef AFS_FREELANCE_CLIENT
      if ( scp-&gt;fid.cell == AFS_FAKE_ROOT_CELL_ID &amp;&amp; scp-&gt;fid.volume == AFS_FAKE_ROOT_VOL_ID ) {
***************
*** 493,501 ****
              if (code) 
                  continue;
  
!             callp = cm_GetRxConn(connp);
!             code = RXAFS_StoreACL(callp, &amp;fid, &amp;acl, &amp;fileStatus, &amp;volSync);
!             rx_PutConnection(callp);
  
          } while (cm_Analyze(connp, userp, reqp, &amp;scp-&gt;fid, &amp;volSync, NULL, NULL, code));
          code = cm_MapRPCError(code, reqp);
--- 493,501 ----
              if (code) 
                  continue;
  
!             rxconnp = cm_GetRxConn(connp);
!             code = RXAFS_StoreACL(rxconnp, &amp;fid, &amp;acl, &amp;fileStatus, &amp;volSync);
!             rx_PutConnection(rxconnp);
  
          } while (cm_Analyze(connp, userp, reqp, &amp;scp-&gt;fid, &amp;volSync, NULL, NULL, code));
          code = cm_MapRPCError(code, reqp);
***************
*** 607,613 ****
      cm_cell_t *cellp;
      char *cp;
      clientchar_t *strp;
!     struct rx_connection * callp;
  
  #ifdef AFS_FREELANCE_CLIENT
      if ( scp-&gt;fid.cell == AFS_FAKE_ROOT_CELL_ID &amp;&amp; scp-&gt;fid.volume == AFS_FAKE_ROOT_VOL_ID ) {
--- 607,613 ----
      cm_cell_t *cellp;
      char *cp;
      clientchar_t *strp;
!     struct rx_connection * rxconnp;
  
  #ifdef AFS_FREELANCE_CLIENT
      if ( scp-&gt;fid.cell == AFS_FAKE_ROOT_CELL_ID &amp;&amp; scp-&gt;fid.volume == AFS_FAKE_ROOT_VOL_ID ) {
***************
*** 661,670 ****
              if (code)
                  continue;
  
!             callp = cm_GetRxConn(tcp);
!             code = RXAFS_SetVolumeStatus(callp, scp-&gt;fid.volume,
                                           &amp;storeStat, volName, offLineMsg, motd);
!             rx_PutConnection(callp);
  
          } while (cm_Analyze(tcp, userp, reqp, &amp;scp-&gt;fid, NULL, NULL, NULL, code));
          code = cm_MapRPCError(code, reqp);
--- 661,670 ----
              if (code)
                  continue;
  
!             rxconnp = cm_GetRxConn(tcp);
!             code = RXAFS_SetVolumeStatus(rxconnp, scp-&gt;fid.volume,
                                           &amp;storeStat, volName, offLineMsg, motd);
!             rx_PutConnection(rxconnp);
  
          } while (cm_Analyze(tcp, userp, reqp, &amp;scp-&gt;fid, NULL, NULL, NULL, code));
          code = cm_MapRPCError(code, reqp);
***************
*** 714,720 ****
      char *Name;
      char *OfflineMsg;
      char *MOTD;
!     struct rx_connection * callp;
  
  #ifdef AFS_FREELANCE_CLIENT
      if ( scp-&gt;fid.cell == AFS_FAKE_ROOT_CELL_ID &amp;&amp; scp-&gt;fid.volume == AFS_FAKE_ROOT_VOL_ID ) {
--- 714,720 ----
      char *Name;
      char *OfflineMsg;
      char *MOTD;
!     struct rx_connection * rxconnp;
  
  #ifdef AFS_FREELANCE_CLIENT
      if ( scp-&gt;fid.cell == AFS_FAKE_ROOT_CELL_ID &amp;&amp; scp-&gt;fid.volume == AFS_FAKE_ROOT_VOL_ID ) {
***************
*** 737,746 ****
  	    code = cm_ConnFromFID(&amp;scp-&gt;fid, userp, reqp, &amp;connp);
  	    if (code) continue;
  
! 	    callp = cm_GetRxConn(connp);
! 	    code = RXAFS_GetVolumeStatus(callp, scp-&gt;fid.volume,
  					 &amp;volStat, &amp;Name, &amp;OfflineMsg, &amp;MOTD);
! 	    rx_PutConnection(callp);
  
  	} while (cm_Analyze(connp, userp, reqp, &amp;scp-&gt;fid, NULL, NULL, NULL, code));
  	code = cm_MapRPCError(code, reqp);
--- 737,746 ----
  	    code = cm_ConnFromFID(&amp;scp-&gt;fid, userp, reqp, &amp;connp);
  	    if (code) continue;
  
! 	    rxconnp = cm_GetRxConn(connp);
! 	    code = RXAFS_GetVolumeStatus(rxconnp, scp-&gt;fid.volume,
  					 &amp;volStat, &amp;Name, &amp;OfflineMsg, &amp;MOTD);
! 	    rx_PutConnection(rxconnp);
  
  	} while (cm_Analyze(connp, userp, reqp, &amp;scp-&gt;fid, NULL, NULL, NULL, code));
  	code = cm_MapRPCError(code, reqp);
Index: openafs/src/WINNT/afsd/cm_vnodeops.c
diff -c openafs/src/WINNT/afsd/cm_vnodeops.c:1.69.2.82 openafs/src/WINNT/afsd/cm_vnodeops.c:1.69.2.85
*** openafs/src/WINNT/afsd/cm_vnodeops.c:1.69.2.82	Wed Jul 16 11:23:46 2008
--- openafs/src/WINNT/afsd/cm_vnodeops.c	Thu Jul 24 13:56:54 2008
***************
*** 1492,1498 ****
      int sflags;
      AFSFetchStatus newDirStatus;
      AFSVolSync volSync;
!     struct rx_connection * callp;
      cm_dirOp_t dirop;
      cm_scache_t *scp = NULL;
      int free_fnamep = FALSE;
--- 1492,1498 ----
      int sflags;
      AFSFetchStatus newDirStatus;
      AFSVolSync volSync;
!     struct rx_connection * rxconnp;
      cm_dirOp_t dirop;
      cm_scache_t *scp = NULL;
      int free_fnamep = FALSE;
***************
*** 1545,1554 ****
          if (code)
              continue;
  
!         callp = cm_GetRxConn(connp);
!         code = RXAFS_RemoveFile(callp, &amp;afsFid, fnamep,
                                  &amp;newDirStatus, &amp;volSync);
!         rx_PutConnection(callp);
  
      } while (cm_Analyze(connp, userp, reqp, &amp;dscp-&gt;fid, &amp;volSync, NULL, NULL, code));
      code = cm_MapRPCError(code, reqp);
--- 1545,1554 ----
          if (code)
              continue;
  
!         rxconnp = cm_GetRxConn(connp);
!         code = RXAFS_RemoveFile(rxconnp, &amp;afsFid, fnamep,
                                  &amp;newDirStatus, &amp;volSync);
!         rx_PutConnection(rxconnp);
  
      } while (cm_Analyze(connp, userp, reqp, &amp;dscp-&gt;fid, &amp;volSync, NULL, NULL, code));
      code = cm_MapRPCError(code, reqp);
***************
*** 2230,2236 ****
      long j;
      cm_scache_t *scp;
      cm_fid_t tfid;
!     struct rx_connection * callp;
      int inlinebulk = 0;		/* Did we use InlineBulkStatus RPC or not? */
          
      /* otherwise, we may have one or more bulk stat's worth of stuff in bb;
--- 2230,2236 ----
      long j;
      cm_scache_t *scp;
      cm_fid_t tfid;
!     struct rx_connection * rxconnp;
      int inlinebulk = 0;		/* Did we use InlineBulkStatus RPC or not? */
          
      /* otherwise, we may have one or more bulk stat's worth of stuff in bb;
***************
*** 2255,2263 ****
              if (code) 
                  continue;
  
!             callp = cm_GetRxConn(connp);
  	    if (!(connp-&gt;serverp-&gt;flags &amp; CM_SERVERFLAG_NOINLINEBULK)) {
! 		code = RXAFS_InlineBulkStatus(callp, &amp;fidStruct,
                                       &amp;statStruct, &amp;callbackStruct, &amp;volSync);
  		if (code == RXGEN_OPCODE) {
  		    cm_SetServerNoInlineBulk(connp-&gt;serverp, 0);
--- 2255,2263 ----
              if (code) 
                  continue;
  
!             rxconnp = cm_GetRxConn(connp);
  	    if (!(connp-&gt;serverp-&gt;flags &amp; CM_SERVERFLAG_NOINLINEBULK)) {
! 		code = RXAFS_InlineBulkStatus(rxconnp, &amp;fidStruct,
                                       &amp;statStruct, &amp;callbackStruct, &amp;volSync);
  		if (code == RXGEN_OPCODE) {
  		    cm_SetServerNoInlineBulk(connp-&gt;serverp, 0);
***************
*** 2266,2275 ****
  		}
  	    }
  	    if (!inlinebulk) {
! 		code = RXAFS_BulkStatus(callp, &amp;fidStruct,
  					&amp;statStruct, &amp;callbackStruct, &amp;volSync);
  	    }
!             rx_PutConnection(callp);
  
          } while (cm_Analyze(connp, userp, reqp, &amp;dscp-&gt;fid,
                               &amp;volSync, NULL, &amp;cbReq, code));
--- 2266,2275 ----
  		}
  	    }
  	    if (!inlinebulk) {
! 		code = RXAFS_BulkStatus(rxconnp, &amp;fidStruct,
  					&amp;statStruct, &amp;callbackStruct, &amp;volSync);
  	    }
!             rx_PutConnection(rxconnp);
  
          } while (cm_Analyze(connp, userp, reqp, &amp;dscp-&gt;fid,
                               &amp;volSync, NULL, &amp;cbReq, code));
***************
*** 2526,2532 ****
      cm_conn_t *connp;
      AFSFid tfid;
      AFSStoreStatus afsInStatus;
!     struct rx_connection * callp;
  
      /* handle file length setting */
      if (attrp-&gt;mask &amp; CM_ATTRMASK_LENGTH)
--- 2526,2532 ----
      cm_conn_t *connp;
      AFSFid tfid;
      AFSStoreStatus afsInStatus;
!     struct rx_connection * rxconnp;
  
      /* handle file length setting */
      if (attrp-&gt;mask &amp; CM_ATTRMASK_LENGTH)
***************
*** 2556,2565 ****
          if (code) 
              continue;
  
!         callp = cm_GetRxConn(connp);
!         code = RXAFS_StoreStatus(callp, &amp;tfid,
                                    &amp;afsInStatus, &amp;afsOutStatus, &amp;volSync);
!         rx_PutConnection(callp);
  
      } while (cm_Analyze(connp, userp, reqp,
                           &amp;scp-&gt;fid, &amp;volSync, NULL, NULL, code));
--- 2556,2565 ----
          if (code) 
              continue;
  
!         rxconnp = cm_GetRxConn(connp);
!         code = RXAFS_StoreStatus(rxconnp, &amp;tfid,
                                    &amp;afsInStatus, &amp;afsOutStatus, &amp;volSync);
!         rx_PutConnection(rxconnp);
  
      } while (cm_Analyze(connp, userp, reqp,
                           &amp;scp-&gt;fid, &amp;volSync, NULL, NULL, code));
***************
*** 2601,2607 ****
      AFSFetchStatus newFileStatus;
      AFSCallBack newFileCallback;
      AFSVolSync volSync;
!     struct rx_connection * callp;
      cm_dirOp_t dirop;
      fschar_t * fnamep = NULL;
  
--- 2601,2607 ----
      AFSFetchStatus newFileStatus;
      AFSCallBack newFileCallback;
      AFSVolSync volSync;
!     struct rx_connection * rxconnp;
      cm_dirOp_t dirop;
      fschar_t * fnamep = NULL;
  
***************
*** 2655,2666 ****
          dirAFSFid.Vnode = dscp-&gt;fid.vnode;
          dirAFSFid.Unique = dscp-&gt;fid.unique;
  
!         callp = cm_GetRxConn(connp);
!         code = RXAFS_CreateFile(connp-&gt;callp, &amp;dirAFSFid, fnamep,
                                   &amp;inStatus, &amp;newAFSFid, &amp;newFileStatus,
                                   &amp;updatedDirStatus, &amp;newFileCallback,
                                   &amp;volSync);
!         rx_PutConnection(callp);
  
      } while (cm_Analyze(connp, userp, reqp,
                           &amp;dscp-&gt;fid, &amp;volSync, NULL, &amp;cbReq, code));
--- 2655,2666 ----
          dirAFSFid.Vnode = dscp-&gt;fid.vnode;
          dirAFSFid.Unique = dscp-&gt;fid.unique;
  
!         rxconnp = cm_GetRxConn(connp);
!         code = RXAFS_CreateFile(connp-&gt;rxconnp, &amp;dirAFSFid, fnamep,
                                   &amp;inStatus, &amp;newAFSFid, &amp;newFileStatus,
                                   &amp;updatedDirStatus, &amp;newFileCallback,
                                   &amp;volSync);
!         rx_PutConnection(rxconnp);
  
      } while (cm_Analyze(connp, userp, reqp,
                           &amp;dscp-&gt;fid, &amp;volSync, NULL, &amp;cbReq, code));
***************
*** 2701,2707 ****
                  didEnd = 1;     
              }       
              lock_ReleaseWrite(&amp;scp-&gt;rw);
-             *scpp = scp;
          }
      }
  
--- 2701,2706 ----
***************
*** 2720,2725 ****
--- 2719,2730 ----
      if (fnamep)
          free(fnamep);
  
+     if (scp) {
+         if (scpp)
+             *scpp = scp;
+         else
+             cm_ReleaseSCache(scp);
+     }
      return code;
  }       
  
***************
*** 2747,2753 ****
  }
  
  long cm_MakeDir(cm_scache_t *dscp, clientchar_t *cnamep, long flags, cm_attr_t *attrp,
!                  cm_user_t *userp, cm_req_t *reqp)
  {
      cm_conn_t *connp;
      long code;
--- 2752,2758 ----
  }
  
  long cm_MakeDir(cm_scache_t *dscp, clientchar_t *cnamep, long flags, cm_attr_t *attrp,
!                 cm_user_t *userp, cm_req_t *reqp, cm_scache_t **scpp)
  {
      cm_conn_t *connp;
      long code;
***************
*** 2762,2768 ****
      AFSFetchStatus newDirStatus;
      AFSCallBack newDirCallback;
      AFSVolSync volSync;
!     struct rx_connection * callp;
      cm_dirOp_t dirop;
      fschar_t * fnamep = NULL;
  
--- 2767,2773 ----
      AFSFetchStatus newDirStatus;
      AFSCallBack newDirCallback;
      AFSVolSync volSync;
!     struct rx_connection * rxconnp;
      cm_dirOp_t dirop;
      fschar_t * fnamep = NULL;
  
***************
*** 2815,2826 ****
          dirAFSFid.Vnode = dscp-&gt;fid.vnode;
          dirAFSFid.Unique = dscp-&gt;fid.unique;
  
!         callp = cm_GetRxConn(connp);
!         code = RXAFS_MakeDir(connp-&gt;callp, &amp;dirAFSFid, fnamep,
                                &amp;inStatus, &amp;newAFSFid, &amp;newDirStatus,
                                &amp;updatedDirStatus, &amp;newDirCallback,
                                &amp;volSync);
!         rx_PutConnection(callp);
  
      } while (cm_Analyze(connp, userp, reqp,
                          &amp;dscp-&gt;fid, &amp;volSync, NULL, &amp;cbReq, code));
--- 2820,2831 ----
          dirAFSFid.Vnode = dscp-&gt;fid.vnode;
          dirAFSFid.Unique = dscp-&gt;fid.unique;
  
!         rxconnp = cm_GetRxConn(connp);
!         code = RXAFS_MakeDir(connp-&gt;rxconnp, &amp;dirAFSFid, fnamep,
                                &amp;inStatus, &amp;newAFSFid, &amp;newDirStatus,
                                &amp;updatedDirStatus, &amp;newDirCallback,
                                &amp;volSync);
!         rx_PutConnection(rxconnp);
  
      } while (cm_Analyze(connp, userp, reqp,
                          &amp;dscp-&gt;fid, &amp;volSync, NULL, &amp;cbReq, code));
***************
*** 2860,2866 ****
                  didEnd = 1;             
              }
              lock_ReleaseWrite(&amp;scp-&gt;rw);
-             cm_ReleaseSCache(scp);
          }
      }
  
--- 2865,2870 ----
***************
*** 2878,2883 ****
--- 2882,2894 ----
  
      free(fnamep);
  
+     if (scp) {
+         if (scpp)
+             *scpp = scp;
+         else
+             cm_ReleaseSCache(scp);
+     }
+ 
      /* and return error code */
      return code;
  }       
***************
*** 2892,2898 ****
      AFSFetchStatus updatedDirStatus;
      AFSFetchStatus newLinkStatus;
      AFSVolSync volSync;
!     struct rx_connection * callp;
      cm_dirOp_t dirop;
      fschar_t * fnamep = NULL;
  
--- 2903,2909 ----
      AFSFetchStatus updatedDirStatus;
      AFSFetchStatus newLinkStatus;
      AFSVolSync volSync;
!     struct rx_connection * rxconnp;
      cm_dirOp_t dirop;
      fschar_t * fnamep = NULL;
  
***************
*** 2927,2936 ****
          existingAFSFid.Vnode = sscp-&gt;fid.vnode;
          existingAFSFid.Unique = sscp-&gt;fid.unique;
  
!         callp = cm_GetRxConn(connp);
!         code = RXAFS_Link(callp, &amp;dirAFSFid, fnamep, &amp;existingAFSFid,
              &amp;newLinkStatus, &amp;updatedDirStatus, &amp;volSync);
!         rx_PutConnection(callp);
          osi_Log1(afsd_logp,"  RXAFS_Link returns 0x%x", code);
  
      } while (cm_Analyze(connp, userp, reqp,
--- 2938,2947 ----
          existingAFSFid.Vnode = sscp-&gt;fid.vnode;
          existingAFSFid.Unique = sscp-&gt;fid.unique;
  
!         rxconnp = cm_GetRxConn(connp);
!         code = RXAFS_Link(rxconnp, &amp;dirAFSFid, fnamep, &amp;existingAFSFid,
              &amp;newLinkStatus, &amp;updatedDirStatus, &amp;volSync);
!         rx_PutConnection(rxconnp);
          osi_Log1(afsd_logp,"  RXAFS_Link returns 0x%x", code);
  
      } while (cm_Analyze(connp, userp, reqp,
***************
*** 2982,2988 ****
      AFSFetchStatus updatedDirStatus;
      AFSFetchStatus newLinkStatus;
      AFSVolSync volSync;
!     struct rx_connection * callp;
      cm_dirOp_t dirop;
      fschar_t *fnamep = NULL;
  
--- 2993,2999 ----
      AFSFetchStatus updatedDirStatus;
      AFSFetchStatus newLinkStatus;
      AFSVolSync volSync;
!     struct rx_connection * rxconnp;
      cm_dirOp_t dirop;
      fschar_t *fnamep = NULL;
  
***************
*** 3015,3025 ****
          dirAFSFid.Vnode = dscp-&gt;fid.vnode;
          dirAFSFid.Unique = dscp-&gt;fid.unique;
  
!         callp = cm_GetRxConn(connp);
!         code = RXAFS_Symlink(callp, &amp;dirAFSFid, fnamep, contentsp,
                                &amp;inStatus, &amp;newAFSFid, &amp;newLinkStatus,
                                &amp;updatedDirStatus, &amp;volSync);
!         rx_PutConnection(callp);
  
      } while (cm_Analyze(connp, userp, reqp,
                           &amp;dscp-&gt;fid, &amp;volSync, NULL, NULL, code));
--- 3026,3036 ----
          dirAFSFid.Vnode = dscp-&gt;fid.vnode;
          dirAFSFid.Unique = dscp-&gt;fid.unique;
  
!         rxconnp = cm_GetRxConn(connp);
!         code = RXAFS_Symlink(rxconnp, &amp;dirAFSFid, fnamep, contentsp,
                                &amp;inStatus, &amp;newAFSFid, &amp;newLinkStatus,
                                &amp;updatedDirStatus, &amp;volSync);
!         rx_PutConnection(rxconnp);
  
      } while (cm_Analyze(connp, userp, reqp,
                           &amp;dscp-&gt;fid, &amp;volSync, NULL, NULL, code));
***************
*** 3105,3111 ****
      int didEnd;
      AFSFetchStatus updatedDirStatus;
      AFSVolSync volSync;
!     struct rx_connection * callp;
      cm_dirOp_t dirop;
      cm_scache_t *scp = NULL;
      int free_fnamep = FALSE;
--- 3116,3122 ----
      int didEnd;
      AFSFetchStatus updatedDirStatus;
      AFSVolSync volSync;
!     struct rx_connection * rxconnp;
      cm_dirOp_t dirop;
      cm_scache_t *scp = NULL;
      int free_fnamep = FALSE;
***************
*** 3154,3163 ****
          dirAFSFid.Vnode = dscp-&gt;fid.vnode;
          dirAFSFid.Unique = dscp-&gt;fid.unique;
  
!         callp = cm_GetRxConn(connp);
!         code = RXAFS_RemoveDir(callp, &amp;dirAFSFid, fnamep,
                                 &amp;updatedDirStatus, &amp;volSync);
!         rx_PutConnection(callp);
  
      } while (cm_Analyze(connp, userp, reqp,
                          &amp;dscp-&gt;fid, &amp;volSync, NULL, NULL, code));
--- 3165,3174 ----
          dirAFSFid.Vnode = dscp-&gt;fid.vnode;
          dirAFSFid.Unique = dscp-&gt;fid.unique;
  
!         rxconnp = cm_GetRxConn(connp);
!         code = RXAFS_RemoveDir(rxconnp, &amp;dirAFSFid, fnamep,
                                 &amp;updatedDirStatus, &amp;volSync);
!         rx_PutConnection(rxconnp);
  
      } while (cm_Analyze(connp, userp, reqp,
                          &amp;dscp-&gt;fid, &amp;volSync, NULL, NULL, code));
***************
*** 3262,3268 ****
      AFSFetchStatus updatedNewDirStatus;
      AFSVolSync volSync;
      int oneDir;
!     struct rx_connection * callp;
      cm_dirOp_t oldDirOp;
      cm_fid_t   fileFid;
      int        diropCode = -1;
--- 3273,3279 ----
      AFSFetchStatus updatedNewDirStatus;
      AFSVolSync volSync;
      int oneDir;
!     struct rx_connection * rxconnp;
      cm_dirOp_t oldDirOp;
      cm_fid_t   fileFid;
      int        diropCode = -1;
***************
*** 3270,3275 ****
--- 3281,3291 ----
      fschar_t * newNamep = NULL;
      int free_oldNamep = FALSE;
  
+     if (cOldNamep == NULL || cNewNamep == NULL ||
+         cm_ClientStrLen(cOldNamep) == 0 ||
+         cm_ClientStrLen(cNewNamep) == 0)
+         return CM_ERROR_INVAL;
+ 
      if (oldNamep == NULL) {
          code = -1;
  #ifdef USE_BPLUS
***************
*** 3281,3288 ****
              cm_EndDirOp(&amp;oldDirOp);
          }
  #endif
!         if (code)
              goto done;
      }
  
  
--- 3297,3307 ----
              cm_EndDirOp(&amp;oldDirOp);
          }
  #endif
!         if (code) {
!             osi_Log2(afsd_logp, "cm_Rename oldDscp 0x%p cOldName %S Original Name lookup failed", 
!                       oldDscp, osi_LogSaveStringW(afsd_logp, cOldNamep));
              goto done;
+         }
      }
  
  
***************
*** 3294,3299 ****
--- 3313,3320 ----
      if (oldDscp == newDscp) {
          /* check for identical names */
          if (cm_ClientStrCmp(cOldNamep, cNewNamep) == 0) {
+             osi_Log2(afsd_logp, "cm_Rename oldDscp 0x%p newDscp 0x%p CM_ERROR_RENAME_IDENTICAL", 
+                       oldDscp, newDscp);
              code = CM_ERROR_RENAME_IDENTICAL;
              goto done;
          }
***************
*** 3315,3320 ****
--- 3336,3343 ----
          oneDir = 0;
          if (oldDscp-&gt;fid.cell != newDscp-&gt;fid.cell ||
               oldDscp-&gt;fid.volume != newDscp-&gt;fid.volume) {
+             osi_Log2(afsd_logp, "cm_Rename oldDscp 0x%p newDscp 0x%p CM_ERROR_CROSSDEVLINK", 
+                       oldDscp, newDscp);
              code = CM_ERROR_CROSSDEVLINK;
              goto done;
          }
***************
*** 3324,3329 ****
--- 3347,3354 ----
           * stale info.  Avoid deadlocks and quit now.
           */
          if (oldDscp-&gt;fid.vnode == newDscp-&gt;fid.vnode) {
+             osi_Log2(afsd_logp, "cm_Rename oldDscp 0x%p newDscp 0x%p vnode collision", 
+                       oldDscp, newDscp);
              code = CM_ERROR_CROSSDEVLINK;
              goto done;
          }
***************
*** 3409,3420 ****
          newDirAFSFid.Vnode = newDscp-&gt;fid.vnode;
          newDirAFSFid.Unique = newDscp-&gt;fid.unique;
  
!         callp = cm_GetRxConn(connp);
!         code = RXAFS_Rename(callp, &amp;oldDirAFSFid, oldNamep,
                              &amp;newDirAFSFid, newNamep,
                              &amp;updatedOldDirStatus, &amp;updatedNewDirStatus,
                              &amp;volSync);
!         rx_PutConnection(callp);
  
      } while (cm_Analyze(connp, userp, reqp, &amp;oldDscp-&gt;fid,
                           &amp;volSync, NULL, NULL, code));
--- 3434,3445 ----
          newDirAFSFid.Vnode = newDscp-&gt;fid.vnode;
          newDirAFSFid.Unique = newDscp-&gt;fid.unique;
  
!         rxconnp = cm_GetRxConn(connp);
!         code = RXAFS_Rename(rxconnp, &amp;oldDirAFSFid, oldNamep,
                              &amp;newDirAFSFid, newNamep,
                              &amp;updatedOldDirStatus, &amp;updatedNewDirStatus,
                              &amp;volSync);
!         rx_PutConnection(rxconnp);
  
      } while (cm_Analyze(connp, userp, reqp, &amp;oldDscp-&gt;fid,
                           &amp;volSync, NULL, NULL, code));
***************
*** 4022,4028 ****
      AFSFid tfid;
      cm_fid_t cfid;
      cm_conn_t * connp;
!     struct rx_connection * callp;
      AFSVolSync volSync;
      afs_uint32 reqflags = reqp-&gt;flags;
  
--- 4047,4053 ----
      AFSFid tfid;
      cm_fid_t cfid;
      cm_conn_t * connp;
!     struct rx_connection * rxconnp;
      AFSVolSync volSync;
      afs_uint32 reqflags = reqp-&gt;flags;
  
***************
*** 4041,4050 ****
          if (code) 
              break;
  
!         callp = cm_GetRxConn(connp);
!         code = RXAFS_SetLock(callp, &amp;tfid, lockType,
                               &amp;volSync);
!         rx_PutConnection(callp);
  
      } while (cm_Analyze(connp, userp, reqp, &amp;cfid, &amp;volSync,
                          NULL, NULL, code));
--- 4066,4075 ----
          if (code) 
              break;
  
!         rxconnp = cm_GetRxConn(connp);
!         code = RXAFS_SetLock(rxconnp, &amp;tfid, lockType,
                               &amp;volSync);
!         rx_PutConnection(rxconnp);
  
      } while (cm_Analyze(connp, userp, reqp, &amp;cfid, &amp;volSync,
                          NULL, NULL, code));
***************
*** 4068,4074 ****
      AFSFid tfid;
      cm_fid_t cfid;
      cm_conn_t * connp;
!     struct rx_connection * callp;
      AFSVolSync volSync;
  
      tfid.Volume = scp-&gt;fid.volume;
--- 4093,4099 ----
      AFSFid tfid;
      cm_fid_t cfid;
      cm_conn_t * connp;
!     struct rx_connection * rxconnp;
      AFSVolSync volSync;
  
      tfid.Volume = scp-&gt;fid.volume;
***************
*** 4085,4093 ****
          if (code) 
              break;
  
!         callp = cm_GetRxConn(connp);
!         code = RXAFS_ReleaseLock(callp, &amp;tfid, &amp;volSync);
!         rx_PutConnection(callp);
  
      } while (cm_Analyze(connp, userp, reqp, &amp;cfid, &amp;volSync,
                          NULL, NULL, code));
--- 4110,4118 ----
          if (code) 
              break;
  
!         rxconnp = cm_GetRxConn(connp);
!         code = RXAFS_ReleaseLock(rxconnp, &amp;tfid, &amp;volSync);
!         rx_PutConnection(rxconnp);
  
      } while (cm_Analyze(connp, userp, reqp, &amp;cfid, &amp;volSync,
                          NULL, NULL, code));
***************
*** 4977,4983 ****
      AFSVolSync volSync;
      cm_conn_t *connp;
      long code;
!     struct rx_connection * callp;
      cm_scache_t * scp;
  
      cm_InitReq(&amp;req);
--- 5002,5008 ----
      AFSVolSync volSync;
      cm_conn_t *connp;
      long code;
!     struct rx_connection * rxconnp;
      cm_scache_t * scp;
  
      cm_InitReq(&amp;req);
***************
*** 5079,5088 ****
                          if (code) 
                              break;
  
!                         callp = cm_GetRxConn(connp);
!                         code = RXAFS_ExtendLock(callp, &amp;tfid,
                                                  &amp;volSync);
!                         rx_PutConnection(callp);
  
                          osi_Log1(afsd_logp, "   ExtendLock returns %d", code);
  
--- 5104,5113 ----
                          if (code) 
                              break;
  
!                         rxconnp = cm_GetRxConn(connp);
!                         code = RXAFS_ExtendLock(rxconnp, &amp;tfid,
                                                  &amp;volSync);
!                         rx_PutConnection(rxconnp);
  
                          osi_Log1(afsd_logp, "   ExtendLock returns %d", code);
  
Index: openafs/src/WINNT/afsd/cm_vnodeops.h
diff -c openafs/src/WINNT/afsd/cm_vnodeops.h:1.14.4.12 openafs/src/WINNT/afsd/cm_vnodeops.h:1.14.4.13
*** openafs/src/WINNT/afsd/cm_vnodeops.h:1.14.4.12	Mon Jul 14 09:01:31 2008
--- openafs/src/WINNT/afsd/cm_vnodeops.h	Thu Jul 24 13:56:54 2008
***************
*** 124,130 ****
                          cm_scache_t **retscp);
  
  extern long cm_MakeDir(cm_scache_t *dscp, clientchar_t *lastNamep, long flags,
!                        cm_attr_t *attrp, cm_user_t *userp, cm_req_t *reqp);
  
  extern long cm_RemoveDir(cm_scache_t *dscp, fschar_t *lastNamep, clientchar_t *originalNamep,
                           cm_user_t *userp, cm_req_t *reqp);
--- 124,131 ----
                          cm_scache_t **retscp);
  
  extern long cm_MakeDir(cm_scache_t *dscp, clientchar_t *lastNamep, long flags,
!                        cm_attr_t *attrp, cm_user_t *userp, cm_req_t *reqp, 
!                        cm_scache_t **scpp);
  
  extern long cm_RemoveDir(cm_scache_t *dscp, fschar_t *lastNamep, clientchar_t *originalNamep,
                           cm_user_t *userp, cm_req_t *reqp);
Index: openafs/src/WINNT/afsd/cm_volume.c
diff -c openafs/src/WINNT/afsd/cm_volume.c:1.14.4.40 openafs/src/WINNT/afsd/cm_volume.c:1.14.4.46
*** openafs/src/WINNT/afsd/cm_volume.c:1.14.4.40	Thu Jun 26 10:38:24 2008
--- openafs/src/WINNT/afsd/cm_volume.c	Wed Jul 23 00:56:59 2008
***************
*** 102,107 ****
--- 102,108 ----
  
                  lock_InitializeRWLock(&amp;volp-&gt;rw, "cm_volume_t rwlock");
                  volp-&gt;flags |= CM_VOLUMEFLAG_RESET;
+                 volp-&gt;flags &amp;= ~CM_VOLUMEFLAG_UPDATING_VL;
                  for (volType = RWVOL; volType &lt; NUM_VOL_TYPES; volType++) {
                      volp-&gt;vol[volType].state = vl_unknown;
                      volp-&gt;vol[volType].serversp = NULL;
***************
*** 184,195 ****
  #endif
      afs_uint32 volType;
  
-     /* clear out old bindings */
-     for ( volType = RWVOL; volType &lt; NUM_VOL_TYPES; volType++) {
-         if (volp-&gt;vol[volType].serversp)
-             cm_FreeServerList(&amp;volp-&gt;vol[volType].serversp, CM_FREESERVERLIST_DELETE);
-     }
- 
  #ifdef AFS_FREELANCE_CLIENT
      if ( cellp-&gt;cellID == AFS_FAKE_ROOT_CELL_ID &amp;&amp; volp-&gt;vol[RWVOL].ID == AFS_FAKE_ROOT_VOL_ID ) 
      {
--- 185,190 ----
***************
*** 203,213 ****
  #endif
      {
          while (volp-&gt;flags &amp; CM_VOLUMEFLAG_UPDATING_VL) {
              osi_SleepW((LONG_PTR) &amp;volp-&gt;flags, &amp;volp-&gt;rw);
              lock_ObtainWrite(&amp;volp-&gt;rw);
! 
!             if (!(volp-&gt;flags &amp; CM_VOLUMEFLAG_RESET))
                  return 0;
          }
  
          volp-&gt;flags |= CM_VOLUMEFLAG_UPDATING_VL;
--- 198,221 ----
  #endif
      {
          while (volp-&gt;flags &amp; CM_VOLUMEFLAG_UPDATING_VL) {
+             osi_Log3(afsd_logp, "cm_UpdateVolumeLocation sleeping name %s:%s flags 0x%x", 
+                      volp-&gt;cellp-&gt;name, volp-&gt;namep, volp-&gt;flags);
              osi_SleepW((LONG_PTR) &amp;volp-&gt;flags, &amp;volp-&gt;rw);
              lock_ObtainWrite(&amp;volp-&gt;rw);
!             osi_Log3(afsd_logp, "cm_UpdateVolumeLocation awake name %s:%s flags 0x%x", 
!                      volp-&gt;cellp-&gt;name, volp-&gt;namep, volp-&gt;flags);
!             if (!(volp-&gt;flags &amp; CM_VOLUMEFLAG_RESET)) {
!                 osi_Log3(afsd_logp, "cm_UpdateVolumeLocation nothing to do, waking others name %s:%s flags 0x%x", 
!                          volp-&gt;cellp-&gt;name, volp-&gt;namep, volp-&gt;flags);
!                 osi_Wakeup((LONG_PTR) &amp;volp-&gt;flags);
                  return 0;
+             }
+         }
+ 
+         /* clear out old bindings */
+         for ( volType = RWVOL; volType &lt; NUM_VOL_TYPES; volType++) {
+             if (volp-&gt;vol[volType].serversp)
+                 cm_FreeServerList(&amp;volp-&gt;vol[volType].serversp, CM_FREESERVERLIST_DELETE);
          }
  
          volp-&gt;flags |= CM_VOLUMEFLAG_UPDATING_VL;
***************
*** 219,240 ****
          /* now we have volume structure locked and held; make RPC to fill it */
  	osi_Log2(afsd_logp, "CALL VL_GetEntryByName{UNO} name %s:%s", volp-&gt;cellp-&gt;name, volp-&gt;namep);
          do {
              code = cm_ConnByMServers(cellp-&gt;vlServersp, userp, reqp, &amp;connp);
              if (code) 
                  continue;
  #ifdef MULTIHOMED
!             code = VL_GetEntryByNameU(connp-&gt;callp, volp-&gt;namep, &amp;uvldbEntry);
              method = 2;
              if ( code == RXGEN_OPCODE ) 
  #endif
              {
!                 code = VL_GetEntryByNameN(connp-&gt;callp, volp-&gt;namep, &amp;nvldbEntry);
                  method = 1;
              }
              if ( code == RXGEN_OPCODE ) {
!                 code = VL_GetEntryByNameO(connp-&gt;callp, volp-&gt;namep, &amp;vldbEntry);
                  method = 0;
              }
          } while (cm_Analyze(connp, userp, reqp, NULL, NULL, cellp-&gt;vlServersp, NULL, code));
          code = cm_MapVLRPCError(code, reqp);
  	if ( code )
--- 227,253 ----
          /* now we have volume structure locked and held; make RPC to fill it */
  	osi_Log2(afsd_logp, "CALL VL_GetEntryByName{UNO} name %s:%s", volp-&gt;cellp-&gt;name, volp-&gt;namep);
          do {
+             struct rx_connection * rxconnp;
+ 
              code = cm_ConnByMServers(cellp-&gt;vlServersp, userp, reqp, &amp;connp);
              if (code) 
                  continue;
+ 
+             rxconnp = cm_GetRxConn(connp);
  #ifdef MULTIHOMED
!             code = VL_GetEntryByNameU(rxconnp, volp-&gt;namep, &amp;uvldbEntry);
              method = 2;
              if ( code == RXGEN_OPCODE ) 
  #endif
              {
!                 code = VL_GetEntryByNameN(rxconnp, volp-&gt;namep, &amp;nvldbEntry);
                  method = 1;
              }
              if ( code == RXGEN_OPCODE ) {
!                 code = VL_GetEntryByNameO(rxconnp, volp-&gt;namep, &amp;vldbEntry);
                  method = 0;
              }
+             rx_PutConnection(rxconnp);
          } while (cm_Analyze(connp, userp, reqp, NULL, NULL, cellp-&gt;vlServersp, NULL, code));
          code = cm_MapVLRPCError(code, reqp);
  	if ( code )
***************
*** 259,280 ****
  	osi_Log2(afsd_logp, "CALL VL_GetEntryByName{UNO} name %s:%s", volp-&gt;cellp-&gt;name, 
                   osi_LogSaveString(afsd_logp,name));
          do {
              code = cm_ConnByMServers(cellp-&gt;vlServersp, userp, reqp, &amp;connp);
              if (code) 
                  continue;
  #ifdef MULTIHOMED
!             code = VL_GetEntryByNameU(connp-&gt;callp, name, &amp;uvldbEntry);
              method = 2;
              if ( code == RXGEN_OPCODE ) 
  #endif
              {
!                 code = VL_GetEntryByNameN(connp-&gt;callp, name, &amp;nvldbEntry);
                  method = 1;
              }
              if ( code == RXGEN_OPCODE ) {
!                 code = VL_GetEntryByNameO(connp-&gt;callp, name, &amp;vldbEntry);
                  method = 0;
              }
          } while (cm_Analyze(connp, userp, reqp, NULL, NULL, cellp-&gt;vlServersp, NULL, code));
          code = cm_MapVLRPCError(code, reqp);
  	if ( code )
--- 272,298 ----
  	osi_Log2(afsd_logp, "CALL VL_GetEntryByName{UNO} name %s:%s", volp-&gt;cellp-&gt;name, 
                   osi_LogSaveString(afsd_logp,name));
          do {
+             struct rx_connection * rxconnp;
+ 
              code = cm_ConnByMServers(cellp-&gt;vlServersp, userp, reqp, &amp;connp);
              if (code) 
                  continue;
+ 
+             rxconnp = cm_GetRxConn(connp);
  #ifdef MULTIHOMED
!             code = VL_GetEntryByNameU(connp-&gt;rxconnp, name, &amp;uvldbEntry);
              method = 2;
              if ( code == RXGEN_OPCODE ) 
  #endif
              {
!                 code = VL_GetEntryByNameN(connp-&gt;rxconnp, name, &amp;nvldbEntry);
                  method = 1;
              }
              if ( code == RXGEN_OPCODE ) {
!                 code = VL_GetEntryByNameO(connp-&gt;rxconnp, name, &amp;vldbEntry);
                  method = 0;
              }
+             rx_PutConnection(rxconnp);
          } while (cm_Analyze(connp, userp, reqp, NULL, NULL, cellp-&gt;vlServersp, NULL, code));
          code = cm_MapVLRPCError(code, reqp);
  	if ( code )
***************
*** 338,344 ****
              rwID = uvldbEntry.volumeId[0];
              roID = uvldbEntry.volumeId[1];
              bkID = uvldbEntry.volumeId[2];
!             for ( i=0, j=0; i&lt;nServers &amp;&amp; j&lt;NMAXNSERVERS; i++ ) {
                  if ( !(uvldbEntry.serverFlags[i] &amp; VLSERVER_FLAG_UUID) ) {
                      serverFlags[j] = uvldbEntry.serverFlags[i];
                      serverNumber[j] = uvldbEntry.serverNumber[i].time_low;
--- 356,362 ----
              rwID = uvldbEntry.volumeId[0];
              roID = uvldbEntry.volumeId[1];
              bkID = uvldbEntry.volumeId[2];
!             for ( i=0, j=0; code == 0 &amp;&amp; i&lt;nServers &amp;&amp; j&lt;NMAXNSERVERS; i++ ) {
                  if ( !(uvldbEntry.serverFlags[i] &amp; VLSERVER_FLAG_UUID) ) {
                      serverFlags[j] = uvldbEntry.serverFlags[i];
                      serverNumber[j] = uvldbEntry.serverNumber[i].time_low;
***************
*** 356,373 ****
                      memset((char *)&amp;addrs, 0, sizeof(addrs));
  
                      do {
                          code = cm_ConnByMServers(cellp-&gt;vlServersp, userp, reqp, &amp;connp);
                          if (code) 
                              continue;
                     
!                         code = VL_GetAddrsU(connp-&gt;callp, &amp;attrs, &amp;uuid, &amp;unique, &amp;nentries, &amp;addrs);
! 
!                         if (code == 0 &amp;&amp; nentries == 0)
!                             code = VL_NOENT;
                      } while (cm_Analyze(connp, userp, reqp, NULL, NULL, cellp-&gt;vlServersp, NULL, code));
!                     code = cm_MapVLRPCError(code, reqp);
!                     if (code)
!                         return code;
  
                      addrp = addrs.bulkaddrs_val;
                      for (k = 0; k &lt; nentries &amp;&amp; j &lt; NMAXNSERVERS; j++, k++) {
--- 374,397 ----
                      memset((char *)&amp;addrs, 0, sizeof(addrs));
  
                      do {
+                         struct rx_connection *rxconnp;
+ 
                          code = cm_ConnByMServers(cellp-&gt;vlServersp, userp, reqp, &amp;connp);
                          if (code) 
                              continue;
                     
!                         rxconnp = cm_GetRxConn(connp);
!                         code = VL_GetAddrsU(rxconnp, &amp;attrs, &amp;uuid, &amp;unique, &amp;nentries, &amp;addrs);
!                         rx_PutConnection(rxconnp);
                      } while (cm_Analyze(connp, userp, reqp, NULL, NULL, cellp-&gt;vlServersp, NULL, code));
! 
!                     if ( code ) {
!                         code = cm_MapVLRPCError(code, reqp);
!                         osi_Log2(afsd_logp, "CALL VL_GetAddrsU serverNumber %u FAILURE, code 0x%x", 
!                                  i, code);
!                         continue;
!                     } 
!                     osi_Log1(afsd_logp, "CALL VL_GetAddrsU serverNumber %u SUCCESS", i);
  
                      addrp = addrs.bulkaddrs_val;
                      for (k = 0; k &lt; nentries &amp;&amp; j &lt; NMAXNSERVERS; j++, k++) {
***************
*** 376,381 ****
--- 400,408 ----
                      }
  
                      free(addrs.bulkaddrs_val);  /* This is wrong */
+ 
+                     if (nentries == 0)
+                         code = CM_ERROR_INVAL;
                  }
              }
              nServers = j;					/* update the server count */
***************
*** 454,463 ****
              tempAddr = htonl(serverNumber[i]);
              tsockAddr.sin_addr.s_addr = tempAddr;
              tsp = cm_FindServer(&amp;tsockAddr, CM_SERVER_FILE);
!             if (!tsp)
!                 tsp = cm_NewServer(&amp;tsockAddr, CM_SERVER_FILE,
!                                     cellp, 0);
! 
              /* if this server was created by fs setserverprefs */
              if ( !tsp-&gt;cellp ) 
                  tsp-&gt;cellp = cellp;
--- 481,493 ----
              tempAddr = htonl(serverNumber[i]);
              tsockAddr.sin_addr.s_addr = tempAddr;
              tsp = cm_FindServer(&amp;tsockAddr, CM_SERVER_FILE);
!             if (!tsp) {
!                 /* cm_NewServer will probe the server which in turn will
!                  * update the state on the volume group object */
!                 lock_ReleaseWrite(&amp;volp-&gt;rw);
!                 tsp = cm_NewServer(&amp;tsockAddr, CM_SERVER_FILE, cellp, 0);
!                 lock_ObtainWrite(&amp;volp-&gt;rw);
!             }
              /* if this server was created by fs setserverprefs */
              if ( !tsp-&gt;cellp ) 
                  tsp-&gt;cellp = cellp;
***************
*** 567,573 ****
--- 597,608 ----
          volp-&gt;vol[BACKVOL].state = bkNewstate;
      }
  
+     if (code == 0)
+         volp-&gt;flags &amp;= ~CM_VOLUMEFLAG_RESET;
+ 
      volp-&gt;flags &amp;= ~CM_VOLUMEFLAG_UPDATING_VL;
+     osi_Log4(afsd_logp, "cm_UpdateVolumeLocation done, waking others name %s:%s flags 0x%x code 0x%x", 
+              volp-&gt;cellp-&gt;name, volp-&gt;namep, volp-&gt;flags, code);
      osi_Wakeup((LONG_PTR) &amp;volp-&gt;flags);
  
      return code;
***************
*** 682,689 ****
          code = 0;
          if ((volp-&gt;flags &amp; CM_VOLUMEFLAG_RESET) &amp;&amp; !(flags &amp; CM_GETVOL_FLAG_NO_RESET)) {
              code = cm_UpdateVolumeLocation(cellp, userp, reqp, volp);
-             if (code == 0)
-                 volp-&gt;flags &amp;= ~CM_VOLUMEFLAG_RESET;
          }
          lock_ReleaseWrite(&amp;volp-&gt;rw);
          if (code == 0) {
--- 717,722 ----
***************
*** 844,851 ****
      /* if we get here we are holding the mutex */
      if ((volp-&gt;flags &amp; CM_VOLUMEFLAG_RESET) &amp;&amp; !(flags &amp; CM_GETVOL_FLAG_NO_RESET)) {
          code = cm_UpdateVolumeLocation(cellp, userp, reqp, volp);
-         if (code == 0)
-             volp-&gt;flags &amp;= ~CM_VOLUMEFLAG_RESET;
      }	
      lock_ReleaseWrite(&amp;volp-&gt;rw);
  
--- 877,882 ----
***************
*** 947,954 ****
       * occur.
       */
      code = cm_UpdateVolumeLocation(cellp, userp, reqp, volp);
-     if (code == 0)
- 	volp-&gt;flags &amp;= ~CM_VOLUMEFLAG_RESET;
  #endif
      lock_ReleaseWrite(&amp;volp-&gt;rw);
  
--- 978,983 ----
***************
*** 1063,1069 ****
      char *OfflineMsg;
      char *MOTD;
      cm_req_t req;
!     struct rx_connection * callp;
      char volName[32];
      char offLineMsg[256];
      char motd[256];
--- 1092,1098 ----
      char *OfflineMsg;
      char *MOTD;
      cm_req_t req;
!     struct rx_connection * rxconnp;
      char volName[32];
      char offLineMsg[256];
      char motd[256];
***************
*** 1079,1086 ****
      if (volp-&gt;flags &amp; CM_VOLUMEFLAG_RESET) {
          cm_InitReq(&amp;req);
          code = cm_UpdateVolumeLocation(volp-&gt;cellp, cm_rootUserp, &amp;req, volp);
-         if (code == 0)
-             volp-&gt;flags &amp;= ~CM_VOLUMEFLAG_RESET;
      }
  
      if (volp-&gt;vol[RWVOL].ID != 0 &amp;&amp; (!volID || volID == volp-&gt;vol[RWVOL].ID) &amp;&amp;
--- 1108,1113 ----
***************
*** 1102,1111 ****
                  if (code) 
                      continue;
  
!                 callp = cm_GetRxConn(connp);
!                 code = RXAFS_GetVolumeStatus(callp, volp-&gt;vol[RWVOL].ID,
                                               &amp;volStat, &amp;Name, &amp;OfflineMsg, &amp;MOTD);
!                 rx_PutConnection(callp);            
  
              } while (cm_Analyze(connp, cm_rootUserp, &amp;req, NULL, NULL, NULL, NULL, code));
              code = cm_MapRPCError(code, &amp;req);
--- 1129,1138 ----
                  if (code) 
                      continue;
  
!                 rxconnp = cm_GetRxConn(connp);
!                 code = RXAFS_GetVolumeStatus(rxconnp, volp-&gt;vol[RWVOL].ID,
                                               &amp;volStat, &amp;Name, &amp;OfflineMsg, &amp;MOTD);
!                 rx_PutConnection(rxconnp);            
  
              } while (cm_Analyze(connp, cm_rootUserp, &amp;req, NULL, NULL, NULL, NULL, code));
              code = cm_MapRPCError(code, &amp;req);
***************
*** 1142,1151 ****
                  if (code) 
                      continue;
  
!                 callp = cm_GetRxConn(connp);
!                 code = RXAFS_GetVolumeStatus(callp, volp-&gt;vol[ROVOL].ID,
                                                &amp;volStat, &amp;Name, &amp;OfflineMsg, &amp;MOTD);
!                 rx_PutConnection(callp);        
  
              } while (cm_Analyze(connp, cm_rootUserp, &amp;req, NULL, NULL, NULL, NULL, code));
              code = cm_MapRPCError(code, &amp;req);
--- 1169,1178 ----
                  if (code) 
                      continue;
  
!                 rxconnp = cm_GetRxConn(connp);
!                 code = RXAFS_GetVolumeStatus(rxconnp, volp-&gt;vol[ROVOL].ID,
                                                &amp;volStat, &amp;Name, &amp;OfflineMsg, &amp;MOTD);
!                 rx_PutConnection(rxconnp);        
  
              } while (cm_Analyze(connp, cm_rootUserp, &amp;req, NULL, NULL, NULL, NULL, code));
              code = cm_MapRPCError(code, &amp;req);
***************
*** 1182,1191 ****
                  if (code) 
                      continue;
  
!                 callp = cm_GetRxConn(connp);
!                 code = RXAFS_GetVolumeStatus(callp, volp-&gt;vol[BACKVOL].ID,
                                                &amp;volStat, &amp;Name, &amp;OfflineMsg, &amp;MOTD);
!                 rx_PutConnection(callp);        
  
              } while (cm_Analyze(connp, cm_rootUserp, &amp;req, NULL, NULL, NULL, NULL, code));
              code = cm_MapRPCError(code, &amp;req);
--- 1209,1218 ----
                  if (code) 
                      continue;
  
!                 rxconnp = cm_GetRxConn(connp);
!                 code = RXAFS_GetVolumeStatus(rxconnp, volp-&gt;vol[BACKVOL].ID,
                                                &amp;volStat, &amp;Name, &amp;OfflineMsg, &amp;MOTD);
!                 rx_PutConnection(rxconnp);        
  
              } while (cm_Analyze(connp, cm_rootUserp, &amp;req, NULL, NULL, NULL, NULL, code));
              code = cm_MapRPCError(code, &amp;req);
Index: openafs/src/WINNT/afsd/rawops.c
diff -c openafs/src/WINNT/afsd/rawops.c:1.2.4.7 openafs/src/WINNT/afsd/rawops.c:1.2.4.8
*** openafs/src/WINNT/afsd/rawops.c:1.2.4.7	Thu Jun 26 10:38:24 2008
--- openafs/src/WINNT/afsd/rawops.c	Thu Jul 24 15:37:46 2008
***************
*** 322,336 ****
  
          /* now copy the data */
          memcpy(bufferp-&gt;datap + bufIndex, op, nbytes);
!         buf_SetDirty(bufferp, bufIndex, nbytes);
! 
!         /* and record the last writer */
!         if (bufferp-&gt;userp != userp) {
!             cm_HoldUser(userp);
!             if (bufferp-&gt;userp) 
!                 cm_ReleaseUser(bufferp-&gt;userp);
!             bufferp-&gt;userp = userp;
!         }
  
          /* adjust counters, pointers, etc. */
          op += nbytes;
--- 322,328 ----
  
          /* now copy the data */
          memcpy(bufferp-&gt;datap + bufIndex, op, nbytes);
!         buf_SetDirty(bufferp, bufIndex, nbytes, userp);
  
          /* adjust counters, pointers, etc. */
          op += nbytes;
Index: openafs/src/WINNT/afsd/smb.c
diff -c openafs/src/WINNT/afsd/smb.c:1.118.2.81 openafs/src/WINNT/afsd/smb.c:1.118.2.84
*** openafs/src/WINNT/afsd/smb.c:1.118.2.81	Wed Jul 16 11:23:46 2008
--- openafs/src/WINNT/afsd/smb.c	Thu Jul 24 15:37:46 2008
***************
*** 190,195 ****
--- 190,201 ----
  /* Faux server GUID. This is never checked. */
  GUID smb_ServerGUID = { 0x40015cb8, 0x058a, 0x44fc, { 0xae, 0x7e, 0xbb, 0x29, 0x52, 0xee, 0x7e, 0xff }};
  
+ void smb_InitReq(cm_req_t *reqp)
+ {
+     cm_InitReq(reqp);
+     reqp-&gt;flags |= CM_REQ_SOURCE_SMB;
+ }
+ 
  void smb_ResetServerPriority()
  {
      void * p = TlsGetValue(smb_TlsRequestSlot);
***************
*** 1801,1807 ****
          /*  attempt to locate a partial match in root.afs.  This is because
              when using the ANSI RAP calls, the share name is limited to 13 chars
              and hence is truncated. Of course we prefer exact matches. */
!         cm_InitReq(&amp;req);
          thyper.HighPart = 0;
          thyper.LowPart = 0;
  
--- 1807,1813 ----
          /*  attempt to locate a partial match in root.afs.  This is because
              when using the ANSI RAP calls, the share name is limited to 13 chars
              and hence is truncated. Of course we prefer exact matches. */
!         smb_InitReq(&amp;req);
          thyper.HighPart = 0;
          thyper.LowPart = 0;
  
***************
*** 3797,3803 ****
                  scp = wlRequest-&gt;scp;
  		osi_Log2(smb_logp,"smb_WaitingLocksDaemon wlRequest 0x%p scp 0x%p", wlRequest, scp);
  
!                 cm_InitReq(&amp;req);
  
                  lock_ObtainWrite(&amp;scp-&gt;rw);
  
--- 3803,3809 ----
                  scp = wlRequest-&gt;scp;
  		osi_Log2(smb_logp,"smb_WaitingLocksDaemon wlRequest 0x%p scp 0x%p", wlRequest, scp);
  
!                 smb_InitReq(&amp;req);
  
                  lock_ObtainWrite(&amp;scp-&gt;rw);
  
***************
*** 4250,4256 ****
      cm_fid_t fid;
      int fileType;
  
!     cm_InitReq(&amp;req);
  
      maxCount = smb_GetSMBParm(inp, 0);
  
--- 4256,4262 ----
      cm_fid_t fid;
      int fileType;
  
!     smb_InitReq(&amp;req);
  
      maxCount = smb_GetSMBParm(inp, 0);
  
***************
*** 4772,4778 ****
      cm_req_t req;
      char * pdata;
  
!     cm_InitReq(&amp;req);
  
      pdata = smb_GetSMBData(inp, NULL);
      pathp = smb_ParseASCIIBlock(inp, pdata, NULL, SMB_STRF_ANSIPATH);
--- 4778,4784 ----
      cm_req_t req;
      char * pdata;
  
!     smb_InitReq(&amp;req);
  
      pdata = smb_GetSMBData(inp, NULL);
      pathp = smb_ParseASCIIBlock(inp, pdata, NULL, SMB_STRF_ANSIPATH);
***************
*** 4856,4862 ****
      char * datap;
      cm_req_t req;
  
!     cm_InitReq(&amp;req);
  
      /* decode basic attributes we're passed */
      attribute = smb_GetSMBParm(inp, 0);
--- 4862,4868 ----
      char * datap;
      cm_req_t req;
  
!     smb_InitReq(&amp;req);
  
      /* decode basic attributes we're passed */
      attribute = smb_GetSMBParm(inp, 0);
***************
*** 4972,4978 ****
      char * datap;
      cm_req_t req;
  
!     cm_InitReq(&amp;req);
  
      datap = smb_GetSMBData(inp, NULL);
      pathp = smb_ParseASCIIBlock(inp, datap, NULL, SMB_STRF_ANSIPATH);
--- 4978,4984 ----
      char * datap;
      cm_req_t req;
  
!     smb_InitReq(&amp;req);
  
      datap = smb_GetSMBData(inp, NULL);
      pathp = smb_ParseASCIIBlock(inp, datap, NULL, SMB_STRF_ANSIPATH);
***************
*** 5158,5164 ****
      char * datap;
      cm_req_t req;
  
!     cm_InitReq(&amp;req);
  
      datap = smb_GetSMBData(inp, NULL);
      pathp = smb_ParseASCIIBlock(inp, datap, NULL, SMB_STRF_ANSIPATH);
--- 5164,5170 ----
      char * datap;
      cm_req_t req;
  
!     smb_InitReq(&amp;req);
  
      datap = smb_GetSMBData(inp, NULL);
      pathp = smb_ParseASCIIBlock(inp, datap, NULL, SMB_STRF_ANSIPATH);
***************
*** 5361,5367 ****
      clientchar_t *tidPathp;
      cm_req_t req;
  
!     cm_InitReq(&amp;req);
  
      attribute = smb_GetSMBParm(inp, 0);
          
--- 5367,5373 ----
      clientchar_t *tidPathp;
      cm_req_t req;
  
!     smb_InitReq(&amp;req);
  
      attribute = smb_GetSMBParm(inp, 0);
          
***************
*** 5552,5558 ****
          return CM_ERROR_NOSUCHPATH;
      }
  
!     cm_InitReq(&amp;req);
      spacep = inp-&gt;spacep;
      smb_StripLastComponent(spacep-&gt;wdata, &amp;oldLastNamep, oldPathp);
  
--- 5558,5564 ----
          return CM_ERROR_NOSUCHPATH;
      }
  
!     smb_InitReq(&amp;req);
      spacep = inp-&gt;spacep;
      smb_StripLastComponent(spacep-&gt;wdata, &amp;oldLastNamep, oldPathp);
  
***************
*** 5760,5766 ****
          return CM_ERROR_NOSUCHPATH;
      }
  
!     cm_InitReq(&amp;req);
  
      caseFold = CM_FLAG_FOLLOW | CM_FLAG_CASEFOLD;
  
--- 5766,5772 ----
          return CM_ERROR_NOSUCHPATH;
      }
  
!     smb_InitReq(&amp;req);
  
      caseFold = CM_FLAG_FOLLOW | CM_FLAG_CASEFOLD;
  
***************
*** 5970,5976 ****
      clientchar_t *tidPathp;
      cm_req_t req;
  
!     cm_InitReq(&amp;req);
  
      tp = smb_GetSMBData(inp, NULL);
      pathp = smb_ParseASCIIBlock(inp, tp, &amp;tp, SMB_STRF_ANSIPATH);
--- 5976,5982 ----
      clientchar_t *tidPathp;
      cm_req_t req;
  
!     smb_InitReq(&amp;req);
  
      tp = smb_GetSMBData(inp, NULL);
      pathp = smb_ParseASCIIBlock(inp, tp, &amp;tp, SMB_STRF_ANSIPATH);
***************
*** 6077,6083 ****
      long code = 0;
      cm_req_t req;
  
!     cm_InitReq(&amp;req);
  
      fid = smb_GetSMBParm(inp, 0);
  
--- 6083,6089 ----
      long code = 0;
      cm_req_t req;
  
!     smb_InitReq(&amp;req);
  
      fid = smb_GetSMBParm(inp, 0);
  
***************
*** 6208,6214 ****
  	lock_ReleaseMutex(&amp;fidp-&gt;mx);
      }
  
!     cm_InitReq(&amp;req);
  
      lock_ObtainWrite(&amp;smb_rctLock);
      if (fidp-&gt;deleteOk) {
--- 6214,6220 ----
  	lock_ReleaseMutex(&amp;fidp-&gt;mx);
      }
  
!     smb_InitReq(&amp;req);
  
      lock_ObtainWrite(&amp;smb_rctLock);
      if (fidp-&gt;deleteOk) {
***************
*** 6448,6454 ****
          goto done2;
      }
      
!     cm_InitReq(&amp;req);
  
      bufferp = NULL;
      offset = *offsetp;
--- 6454,6460 ----
          goto done2;
      }
      
!     smb_InitReq(&amp;req);
  
      bufferp = NULL;
      offset = *offsetp;
***************
*** 6619,6625 ****
          goto done2;
      }
      
!     cm_InitReq(&amp;req);
  
      scp = fidp-&gt;scp;
      cm_HoldSCache(scp);
--- 6625,6631 ----
          goto done2;
      }
      
!     smb_InitReq(&amp;req);
  
      scp = fidp-&gt;scp;
      cm_HoldSCache(scp);
***************
*** 6781,6795 ****
  
          /* now copy the data */
          memcpy(bufferp-&gt;datap + bufIndex, op, nbytes);
!         buf_SetDirty(bufferp, bufIndex, nbytes);
! 
!         /* and record the last writer */
!         if (bufferp-&gt;userp != userp) {
!             cm_HoldUser(userp);
!             if (bufferp-&gt;userp) 
!                 cm_ReleaseUser(bufferp-&gt;userp);
!             bufferp-&gt;userp = userp;
!         }
  
          /* adjust counters, pointers, etc. */
          op += nbytes;
--- 6787,6793 ----
  
          /* now copy the data */
          memcpy(bufferp-&gt;datap + bufIndex, op, nbytes);
!         buf_SetDirty(bufferp, bufIndex, nbytes, userp);
  
          /* adjust counters, pointers, etc. */
          op += nbytes;
***************
*** 6929,6935 ****
  
  	osi_Log1(smb_logp, "smb_ReceiveCoreWrite truncation to length 0x%x", offset.LowPart);
          
!         cm_InitReq(&amp;req);
  
          truncAttr.mask = CM_ATTRMASK_LENGTH;
          truncAttr.length.LowPart = offset.LowPart;
--- 6927,6933 ----
  
  	osi_Log1(smb_logp, "smb_ReceiveCoreWrite truncation to length 0x%x", offset.LowPart);
          
!         smb_InitReq(&amp;req);
  
          truncAttr.mask = CM_ATTRMASK_LENGTH;
          truncAttr.length.LowPart = offset.LowPart;
***************
*** 7348,7354 ****
      clientchar_t *tidPathp;
      cm_req_t req;
  
!     cm_InitReq(&amp;req);
  
      scp = NULL;
          
--- 7346,7352 ----
      clientchar_t *tidPathp;
      cm_req_t req;
  
!     smb_InitReq(&amp;req);
  
      scp = NULL;
          
***************
*** 7413,7419 ****
          
      setAttr.mask = CM_ATTRMASK_CLIENTMODTIME;
      setAttr.clientModTime = time(NULL);
!     code = cm_MakeDir(dscp, lastNamep, 0, &amp;setAttr, userp, &amp;req);
      if (code == 0 &amp;&amp; (dscp-&gt;flags &amp; CM_SCACHEFLAG_ANYWATCH))
          smb_NotifyChange(FILE_ACTION_ADDED,
                           FILE_NOTIFY_CHANGE_DIR_NAME,
--- 7411,7417 ----
          
      setAttr.mask = CM_ATTRMASK_CLIENTMODTIME;
      setAttr.clientModTime = time(NULL);
!     code = cm_MakeDir(dscp, lastNamep, 0, &amp;setAttr, userp, &amp;req, NULL);
      if (code == 0 &amp;&amp; (dscp-&gt;flags &amp; CM_SCACHEFLAG_ANYWATCH))
          smb_NotifyChange(FILE_ACTION_ADDED,
                           FILE_NOTIFY_CHANGE_DIR_NAME,
***************
*** 7471,7477 ****
      cm_req_t req;
      int created = 0;			/* the file was new */
  
!     cm_InitReq(&amp;req);
  
      scp = NULL;
      excl = (inp-&gt;inCom == 0x03)? 0 : 1;
--- 7469,7475 ----
      cm_req_t req;
      int created = 0;			/* the file was new */
  
!     smb_InitReq(&amp;req);
  
      scp = NULL;
      excl = (inp-&gt;inCom == 0x03)? 0 : 1;
***************
*** 7660,7666 ****
      cm_user_t *userp;
      cm_req_t req;
  
!     cm_InitReq(&amp;req);
          
      fd = smb_GetSMBParm(inp, 0);
      whence = smb_GetSMBParm(inp, 1);
--- 7658,7664 ----
      cm_user_t *userp;
      cm_req_t req;
  
!     smb_InitReq(&amp;req);
          
      fd = smb_GetSMBParm(inp, 0);
      whence = smb_GetSMBParm(inp, 1);
Index: openafs/src/WINNT/afsd/smb.h
diff -c openafs/src/WINNT/afsd/smb.h:1.41.2.32 openafs/src/WINNT/afsd/smb.h:1.41.2.34
*** openafs/src/WINNT/afsd/smb.h:1.41.2.32	Thu Jun 26 12:38:31 2008
--- openafs/src/WINNT/afsd/smb.h	Mon Jul 28 19:05:34 2008
***************
*** 18,26 ****
  
  #include &lt;cm_nls.h&gt;
  
- /* Support largefiles by default */
- #define AFS_LARGEFILES
- 
  /* basic core protocol SMB structure */
  #pragma pack(push, 1)
  typedef struct smb {
--- 18,23 ----
***************
*** 742,747 ****
--- 739,745 ----
  extern void smb_LanAdapterChange(int);
  extern void smb_SetLanAdapterChangeDetected(void);
  
+ extern void smb_InitReq(cm_req_t *reqp);
  
  #define SMB_LISTENER_UNINITIALIZED -1
  #define SMB_LISTENER_STOPPED 0
Index: openafs/src/WINNT/afsd/smb3.c
diff -c openafs/src/WINNT/afsd/smb3.c:1.95.2.66 openafs/src/WINNT/afsd/smb3.c:1.95.2.68
*** openafs/src/WINNT/afsd/smb3.c:1.95.2.66	Mon Jul 14 09:38:23 2008
--- openafs/src/WINNT/afsd/smb3.c	Thu Jul 24 13:56:55 2008
***************
*** 1651,1657 ****
      rootShares.cShare = 0;
      rootShares.shares = malloc( sizeof(smb_rap_share_info_0_t) * SMB_RAP_MAX_SHARES );
  
!     cm_InitReq(&amp;req);
  
      userp = smb_GetTran2User(vcp,p);
  
--- 1651,1657 ----
      rootShares.cShare = 0;
      rootShares.shares = malloc( sizeof(smb_rap_share_info_0_t) * SMB_RAP_MAX_SHARES );
  
!     smb_InitReq(&amp;req);
  
      userp = smb_GetTran2User(vcp,p);
  
***************
*** 1773,1779 ****
      cm_user_t   *userp;
      cm_req_t    req;
  
!     cm_InitReq(&amp;req);
  
      tp = p-&gt;parmsp + 1; /* skip over function number (always 1) */
  
--- 1773,1779 ----
      cm_user_t   *userp;
      cm_req_t    req;
  
!     smb_InitReq(&amp;req);
  
      tp = p-&gt;parmsp + 1; /* skip over function number (always 1) */
  
***************
*** 2249,2255 ****
      cm_req_t req;
      int created = 0;
  
!     cm_InitReq(&amp;req);
  
      scp = NULL;
          
--- 2249,2255 ----
      cm_req_t req;
      int created = 0;
  
!     smb_InitReq(&amp;req);
  
      scp = NULL;
          
***************
*** 2856,2862 ****
      clientchar_t *lastComp;
      cm_req_t req;
  
!     cm_InitReq(&amp;req);
  
      infoLevel = p-&gt;parmsp[0];
      if (infoLevel == SMB_INFO_IS_NAME_VALID) 
--- 2856,2862 ----
      clientchar_t *lastComp;
      cm_req_t req;
  
!     smb_InitReq(&amp;req);
  
      infoLevel = p-&gt;parmsp[0];
      if (infoLevel == SMB_INFO_IS_NAME_VALID) 
***************
*** 3160,3166 ****
      clientchar_t *tidPathp;
      clientchar_t *lastComp;
  
!     cm_InitReq(&amp;req);
  
      infoLevel = p-&gt;parmsp[0];
      osi_Log1(smb_logp,"ReceiveTran2SetPathInfo type 0x%x", infoLevel);
--- 3160,3166 ----
      clientchar_t *tidPathp;
      clientchar_t *lastComp;
  
!     smb_InitReq(&amp;req);
  
      infoLevel = p-&gt;parmsp[0];
      osi_Log1(smb_logp,"ReceiveTran2SetPathInfo type 0x%x", infoLevel);
***************
*** 3386,3392 ****
      int  readlock = 0;
      cm_req_t req;
  
!     cm_InitReq(&amp;req);
  
      fid = p-&gt;parmsp[0];
      fidp = smb_FindFID(vcp, fid, 0);
--- 3386,3392 ----
      int  readlock = 0;
      cm_req_t req;
  
!     smb_InitReq(&amp;req);
  
      fid = p-&gt;parmsp[0];
      fidp = smb_FindFID(vcp, fid, 0);
***************
*** 3529,3535 ****
      cm_scache_t *scp = NULL;
      cm_req_t req;
  
!     cm_InitReq(&amp;req);
  
      fid = p-&gt;parmsp[0];
      fidp = smb_FindFID(vcp, fid, 0);
--- 3529,3535 ----
      cm_scache_t *scp = NULL;
      cm_req_t req;
  
!     smb_InitReq(&amp;req);
  
      fid = p-&gt;parmsp[0];
      fidp = smb_FindFID(vcp, fid, 0);
***************
*** 3791,3797 ****
      int i, nbnLen, reqLen, refLen;
      int idx;
  
!     cm_InitReq(&amp;req);
  
      maxReferralLevel = p-&gt;parmsp[0];
  
--- 3791,3797 ----
      int i, nbnLen, reqLen, refLen;
      int idx;
  
!     smb_InitReq(&amp;req);
  
      maxReferralLevel = p-&gt;parmsp[0];
  
***************
*** 4283,4289 ****
      void * attrp = NULL;
      smb_tran2Find_t * fp;
  
!     cm_InitReq(&amp;req);
  
      eos = 0;
      osi_assertx(p-&gt;opcode == 1, "invalid opcode");
--- 4283,4289 ----
      void * attrp = NULL;
      smb_tran2Find_t * fp;
  
!     smb_InitReq(&amp;req);
  
      eos = 0;
      osi_assertx(p-&gt;opcode == 1, "invalid opcode");
***************
*** 4751,4757 ****
      char * s;
      smb_tran2Find_t * fp;
  
!     cm_InitReq(&amp;req);
  
      eos = 0;
      if (p-&gt;opcode == 1) {
--- 4751,4757 ----
      char * s;
      smb_tran2Find_t * fp;
  
!     smb_InitReq(&amp;req);
  
      eos = 0;
      if (p-&gt;opcode == 1) {
***************
*** 5535,5541 ****
      cm_req_t req;
      int created = 0;
  
!     cm_InitReq(&amp;req);
  
      scp = NULL;
          
--- 5535,5541 ----
      cm_req_t req;
      int created = 0;
  
!     smb_InitReq(&amp;req);
  
      scp = NULL;
          
***************
*** 5878,5884 ****
      cm_key_t key;
      unsigned int pid;
  
!     cm_InitReq(&amp;req);
  
      fid = smb_GetSMBParm(inp, 2);
      fid = smb_ChainFID(fid, inp);
--- 5878,5884 ----
      cm_key_t key;
      unsigned int pid;
  
!     smb_InitReq(&amp;req);
  
      fid = smb_GetSMBParm(inp, 2);
      fid = smb_ChainFID(fid, inp);
***************
*** 6164,6170 ****
      cm_req_t req;
      int readlock = 0;
  
!     cm_InitReq(&amp;req);
  
      fid = smb_GetSMBParm(inp, 0);
      fid = smb_ChainFID(fid, inp);
--- 6164,6170 ----
      cm_req_t req;
      int readlock = 0;
  
!     smb_InitReq(&amp;req);
  
      fid = smb_GetSMBParm(inp, 0);
      fid = smb_ChainFID(fid, inp);
***************
*** 6253,6259 ****
      cm_attr_t attrs;
      cm_req_t req;
  
!     cm_InitReq(&amp;req);
  
      fid = smb_GetSMBParm(inp, 0);
      fid = smb_ChainFID(fid, inp);
--- 6253,6259 ----
      cm_attr_t attrs;
      cm_req_t req;
  
!     smb_InitReq(&amp;req);
  
      fid = smb_GetSMBParm(inp, 0);
      fid = smb_ChainFID(fid, inp);
***************
*** 6642,6648 ****
      int created = 0;
      cm_lock_data_t *ldp = NULL;
  
!     cm_InitReq(&amp;req);
  
      /* This code is very long and has a lot of if-then-else clauses
       * scp and dscp get reused frequently and we need to ensure that 
--- 6642,6648 ----
      int created = 0;
      cm_lock_data_t *ldp = NULL;
  
!     smb_InitReq(&amp;req);
  
      /* This code is very long and has a lot of if-then-else clauses
       * scp and dscp get reused frequently and we need to ensure that 
***************
*** 7201,7207 ****
                  continue; /* the supplied path can't have consecutive slashes either , but */
  
              /* cp is the next component to be created. */
!             code = cm_MakeDir(tscp1, cp, 0, &amp;setAttr, userp, &amp;req);
              if (code == 0 &amp;&amp; (tscp1-&gt;flags &amp; CM_SCACHEFLAG_ANYWATCH))
                  smb_NotifyChange(FILE_ACTION_ADDED,
                                   FILE_NOTIFY_CHANGE_DIR_NAME,
--- 7201,7207 ----
                  continue; /* the supplied path can't have consecutive slashes either , but */
  
              /* cp is the next component to be created. */
!             code = cm_MakeDir(tscp1, cp, 0, &amp;setAttr, userp, &amp;req, NULL);
              if (code == 0 &amp;&amp; (tscp1-&gt;flags &amp; CM_SCACHEFLAG_ANYWATCH))
                  smb_NotifyChange(FILE_ACTION_ADDED,
                                   FILE_NOTIFY_CHANGE_DIR_NAME,
***************
*** 7488,7494 ****
      int created = 0;
      cm_lock_data_t *ldp = NULL;
  
!     cm_InitReq(&amp;req);
  
      foundscp = FALSE;
      scp = NULL;
--- 7488,7494 ----
      int created = 0;
      cm_lock_data_t *ldp = NULL;
  
!     smb_InitReq(&amp;req);
  
      foundscp = FALSE;
      scp = NULL;
***************
*** 7897,7903 ****
          openAction = 2;		/* created directory */
          setAttr.mask = CM_ATTRMASK_CLIENTMODTIME;
          setAttr.clientModTime = time(NULL);
!         code = cm_MakeDir(dscp, lastNamep, 0, &amp;setAttr, userp, &amp;req);
          if (code == 0 &amp;&amp; (dscp-&gt;flags &amp; CM_SCACHEFLAG_ANYWATCH))
              smb_NotifyChange(FILE_ACTION_ADDED,
                                FILE_NOTIFY_CHANGE_DIR_NAME,
--- 7897,7903 ----
          openAction = 2;		/* created directory */
          setAttr.mask = CM_ATTRMASK_CLIENTMODTIME;
          setAttr.clientModTime = time(NULL);
!         code = cm_MakeDir(dscp, lastNamep, 0, &amp;setAttr, userp, &amp;req, NULL);
          if (code == 0 &amp;&amp; (dscp-&gt;flags &amp; CM_SCACHEFLAG_ANYWATCH))
              smb_NotifyChange(FILE_ACTION_ADDED,
                                FILE_NOTIFY_CHANGE_DIR_NAME,
Index: openafs/src/WINNT/afsd/smb_ioctl.c
diff -c openafs/src/WINNT/afsd/smb_ioctl.c:1.25.2.13 openafs/src/WINNT/afsd/smb_ioctl.c:1.25.2.16
*** openafs/src/WINNT/afsd/smb_ioctl.c:1.25.2.13	Fri Jul 11 18:27:01 2008
--- openafs/src/WINNT/afsd/smb_ioctl.c	Sat Jul 26 22:48:11 2008
***************
*** 108,114 ****
      }
      if (prefix) {
          copyPrefix = cm_GetSpace();
!         StringCbCopy(copyPrefix-&gt;data, CM_UTILS_SPACESIZE, prefix-&gt;data);
          fidp-&gt;ioctlp-&gt;prefix = copyPrefix;
      }
      lock_ReleaseMutex(&amp;fidp-&gt;mx);
--- 108,114 ----
      }
      if (prefix) {
          copyPrefix = cm_GetSpace();
!         memcpy(copyPrefix-&gt;data, prefix-&gt;data, CM_UTILS_SPACESIZE);
          fidp-&gt;ioctlp-&gt;prefix = copyPrefix;
      }
      lock_ReleaseMutex(&amp;fidp-&gt;mx);
***************
*** 1086,1092 ****
      cm_ioctlQueryOptions_t *optionsp;
      afs_uint32 flags = 0;
  
!     cm_InitReq(&amp;req);
  
      optionsp = cm_IoctlGetQueryOptions(&amp;ioctlp-&gt;ioctl, userp);
      if (optionsp &amp;&amp; CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
--- 1086,1092 ----
      cm_ioctlQueryOptions_t *optionsp;
      afs_uint32 flags = 0;
  
!     smb_InitReq(&amp;req);
  
      optionsp = cm_IoctlGetQueryOptions(&amp;ioctlp-&gt;ioctl, userp);
      if (optionsp &amp;&amp; CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
***************
*** 1116,1139 ****
      cm_scache_t *scp;
      afs_int32 code;
      cm_req_t req;
-     cm_ioctlQueryOptions_t *optionsp;
      afs_uint32 flags = 0;
  
!     cm_InitReq(&amp;req);
! 
!     optionsp = cm_IoctlGetQueryOptions(&amp;ioctlp-&gt;ioctl, userp);
!     if (optionsp &amp;&amp; CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
!         flags |= (optionsp-&gt;literal ? CM_PARSE_FLAG_LITERAL : 0);
  
!     if (optionsp &amp;&amp; CM_IOCTL_QOPTS_HAVE_FID(optionsp)) {
!         cm_fid_t fid;
!         cm_SkipIoctlPath(&amp;ioctlp-&gt;ioctl);
!         cm_SetFid(&amp;fid, optionsp-&gt;fid.cell, optionsp-&gt;fid.volume, 
!                   optionsp-&gt;fid.vnode, optionsp-&gt;fid.unique);
!         code = cm_GetSCache(&amp;fid, &amp;scp, userp, &amp;req);
!     } else {
!         code = smb_ParseIoctlPath(ioctlp, userp, &amp;req, &amp;scp, flags);
!     }
      if (code) 
          return code;
  
--- 1116,1126 ----
      cm_scache_t *scp;
      afs_int32 code;
      cm_req_t req;
      afs_uint32 flags = 0;
  
!     smb_InitReq(&amp;req);
  
!     code = smb_ParseIoctlPath(ioctlp, userp, &amp;req, &amp;scp, flags);
      if (code) 
          return code;
  
***************
*** 1152,1158 ****
      cm_ioctlQueryOptions_t *optionsp;
      afs_uint32 flags = 0;
  
!     cm_InitReq(&amp;req);
  
      optionsp = cm_IoctlGetQueryOptions(&amp;ioctlp-&gt;ioctl, userp);
      if (optionsp &amp;&amp; CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
--- 1139,1145 ----
      cm_ioctlQueryOptions_t *optionsp;
      afs_uint32 flags = 0;
  
!     smb_InitReq(&amp;req);
  
      optionsp = cm_IoctlGetQueryOptions(&amp;ioctlp-&gt;ioctl, userp);
      if (optionsp &amp;&amp; CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
***************
*** 1182,1188 ****
  {
      cm_req_t req;
  
!     cm_InitReq(&amp;req);
  
      cm_SkipIoctlPath(&amp;ioctlp-&gt;ioctl);	/* we don't care about the path */
  
--- 1169,1175 ----
  {
      cm_req_t req;
  
!     smb_InitReq(&amp;req);
  
      cm_SkipIoctlPath(&amp;ioctlp-&gt;ioctl);	/* we don't care about the path */
  
***************
*** 1198,1204 ****
      cm_ioctlQueryOptions_t *optionsp;
      afs_uint32 flags = 0;
  
!     cm_InitReq(&amp;req);
  
      optionsp = cm_IoctlGetQueryOptions(&amp;ioctlp-&gt;ioctl, userp);
      if (optionsp &amp;&amp; CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
--- 1185,1191 ----
      cm_ioctlQueryOptions_t *optionsp;
      afs_uint32 flags = 0;
  
!     smb_InitReq(&amp;req);
  
      optionsp = cm_IoctlGetQueryOptions(&amp;ioctlp-&gt;ioctl, userp);
      if (optionsp &amp;&amp; CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
***************
*** 1232,1238 ****
      cm_ioctlQueryOptions_t *optionsp;
      afs_uint32 flags = 0;
  
!     cm_InitReq(&amp;req);
  
      optionsp = cm_IoctlGetQueryOptions(&amp;ioctlp-&gt;ioctl, userp);
      if (optionsp &amp;&amp; CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
--- 1219,1225 ----
      cm_ioctlQueryOptions_t *optionsp;
      afs_uint32 flags = 0;
  
!     smb_InitReq(&amp;req);
  
      optionsp = cm_IoctlGetQueryOptions(&amp;ioctlp-&gt;ioctl, userp);
      if (optionsp &amp;&amp; CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
***************
*** 1263,1269 ****
      cm_scache_t *scp;
      cm_req_t req;
  
!     cm_InitReq(&amp;req);
  
      code = smb_ParseIoctlPath(ioctlp, userp, &amp;req, &amp;scp, 0);
      if (code) return code;
--- 1250,1256 ----
      cm_scache_t *scp;
      cm_req_t req;
  
!     smb_InitReq(&amp;req);
  
      code = smb_ParseIoctlPath(ioctlp, userp, &amp;req, &amp;scp, 0);
      if (code) return code;
***************
*** 1283,1289 ****
      afs_uint32 flags = 0;
      cm_req_t req;
  
!     cm_InitReq(&amp;req);
  
      optionsp = cm_IoctlGetQueryOptions(&amp;ioctlp-&gt;ioctl, userp);
      if (optionsp &amp;&amp; CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
--- 1270,1276 ----
      afs_uint32 flags = 0;
      cm_req_t req;
  
!     smb_InitReq(&amp;req);
  
      optionsp = cm_IoctlGetQueryOptions(&amp;ioctlp-&gt;ioctl, userp);
      if (optionsp &amp;&amp; CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
***************
*** 1317,1323 ****
      cm_ioctlQueryOptions_t * optionsp;
      afs_uint32 flags = 0;
  
!     cm_InitReq(&amp;req);
  
      optionsp = cm_IoctlGetQueryOptions(&amp;ioctlp-&gt;ioctl, userp);
      if (optionsp &amp;&amp; CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
--- 1304,1310 ----
      cm_ioctlQueryOptions_t * optionsp;
      afs_uint32 flags = 0;
  
!     smb_InitReq(&amp;req);
  
      optionsp = cm_IoctlGetQueryOptions(&amp;ioctlp-&gt;ioctl, userp);
      if (optionsp &amp;&amp; CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
***************
*** 1343,1349 ****
      cm_ioctlQueryOptions_t * optionsp;
      afs_uint32 flags = 0;
  
!     cm_InitReq(&amp;req);
  
      optionsp = cm_IoctlGetQueryOptions(&amp;ioctlp-&gt;ioctl, userp);
      if (optionsp &amp;&amp; CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
--- 1330,1336 ----
      cm_ioctlQueryOptions_t * optionsp;
      afs_uint32 flags = 0;
  
!     smb_InitReq(&amp;req);
  
      optionsp = cm_IoctlGetQueryOptions(&amp;ioctlp-&gt;ioctl, userp);
      if (optionsp &amp;&amp; CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
***************
*** 1377,1383 ****
      cm_ioctlQueryOptions_t *optionsp;
      afs_uint32 flags = 0;
  
!     cm_InitReq(&amp;req);
  
      optionsp = cm_IoctlGetQueryOptions(&amp;ioctlp-&gt;ioctl, userp);
      if (optionsp &amp;&amp; CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
--- 1364,1370 ----
      cm_ioctlQueryOptions_t *optionsp;
      afs_uint32 flags = 0;
  
!     smb_InitReq(&amp;req);
  
      optionsp = cm_IoctlGetQueryOptions(&amp;ioctlp-&gt;ioctl, userp);
      if (optionsp &amp;&amp; CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
***************
*** 1411,1417 ****
      cm_ioctlQueryOptions_t *optionsp;
      afs_uint32 flags = 0;
  
!     cm_InitReq(&amp;req);
  
      optionsp = cm_IoctlGetQueryOptions(&amp;ioctlp-&gt;ioctl, userp);
      if (optionsp &amp;&amp; CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
--- 1398,1404 ----
      cm_ioctlQueryOptions_t *optionsp;
      afs_uint32 flags = 0;
  
!     smb_InitReq(&amp;req);
  
      optionsp = cm_IoctlGetQueryOptions(&amp;ioctlp-&gt;ioctl, userp);
      if (optionsp &amp;&amp; CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
***************
*** 1444,1450 ****
      cm_scache_t *dscp;
      cm_req_t req;
  
!     cm_InitReq(&amp;req);
  
      code = smb_ParseIoctlPath(ioctlp, userp, &amp;req, &amp;dscp, 0);
      if (code)
--- 1431,1437 ----
      cm_scache_t *dscp;
      cm_req_t req;
  
!     smb_InitReq(&amp;req);
  
      code = smb_ParseIoctlPath(ioctlp, userp, &amp;req, &amp;dscp, 0);
      if (code)
***************
*** 1464,1470 ****
      cm_scache_t *dscp;
      cm_req_t req;
  
!     cm_InitReq(&amp;req);
  
      code = smb_ParseIoctlPath(ioctlp, userp, &amp;req, &amp;dscp, 0);
      if (code) 
--- 1451,1457 ----
      cm_scache_t *dscp;
      cm_req_t req;
  
!     smb_InitReq(&amp;req);
  
      code = smb_ParseIoctlPath(ioctlp, userp, &amp;req, &amp;dscp, 0);
      if (code) 
***************
*** 1605,1611 ****
      clientchar_t leaf[LEAF_SIZE];
      cm_req_t req;
  
!     cm_InitReq(&amp;req);
          
      code = smb_ParseIoctlParent(ioctlp, userp, &amp;req, &amp;dscp, leaf);
      if (code)
--- 1592,1598 ----
      clientchar_t leaf[LEAF_SIZE];
      cm_req_t req;
  
!     smb_InitReq(&amp;req);
          
      code = smb_ParseIoctlParent(ioctlp, userp, &amp;req, &amp;dscp, leaf);
      if (code)
***************
*** 1625,1631 ****
      clientchar_t leaf[LEAF_SIZE];
      cm_req_t req;
  
!     cm_InitReq(&amp;req);
  
      code = smb_ParseIoctlParent(ioctlp, userp, &amp;req, &amp;dscp, leaf);
      if (code) return code;
--- 1612,1618 ----
      clientchar_t leaf[LEAF_SIZE];
      cm_req_t req;
  
!     smb_InitReq(&amp;req);
  
      code = smb_ParseIoctlParent(ioctlp, userp, &amp;req, &amp;dscp, leaf);
      if (code) return code;
***************
*** 1644,1650 ****
      cm_scache_t *dscp;
      cm_req_t req;
  
!     cm_InitReq(&amp;req);
  
      code = smb_ParseIoctlPath(ioctlp, userp, &amp;req, &amp;dscp, 0);
      if (code) return code;
--- 1631,1637 ----
      cm_scache_t *dscp;
      cm_req_t req;
  
!     smb_InitReq(&amp;req);
  
      code = smb_ParseIoctlPath(ioctlp, userp, &amp;req, &amp;dscp, 0);
      if (code) return code;
***************
*** 1662,1668 ****
      cm_scache_t *dscp;
      cm_req_t req;
  
!     cm_InitReq(&amp;req);
  
      code = smb_ParseIoctlPath(ioctlp, userp, &amp;req, &amp;dscp, 0);
      if (code) return code;
--- 1649,1655 ----
      cm_scache_t *dscp;
      cm_req_t req;
  
!     smb_InitReq(&amp;req);
  
      code = smb_ParseIoctlPath(ioctlp, userp, &amp;req, &amp;dscp, 0);
      if (code) return code;
***************
*** 1681,1687 ****
      cm_scache_t *dscp;
      cm_req_t req;
  
!     cm_InitReq(&amp;req);
  
      code = smb_ParseIoctlPath(ioctlp, userp, &amp;req, &amp;dscp, 0);
      if (code) return code;
--- 1668,1674 ----
      cm_scache_t *dscp;
      cm_req_t req;
  
!     smb_InitReq(&amp;req);
  
      code = smb_ParseIoctlPath(ioctlp, userp, &amp;req, &amp;dscp, 0);
      if (code) return code;
***************
*** 1803,1809 ****
      cm_ioctlQueryOptions_t *optionsp;
      afs_uint32 flags = 0;
  
!     cm_InitReq(&amp;req);
  
      optionsp = cm_IoctlGetQueryOptions(&amp;ioctlp-&gt;ioctl, userp);
      if (optionsp &amp;&amp; CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
--- 1790,1796 ----
      cm_ioctlQueryOptions_t *optionsp;
      afs_uint32 flags = 0;
  
!     smb_InitReq(&amp;req);
  
      optionsp = cm_IoctlGetQueryOptions(&amp;ioctlp-&gt;ioctl, userp);
      if (optionsp &amp;&amp; CM_IOCTL_QOPTS_HAVE_LITERAL(optionsp))
***************
*** 1831,1837 ****
  {
      cm_req_t req;
  
!     cm_InitReq(&amp;req);
  
      cm_SkipIoctlPath(&amp;ioctlp-&gt;ioctl);
  
--- 1818,1824 ----
  {
      cm_req_t req;
  
!     smb_InitReq(&amp;req);
  
      cm_SkipIoctlPath(&amp;ioctlp-&gt;ioctl);
  
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/index.htm
diff -c openafs/src/WINNT/doc/install/Documentation/en_US/html/index.htm:1.5.4.35 openafs/src/WINNT/doc/install/Documentation/en_US/html/index.htm:1.5.4.36
*** openafs/src/WINNT/doc/install/Documentation/en_US/html/index.htm:1.5.4.35	Wed Jul 16 01:34:53 2008
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/index.htm	Fri Jul 25 15:59:31 2008
***************
*** 57,63 ****
  
  &lt;h1&gt;OpenAFS for Windows&lt;/h1&gt;
  
! &lt;h2&gt;Version 1.5.50&lt;/h2&gt;
  
  &lt;p class=MsoNormal&gt;&amp;nbsp; &lt;/p&gt;
  
--- 57,63 ----
  
  &lt;h1&gt;OpenAFS for Windows&lt;/h1&gt;
  
! &lt;h2&gt;Version 1.5.51&lt;/h2&gt;
  
  &lt;p class=MsoNormal&gt;&amp;nbsp; &lt;/p&gt;
  
***************
*** 78,84 ****
  &lt;span
  style='font-family:Symbol'&gt;·&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
  &lt;/span&gt;&lt;/span&gt;&lt;a
! href="ReleaseNotes/relnotes-frames.htm"&gt;OpenAFS for Windows 1.5.50
  Release Notes&lt;/a&gt;&lt;/p&gt;
  
  &lt;p style='margin-left:36.0pt;text-indent:-18.0pt;'&gt;
--- 78,84 ----
  &lt;span
  style='font-family:Symbol'&gt;·&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
  &lt;/span&gt;&lt;/span&gt;&lt;a
! href="ReleaseNotes/relnotes-frames.htm"&gt;OpenAFS for Windows 1.5.51
  Release Notes&lt;/a&gt;&lt;/p&gt;
  
  &lt;p style='margin-left:36.0pt;text-indent:-18.0pt;'&gt;
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm
diff -c openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm:1.1.6.33 openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm:1.1.6.34
*** openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm:1.1.6.33	Wed Jul 16 01:34:56 2008
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm	Fri Jul 25 15:59:35 2008
***************
*** 18,24 ****
  .shape {behavior:url(#default#VML);}
  &lt;/style&gt;
  &lt;![endif]--&gt;
! &lt;title&gt;OpenAFS for Windows 1.5.50 Release Notes&lt;/title&gt;
  &lt;!--[if gte mso 9]&gt;&lt;xml&gt;
   &lt;o:DocumentProperties&gt;
    &lt;o:Revision&gt;1&lt;/o:Revision&gt;
--- 18,24 ----
  .shape {behavior:url(#default#VML);}
  &lt;/style&gt;
  &lt;![endif]--&gt;
! &lt;title&gt;OpenAFS for Windows 1.5.51 Release Notes&lt;/title&gt;
  &lt;!--[if gte mso 9]&gt;&lt;xml&gt;
   &lt;o:DocumentProperties&gt;
    &lt;o:Revision&gt;1&lt;/o:Revision&gt;
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes-frames.htm
diff -c openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes-frames.htm:1.1.4.35 openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes-frames.htm:1.1.4.36
*** openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes-frames.htm:1.1.4.35	Wed Jul 16 01:34:56 2008
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes-frames.htm	Fri Jul 25 15:59:35 2008
***************
*** 8,14 ****
  &lt;meta name=Generator content="Microsoft Word 11"&gt;
  &lt;meta name=Originator content="Microsoft Word 11"&gt;
  &lt;link rel=File-List href="relnotes-frames_files/filelist.xml"&gt;
! &lt;title&gt;OpenAFS for Windows 1.5.50 Release Notes&lt;/title&gt;
  &lt;!--[if gte mso 9]&gt;&lt;xml&gt;
   &lt;w:WordDocument&gt;
    &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
--- 8,14 ----
  &lt;meta name=Generator content="Microsoft Word 11"&gt;
  &lt;meta name=Originator content="Microsoft Word 11"&gt;
  &lt;link rel=File-List href="relnotes-frames_files/filelist.xml"&gt;
! &lt;title&gt;OpenAFS for Windows 1.5.51 Release Notes&lt;/title&gt;
  &lt;!--[if gte mso 9]&gt;&lt;xml&gt;
   &lt;w:WordDocument&gt;
    &lt;w:Zoom&gt;0&lt;/w:Zoom&gt;
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes.htm
diff -c openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes.htm:1.6.4.40 openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes.htm:1.6.4.41
*** openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes.htm:1.6.4.40	Wed Jul 16 01:34:56 2008
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes.htm	Fri Jul 25 15:59:35 2008
***************
*** 21,27 ****
  .shape {behavior:url(#default#VML);}
  &lt;/style&gt;
  &lt;![endif]--&gt;
! &lt;title&gt;OpenAFS for Windows 1.5.50 Release Notes&lt;/title&gt;
  &lt;o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
   name="PostalCode"/&gt;
  &lt;o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
--- 21,27 ----
  .shape {behavior:url(#default#VML);}
  &lt;/style&gt;
  &lt;![endif]--&gt;
! &lt;title&gt;OpenAFS for Windows 1.5.51 Release Notes&lt;/title&gt;
  &lt;o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
   name="PostalCode"/&gt;
  &lt;o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
***************
*** 1380,1386 ****
  
  &lt;div class=Section1&gt;
  
! &lt;p class=MsoTitle&gt;OpenAFS for Windows 1.5.50 (with Unicode Support)&lt;br&gt;
  Release Notes&lt;/p&gt;
  
  &lt;p class=MsoBodyText&gt;The Andrew File System (AFS) is a location-independent
--- 1380,1386 ----
  
  &lt;div class=Section1&gt;
  
! &lt;p class=MsoTitle&gt;OpenAFS for Windows 1.5.51 (with Unicode Support)&lt;br&gt;
  Release Notes&lt;/p&gt;
  
  &lt;p class=MsoBodyText&gt;The Andrew File System (AFS) is a location-independent
Index: openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm
diff -c openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm:1.2.6.34 openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm:1.2.6.35
*** openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm:1.2.6.34	Wed Jul 16 01:34:58 2008
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm	Fri Jul 25 15:59:37 2008
***************
*** 11,17 ****
  &lt;meta name=Originator content="Microsoft Word 11"&gt;
  &lt;base target=body&gt;
  &lt;link rel=File-List href="toc_files/filelist.xml"&gt;
! &lt;title&gt;OpenAFS for Windows 1.5.50 Table of Contents&lt;/title&gt;
  &lt;!--[if gte mso 9]&gt;&lt;xml&gt;
   &lt;o:DocumentProperties&gt;
    &lt;o:Author&gt;Jeffrey Altman&lt;/o:Author&gt;
--- 11,17 ----
  &lt;meta name=Originator content="Microsoft Word 11"&gt;
  &lt;base target=body&gt;
  &lt;link rel=File-List href="toc_files/filelist.xml"&gt;
! &lt;title&gt;OpenAFS for Windows 1.5.51 Table of Contents&lt;/title&gt;
  &lt;!--[if gte mso 9]&gt;&lt;xml&gt;
   &lt;o:DocumentProperties&gt;
    &lt;o:Author&gt;Jeffrey Altman&lt;/o:Author&gt;
Index: openafs/src/WINNT/install/NSIS/NTMakefile
diff -c openafs/src/WINNT/install/NSIS/NTMakefile:1.18.4.7 openafs/src/WINNT/install/NSIS/NTMakefile:1.18.4.8
*** openafs/src/WINNT/install/NSIS/NTMakefile:1.18.4.7	Tue Jul 15 19:59:33 2008
--- openafs/src/WINNT/install/NSIS/NTMakefile	Fri Jul 25 15:45:32 2008
***************
*** 47,66 ****
  
  !IF ("$(AFSDEV_BUILDTYPE)"=="FREE")
  !IF ("$(CPU)" == "i386")
! ARCH=x86
  !ELSE IF ("$(CPU)" == "amd64")
! ARCH=x64
  !ELSE
! ARCH=$(CPU)
  !ENDIF
  !ELSE
  !IF ("$(CPU)" == "i386")
! ARCH=Intel
  !ELSE IF ("$(CPU)" == "amd64")
! ARCH=x64
  !ELSE
! ARCH=$(CPU)
  !ENDIF
  !ENDIF
  
  !IF ("$(CPU)" == "i386")
--- 47,68 ----
  
  !IF ("$(AFSDEV_BUILDTYPE)"=="FREE")
  !IF ("$(CPU)" == "i386")
! MSI_PLATFORM=Intel
  !ELSE IF ("$(CPU)" == "amd64")
! MSI_PLATFORM=x64
  !ELSE
! MSI_PLATFORM=$(CPU)
  !ENDIF
+ MSI_CONFIG=Retail
  !ELSE
  !IF ("$(CPU)" == "i386")
! MSI_PLATFORM=Intel
  !ELSE IF ("$(CPU)" == "amd64")
! MSI_PLATFORM=x64
  !ELSE
! MSI_PLATFORM=$(CPU)
  !ENDIF
+ MSI_CONFIG=Debug
  !ENDIF
  
  !IF ("$(CPU)" == "i386")
***************
*** 79,85 ****
  	$(CODESIGN_USERLAND)
  
  $(OUT)\vcruntime.wixobj: vcruntime.wxs
! 	candle -out $@ $** -dPlatform=$(ARCH) -dConfig=Debug -dVCVer=$(AFSVER_CL)
  
  !else
  MSVCMSI=
--- 81,87 ----
  	$(CODESIGN_USERLAND)
  
  $(OUT)\vcruntime.wixobj: vcruntime.wxs
! 	candle -out $@ $** -dPlatform=$(MSI_PLATFORM) -dConfig=$(MSI_CONFIG) -dVCVer=$(AFSVER_CL)
  
  !else
  MSVCMSI=
Index: openafs/src/afs/afs_prototypes.h
diff -c openafs/src/afs/afs_prototypes.h:1.74.2.16 openafs/src/afs/afs_prototypes.h:1.74.2.17
*** openafs/src/afs/afs_prototypes.h:1.74.2.16	Fri May 23 10:25:16 2008
--- openafs/src/afs/afs_prototypes.h	Fri Jul 18 10:54:34 2008
***************
*** 268,274 ****
  extern int afs_WriteDCache(register struct dcache *adc, int atime);
  extern int afs_wakeup(register struct vcache *avc);
  extern int afs_InitCacheFile(char *afile, ino_t ainode);
! extern int afs_DCacheHasAllChunks(struct vcache *avc);
  
  /* afs_disconnected.c */
  
--- 268,274 ----
  extern int afs_WriteDCache(register struct dcache *adc, int atime);
  extern int afs_wakeup(register struct vcache *avc);
  extern int afs_InitCacheFile(char *afile, ino_t ainode);
! extern int afs_DCacheMissingChunks(struct vcache *avc);
  
  /* afs_disconnected.c */
  
Index: openafs/src/auth/cellconfig.p.h
diff -c openafs/src/auth/cellconfig.p.h:1.11.14.2 openafs/src/auth/cellconfig.p.h:1.11.14.3
*** openafs/src/auth/cellconfig.p.h:1.11.14.2	Fri Nov  2 13:45:14 2007
--- openafs/src/auth/cellconfig.p.h	Sat Jul 19 01:47:17 2008
***************
*** 124,129 ****
--- 124,130 ----
  extern int afsconf_IntGetKeys(struct afsconf_dir *adir);
  extern int afsconf_GetKeys(struct afsconf_dir *adir,
  			   struct afsconf_keys *astr);
+ struct ktc_encryptionKey;
  extern afs_int32 afsconf_GetLatestKey(struct afsconf_dir *adir,
  				      afs_int32 * avno, 
  				      struct ktc_encryptionKey *akey);
Index: openafs/src/budb/db_dump.c
diff -c openafs/src/budb/db_dump.c:1.7.14.3 openafs/src/budb/db_dump.c:1.7.14.4
*** openafs/src/budb/db_dump.c:1.7.14.3	Wed Apr  2 15:51:55 2008
--- openafs/src/budb/db_dump.c	Sat Jul 19 02:15:01 2008
***************
*** 16,22 ****
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/budb/db_dump.c,v 1.7.14.3 2008/04/02 19:51:55 shadow Exp $");
  
  #ifdef AFS_NT40_ENV
  #include &lt;winsock2.h&gt;
--- 16,22 ----
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/budb/db_dump.c,v 1.7.14.4 2008/07/19 06:15:01 rra Exp $");
  
  #ifdef AFS_NT40_ENV
  #include &lt;winsock2.h&gt;
***************
*** 73,79 ****
      while (dumpSyncPtr-&gt;ds_bytes &gt; 0) {
  	if (dumpSyncPtr-&gt;ds_readerStatus == DS_WAITING) {
  	    dumpSyncPtr-&gt;ds_readerStatus = 0;
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	    assert(pthread_cond_broadcast(&amp;dumpSyncPtr-&gt;ds_readerStatus_cond) == 0);
  #else
  	    code = LWP_SignalProcess(&amp;dumpSyncPtr-&gt;ds_readerStatus);
--- 73,79 ----
      while (dumpSyncPtr-&gt;ds_bytes &gt; 0) {
  	if (dumpSyncPtr-&gt;ds_readerStatus == DS_WAITING) {
  	    dumpSyncPtr-&gt;ds_readerStatus = 0;
! #ifdef AFS_PTHREAD_ENV
  	    assert(pthread_cond_broadcast(&amp;dumpSyncPtr-&gt;ds_readerStatus_cond) == 0);
  #else
  	    code = LWP_SignalProcess(&amp;dumpSyncPtr-&gt;ds_readerStatus);
***************
*** 83,89 ****
  	}
  	dumpSyncPtr-&gt;ds_writerStatus = DS_WAITING;
  	ReleaseWriteLock(&amp;dumpSyncPtr-&gt;ds_lock);
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	assert(pthread_mutex_lock(&amp;dumpSyncPtr-&gt;ds_writerStatus_mutex) == 0);
  	assert(pthread_cond_wait(&amp;dumpSyncPtr-&gt;ds_writerStatus_cond, &amp;dumpSyncPtr-&gt;ds_writerStatus_mutex) == 0);
  	assert(pthread_mutex_unlock(&amp;dumpSyncPtr-&gt;ds_writerStatus_mutex) == 0);
--- 83,89 ----
  	}
  	dumpSyncPtr-&gt;ds_writerStatus = DS_WAITING;
  	ReleaseWriteLock(&amp;dumpSyncPtr-&gt;ds_lock);
! #ifdef AFS_PTHREAD_ENV
  	assert(pthread_mutex_lock(&amp;dumpSyncPtr-&gt;ds_writerStatus_mutex) == 0);
  	assert(pthread_cond_wait(&amp;dumpSyncPtr-&gt;ds_writerStatus_cond, &amp;dumpSyncPtr-&gt;ds_writerStatus_mutex) == 0);
  	assert(pthread_mutex_unlock(&amp;dumpSyncPtr-&gt;ds_writerStatus_mutex) == 0);
***************
*** 113,119 ****
      dumpSyncPtr-&gt;ds_bytes += nbytes;
      if (dumpSyncPtr-&gt;ds_readerStatus == DS_WAITING) {
  	dumpSyncPtr-&gt;ds_readerStatus = 0;
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	assert(pthread_cond_broadcast(&amp;dumpSyncPtr-&gt;ds_readerStatus_cond) == 0);
  #else
  	code = LWP_SignalProcess(&amp;dumpSyncPtr-&gt;ds_readerStatus);
--- 113,119 ----
      dumpSyncPtr-&gt;ds_bytes += nbytes;
      if (dumpSyncPtr-&gt;ds_readerStatus == DS_WAITING) {
  	dumpSyncPtr-&gt;ds_readerStatus = 0;
! #ifdef AFS_PTHREAD_ENV
  	assert(pthread_cond_broadcast(&amp;dumpSyncPtr-&gt;ds_readerStatus_cond) == 0);
  #else
  	code = LWP_SignalProcess(&amp;dumpSyncPtr-&gt;ds_readerStatus);
***************
*** 141,147 ****
  	LogDebug(4, "doneWriting: waiting for Reader\n");
  	dumpSyncPtr-&gt;ds_writerStatus = DS_WAITING;
  	ReleaseWriteLock(&amp;dumpSyncPtr-&gt;ds_lock);
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	assert(pthread_mutex_lock(&amp;dumpSyncPtr-&gt;ds_writerStatus_mutex) == 0);
  	assert(pthread_cond_wait(&amp;dumpSyncPtr-&gt;ds_writerStatus_cond, &amp;dumpSyncPtr-&gt;ds_writerStatus_mutex) == 0);
  	assert(pthread_mutex_unlock(&amp;dumpSyncPtr-&gt;ds_writerStatus_mutex) == 0);
--- 141,147 ----
  	LogDebug(4, "doneWriting: waiting for Reader\n");
  	dumpSyncPtr-&gt;ds_writerStatus = DS_WAITING;
  	ReleaseWriteLock(&amp;dumpSyncPtr-&gt;ds_lock);
! #ifdef AFS_PTHREAD_ENV
  	assert(pthread_mutex_lock(&amp;dumpSyncPtr-&gt;ds_writerStatus_mutex) == 0);
  	assert(pthread_cond_wait(&amp;dumpSyncPtr-&gt;ds_writerStatus_cond, &amp;dumpSyncPtr-&gt;ds_writerStatus_mutex) == 0);
  	assert(pthread_mutex_unlock(&amp;dumpSyncPtr-&gt;ds_writerStatus_mutex) == 0);
***************
*** 159,165 ****
      else
  	dumpSyncPtr-&gt;ds_writerStatus = DS_DONE;
      dumpSyncPtr-&gt;ds_readerStatus = 0;
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
      assert(pthread_cond_broadcast(&amp;dumpSyncPtr-&gt;ds_readerStatus_cond) == 0);
  #else
      code = LWP_NoYieldSignal(&amp;dumpSyncPtr-&gt;ds_readerStatus);
--- 159,165 ----
      else
  	dumpSyncPtr-&gt;ds_writerStatus = DS_DONE;
      dumpSyncPtr-&gt;ds_readerStatus = 0;
! #ifdef AFS_PTHREAD_ENV
      assert(pthread_cond_broadcast(&amp;dumpSyncPtr-&gt;ds_readerStatus_cond) == 0);
  #else
      code = LWP_NoYieldSignal(&amp;dumpSyncPtr-&gt;ds_readerStatus);
Index: openafs/src/budb/dbs_dump.c
diff -c openafs/src/budb/dbs_dump.c:1.11.14.3 openafs/src/budb/dbs_dump.c:1.11.14.4
*** openafs/src/budb/dbs_dump.c:1.11.14.3	Wed Apr  2 15:51:55 2008
--- openafs/src/budb/dbs_dump.c	Sat Jul 19 02:15:01 2008
***************
*** 11,17 ****
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/budb/dbs_dump.c,v 1.11.14.3 2008/04/02 19:51:55 shadow Exp $");
  
  #ifdef AFS_NT40_ENV
  #include &lt;winsock2.h&gt;
--- 11,17 ----
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/budb/dbs_dump.c,v 1.11.14.4 2008/07/19 06:15:01 rra Exp $");
  
  #ifdef AFS_NT40_ENV
  #include &lt;winsock2.h&gt;
***************
*** 115,125 ****
       charListT *charListPtr;
       afs_int32 *done;
  {
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
      pthread_t dumperPid, watcherPid;
      pthread_attr_t dumperPid_tattr;
      pthread_attr_t watcherPid_tattr;
- 
  #else
      PROCESS dumperPid, watcherPid;
  #endif
--- 115,124 ----
       charListT *charListPtr;
       afs_int32 *done;
  {
! #ifdef AFS_PTHREAD_ENV
      pthread_t dumperPid, watcherPid;
      pthread_attr_t dumperPid_tattr;
      pthread_attr_t watcherPid_tattr;
  #else
      PROCESS dumperPid, watcherPid;
  #endif
***************
*** 162,168 ****
  	if (code)
  	    ERROR(errno);
  
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	/* Initialize the condition variables and the mutexes we use
  	 * to signal and synchronize the reader and writer threads.
  	 */
--- 161,167 ----
  	if (code)
  	    ERROR(errno);
  
! #ifdef AFS_PTHREAD_ENV
  	/* Initialize the condition variables and the mutexes we use
  	 * to signal and synchronize the reader and writer threads.
  	 */
***************
*** 189,195 ****
  	dumpSyncPtr-&gt;dumperPid = dumperPid;
  	dumpSyncPtr-&gt;timeToLive = time(0) + DUMP_TTL_INC;
  
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	/* Initialize the thread attributes and launch the thread */
  
  	assert(pthread_attr_init(&amp;watcherPid_tattr) == 0);
--- 188,194 ----
  	dumpSyncPtr-&gt;dumperPid = dumperPid;
  	dumpSyncPtr-&gt;timeToLive = time(0) + DUMP_TTL_INC;
  
! #ifdef AFS_PTHREAD_ENV
  	/* Initialize the thread attributes and launch the thread */
  
  	assert(pthread_attr_init(&amp;watcherPid_tattr) == 0);
***************
*** 217,223 ****
  	if (dumpSyncPtr-&gt;ds_writerStatus == DS_WAITING) {
  	    LogDebug(6, "wakup writer\n");
  	    dumpSyncPtr-&gt;ds_writerStatus = 0;
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	    assert(pthread_cond_broadcast(&amp;dumpSyncPtr-&gt;ds_writerStatus_cond) == 0);
  #else
  	    code = LWP_SignalProcess(&amp;dumpSyncPtr-&gt;ds_writerStatus);
--- 216,222 ----
  	if (dumpSyncPtr-&gt;ds_writerStatus == DS_WAITING) {
  	    LogDebug(6, "wakup writer\n");
  	    dumpSyncPtr-&gt;ds_writerStatus = 0;
! #ifdef AFS_PTHREAD_ENV
  	    assert(pthread_cond_broadcast(&amp;dumpSyncPtr-&gt;ds_writerStatus_cond) == 0);
  #else
  	    code = LWP_SignalProcess(&amp;dumpSyncPtr-&gt;ds_writerStatus);
***************
*** 228,234 ****
  	LogDebug(6, "wait for writer\n");
  	dumpSyncPtr-&gt;ds_readerStatus = DS_WAITING;
  	ReleaseWriteLock(&amp;dumpSyncPtr-&gt;ds_lock);
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
          assert(pthread_mutex_lock(&amp;dumpSyncPtr-&gt;ds_readerStatus_mutex) == 0);
          assert(pthread_cond_wait(&amp;dumpSyncPtr-&gt;ds_readerStatus_cond, &amp;dumpSyncPtr-&gt;ds_readerStatus_mutex) == 0);
          assert(pthread_mutex_unlock(&amp;dumpSyncPtr-&gt;ds_readerStatus_mutex) == 0);
--- 227,233 ----
  	LogDebug(6, "wait for writer\n");
  	dumpSyncPtr-&gt;ds_readerStatus = DS_WAITING;
  	ReleaseWriteLock(&amp;dumpSyncPtr-&gt;ds_lock);
! #ifdef AFS_PTHREAD_ENV
          assert(pthread_mutex_lock(&amp;dumpSyncPtr-&gt;ds_readerStatus_mutex) == 0);
          assert(pthread_cond_wait(&amp;dumpSyncPtr-&gt;ds_readerStatus_cond, &amp;dumpSyncPtr-&gt;ds_readerStatus_mutex) == 0);
          assert(pthread_mutex_unlock(&amp;dumpSyncPtr-&gt;ds_readerStatus_mutex) == 0);
***************
*** 259,265 ****
      dumpSyncPtr-&gt;ds_bytes -= readSize;
      if (dumpSyncPtr-&gt;ds_writerStatus == DS_WAITING) {
  	dumpSyncPtr-&gt;ds_writerStatus = 0;
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	assert(pthread_cond_broadcast(&amp;dumpSyncPtr-&gt;ds_writerStatus_cond) == 0);
  #else
  	code = LWP_SignalProcess(&amp;dumpSyncPtr-&gt;ds_writerStatus);
--- 258,264 ----
      dumpSyncPtr-&gt;ds_bytes -= readSize;
      if (dumpSyncPtr-&gt;ds_writerStatus == DS_WAITING) {
  	dumpSyncPtr-&gt;ds_writerStatus = 0;
! #ifdef AFS_PTHREAD_ENV
  	assert(pthread_cond_broadcast(&amp;dumpSyncPtr-&gt;ds_writerStatus_cond) == 0);
  #else
  	code = LWP_SignalProcess(&amp;dumpSyncPtr-&gt;ds_writerStatus);
***************
*** 359,365 ****
  
  	    close(dumpSyncPtr-&gt;pipeFid[0]);
  	    close(dumpSyncPtr-&gt;pipeFid[1]);
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	    assert(pthread_cancel(dumpSyncPtr-&gt;dumperPid) == 0);
  #else
  	    code = LWP_DestroyProcess(dumpSyncPtr-&gt;dumperPid);
--- 358,364 ----
  
  	    close(dumpSyncPtr-&gt;pipeFid[0]);
  	    close(dumpSyncPtr-&gt;pipeFid[1]);
! #ifdef AFS_PTHREAD_ENV
  	    assert(pthread_cancel(dumpSyncPtr-&gt;dumperPid) == 0);
  #else
  	    code = LWP_DestroyProcess(dumpSyncPtr-&gt;dumperPid);
***************
*** 378,384 ****
  	}
  	/*i */
  	ReleaseWriteLock(&amp;dumpSyncPtr-&gt;ds_lock);
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	sleep(5);
  #else
  	IOMGR_Sleep(5);
--- 377,383 ----
  	}
  	/*i */
  	ReleaseWriteLock(&amp;dumpSyncPtr-&gt;ds_lock);
! #ifdef AFS_PTHREAD_ENV
  	sleep(5);
  #else
  	IOMGR_Sleep(5);
Index: openafs/src/budb/globals.h
diff -c openafs/src/budb/globals.h:1.3.14.1 openafs/src/budb/globals.h:1.3.14.2
*** openafs/src/budb/globals.h:1.3.14.1	Wed Apr  2 15:51:55 2008
--- openafs/src/budb/globals.h	Sat Jul 19 02:15:01 2008
***************
*** 61,67 ****
      struct Lock ds_lock;	/* for this struct. */
      afs_int32 statusFlags;	/* 0, or 1 for dump in progress */
      int pipeFid[2];		/* pipe between threads */
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
      pthread_mutex_t ds_writerStatus_mutex;
      pthread_mutex_t ds_readerStatus_mutex;
      pthread_cond_t ds_writerStatus_cond;
--- 61,67 ----
      struct Lock ds_lock;	/* for this struct. */
      afs_int32 statusFlags;	/* 0, or 1 for dump in progress */
      int pipeFid[2];		/* pipe between threads */
! #ifdef AFS_PTHREAD_ENV
      pthread_mutex_t ds_writerStatus_mutex;
      pthread_mutex_t ds_readerStatus_mutex;
      pthread_cond_t ds_writerStatus_cond;
Index: openafs/src/budb/procs.c
diff -c openafs/src/budb/procs.c:1.14.14.2 openafs/src/budb/procs.c:1.14.14.3
*** openafs/src/budb/procs.c:1.14.14.2	Wed Apr  2 15:51:55 2008
--- openafs/src/budb/procs.c	Sat Jul 19 02:15:01 2008
***************
*** 17,23 ****
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/budb/procs.c,v 1.14.14.2 2008/04/02 19:51:55 shadow Exp $");
  
  #ifdef AFS_NT40_ENV
  #include &lt;winsock2.h&gt;
--- 17,23 ----
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/budb/procs.c,v 1.14.14.3 2008/07/19 06:15:01 rra Exp $");
  
  #ifdef AFS_NT40_ENV
  #include &lt;winsock2.h&gt;
***************
*** 110,116 ****
  	    start = time(0);
  	else if (time(0) - start &gt; 5)
  	    return UNOQUORUM;
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	sleep(1);
  #else
  	IOMGR_Sleep(1);
--- 110,116 ----
  	    start = time(0);
  	else if (time(0) - start &gt; 5)
  	    return UNOQUORUM;
! #ifdef AFS_PTHREAD_ENV
  	sleep(1);
  #else
  	IOMGR_Sleep(1);
***************
*** 204,210 ****
  		Log("Waiting for quorum election\n");
  	    if (wait &lt; 15.0)
  		wait *= 1.1;
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	    sleep((int)wait);
  #else
  	    IOMGR_Sleep((int)wait);
--- 204,210 ----
  		Log("Waiting for quorum election\n");
  	    if (wait &lt; 15.0)
  		wait *= 1.1;
! #ifdef AFS_PTHREAD_ENV
  	    sleep((int)wait);
  #else
  	    IOMGR_Sleep((int)wait);
***************
*** 1477,1483 ****
  	    }
  
  	    /* dump id is in use - wait a while */
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	    sleep(1);
  #else
  	    IOMGR_Sleep(1);
--- 1477,1483 ----
  	    }
  
  	    /* dump id is in use - wait a while */
! #ifdef AFS_PTHREAD_ENV
  	    sleep(1);
  #else
  	    IOMGR_Sleep(1);
Index: openafs/src/cf/osconf.m4
diff -c openafs/src/cf/osconf.m4:1.83.2.10 openafs/src/cf/osconf.m4:1.83.2.11
*** openafs/src/cf/osconf.m4:1.83.2.10	Fri Jul 11 05:50:53 2008
--- openafs/src/cf/osconf.m4	Sat Jul 19 02:15:02 2008
***************
*** 42,48 ****
  		LEX="lex"
  		CSTATIC="-non_shared"
  		DBG="-g3"
! 		MT_CFLAGS='-D_REENTRANT=1 -pthread -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-pthread -lpthread -lmach -lexc -lc"
  		TXLIBS="-lcurses"
  		XCFLAGS="-D_NO_PROTO -DOSF"
--- 42,48 ----
  		LEX="lex"
  		CSTATIC="-non_shared"
  		DBG="-g3"
! 		MT_CFLAGS='-D_REENTRANT=1 -pthread -DAFS_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-pthread -lpthread -lmach -lexc -lc"
  		TXLIBS="-lcurses"
  		XCFLAGS="-D_NO_PROTO -DOSF"
***************
*** 53,59 ****
  		LEX="flex -l"
  		DBG="-g3"
  		CSTATIC="-non_shared"
! 		MT_CFLAGS='-D_REENTRANT=1 -pthread -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-pthread -lpthread -lmach -lexc -lc"
  		TXLIBS="-lcurses"
  		XCFLAGS="-D_NO_PROTO -DOSF"
--- 53,59 ----
  		LEX="flex -l"
  		DBG="-g3"
  		CSTATIC="-non_shared"
! 		MT_CFLAGS='-D_REENTRANT=1 -pthread -DAFS_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-pthread -lpthread -lmach -lexc -lc"
  		TXLIBS="-lcurses"
  		XCFLAGS="-D_NO_PROTO -DOSF"
***************
*** 65,71 ****
  		DBG="-g3"
  		CSTATIC="-non_shared"
  		LWP_OPTMZ="-O2"
! 		MT_CFLAGS='-D_REENTRANT=1 -pthread -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-pthread -lpthread -lmach -lexc -lc"
  		TXLIBS="-lcurses"
  		XCFLAGS="-D_NO_PROTO -DOSF"
--- 65,71 ----
  		DBG="-g3"
  		CSTATIC="-non_shared"
  		LWP_OPTMZ="-O2"
! 		MT_CFLAGS='-D_REENTRANT=1 -pthread -DAFS_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-pthread -lpthread -lmach -lexc -lc"
  		TXLIBS="-lcurses"
  		XCFLAGS="-D_NO_PROTO -DOSF"
***************
*** 75,81 ****
  	alpha_linux_22)
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
--- 75,81 ----
  	alpha_linux_22)
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
***************
*** 91,97 ****
  		CCOBJ="${CC} -fPIC"
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
--- 91,97 ----
  		CCOBJ="${CC} -fPIC"
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
***************
*** 107,113 ****
  		CCOBJ="${CC} -fPIC"
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
--- 107,113 ----
  		CCOBJ="${CC} -fPIC"
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
***************
*** 159,165 ****
  		LEX="/opt/langtools/bin/lex"
  		LWP_OPTMZ="-O"
  		MT_CC="/opt/ansic/bin/cc -Ae"
! 		MT_CFLAGS='-D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-L/opt/dce/lib -ldce"
  		MV="/bin/mv"
  		OPTMZ="-O"
--- 159,165 ----
  		LEX="/opt/langtools/bin/lex"
  		LWP_OPTMZ="-O"
  		MT_CC="/opt/ansic/bin/cc -Ae"
! 		MT_CFLAGS='-D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-L/opt/dce/lib -ldce"
  		MV="/bin/mv"
  		OPTMZ="-O"
***************
*** 188,194 ****
  		LEX="/opt/langtools/bin/lex"
  		LWP_OPTMZ="-O"
  		MT_CC="$CC"
! 		MT_CFLAGS='-D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		MV="/bin/mv"
  		OPTMZ="-O"
--- 188,194 ----
  		LEX="/opt/langtools/bin/lex"
  		LWP_OPTMZ="-O"
  		MT_CC="$CC"
! 		MT_CFLAGS='-D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		MV="/bin/mv"
  		OPTMZ="-O"
***************
*** 219,225 ****
  		LEX="/opt/langtools/bin/lex"
  		LWP_OPTMZ=""
  		MT_CC="$CC"
! 		MT_CFLAGS='-D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		MV="/bin/mv"
  		OPTMZ="-O"
--- 219,225 ----
  		LEX="/opt/langtools/bin/lex"
  		LWP_OPTMZ=""
  		MT_CC="$CC"
! 		MT_CFLAGS='-D_POSIX_C_SOURCE=199506L -DAFS_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		MV="/bin/mv"
  		OPTMZ="-O"
***************
*** 242,248 ****
  
  	*fbsd_*)
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-pthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-pipe -fPIC"
--- 242,248 ----
  
  	*fbsd_*)
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-pthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-pipe -fPIC"
***************
*** 255,261 ****
  
  	*nbsd2*|*nbsd3*|*nbsd4*)
  		LEX="flex -l"
! 		MT_CFLAGS='${XCFLAGS} -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -D_REENTRANT '
  		MT_LIBS="-lpthread" # XXX -pthread soon
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-pipe -fPIC"
--- 255,261 ----
  
  	*nbsd2*|*nbsd3*|*nbsd4*)
  		LEX="flex -l"
! 		MT_CFLAGS='${XCFLAGS} -DAFS_PTHREAD_ENV -D_REENTRANT '
  		MT_LIBS="-lpthread" # XXX -pthread soon
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-pipe -fPIC"
***************
*** 282,288 ****
  	ia64_linux24|ia64_linux26)
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
--- 282,288 ----
  	ia64_linux24|ia64_linux26)
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
***************
*** 297,303 ****
  		CCOBJ="${CC} -fPIC"
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
--- 297,303 ----
  		CCOBJ="${CC} -fPIC"
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
***************
*** 311,317 ****
  	ppc64_linux24)
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
--- 311,317 ----
  	ppc64_linux24)
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
***************
*** 325,331 ****
  	ppc64_linux26)
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
--- 325,331 ----
  	ppc64_linux26)
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
***************
*** 343,349 ****
  		MT_CC="gcc -pipe"
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
--- 343,349 ----
  		MT_CC="gcc -pipe"
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
***************
*** 361,367 ****
  		MT_CC="gcc -pipe"
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		DBG=-g
  		KERN_DBG=-g
--- 361,367 ----
  		MT_CC="gcc -pipe"
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		DBG=-g
  		KERN_DBG=-g
***************
*** 382,388 ****
  		MT_CC="gcc -pipe"
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		DBG=-g
  		KERN_DBG=-g
--- 382,388 ----
  		MT_CC="gcc -pipe"
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		DBG=-g
  		KERN_DBG=-g
***************
*** 404,410 ****
  		MT_CC="gcc -pipe"
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		DBG=-g
  		KERN_DBG=-g
--- 404,410 ----
  		MT_CC="gcc -pipe"
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		DBG=-g
  		KERN_DBG=-g
***************
*** 424,430 ****
  		KRB5CFLAGS="-I/usr/include/kerberosV"
  		KRB5LIBS="-lkrb5 -lcrypto"
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-pthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-pipe -fpic"
--- 424,430 ----
  		KRB5CFLAGS="-I/usr/include/kerberosV"
  		KRB5LIBS="-lkrb5 -lcrypto"
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-pthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-pipe -fpic"
***************
*** 439,445 ****
  	parisc_linux24)
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
--- 439,445 ----
  	parisc_linux24)
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
***************
*** 494,500 ****
  	ppc_darwin_70)
  		AFSD_LDFLAGS="-F/System/Library/PrivateFrameworks -framework DiskArbitration"
  		LEX="lex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -D_REENTRANT ${XCFLAGS}'
  		KROOT=
  		KINCLUDES='-I$(KROOT)/System/Library/Frameworks/Kernel.framework/Headers'
  		LWP_OPTMZ="-O2"
--- 494,500 ----
  	ppc_darwin_70)
  		AFSD_LDFLAGS="-F/System/Library/PrivateFrameworks -framework DiskArbitration"
  		LEX="lex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -D_REENTRANT ${XCFLAGS}'
  		KROOT=
  		KINCLUDES='-I$(KROOT)/System/Library/Frameworks/Kernel.framework/Headers'
  		LWP_OPTMZ="-O2"
***************
*** 509,515 ****
  	*_darwin_80)
  		AFSD_LDFLAGS="-F/System/Library/PrivateFrameworks -framework DiskArbitration -framework SystemConfiguration -framework IOKit -framework CoreFoundation"
  		LEX="lex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -D_REENTRANT ${XCFLAGS} ${ARCHFLAGS}'
  		KROOT=
  		KINCLUDES='-I$(KROOT)/System/Library/Frameworks/Kernel.framework/Headers'
  		KERN_OPTMZ="-Os"
--- 509,515 ----
  	*_darwin_80)
  		AFSD_LDFLAGS="-F/System/Library/PrivateFrameworks -framework DiskArbitration -framework SystemConfiguration -framework IOKit -framework CoreFoundation"
  		LEX="lex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -D_REENTRANT ${XCFLAGS} ${ARCHFLAGS}'
  		KROOT=
  		KINCLUDES='-I$(KROOT)/System/Library/Frameworks/Kernel.framework/Headers'
  		KERN_OPTMZ="-Os"
***************
*** 526,532 ****
  	*_darwin_90)
  		AFSD_LDFLAGS="-F/System/Library/PrivateFrameworks -framework DiskArbitration -framework SystemConfiguration -framework IOKit -framework CoreFoundation"
  		LEX="lex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -D_REENTRANT ${XCFLAGS} ${ARCHFLAGS}'
  		KROOT=
  		KINCLUDES='-I$(KROOT)/System/Library/Frameworks/Kernel.framework/Headers'
  		LD="cc"
--- 526,532 ----
  	*_darwin_90)
  		AFSD_LDFLAGS="-F/System/Library/PrivateFrameworks -framework DiskArbitration -framework SystemConfiguration -framework IOKit -framework CoreFoundation"
  		LEX="lex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -D_REENTRANT ${XCFLAGS} ${ARCHFLAGS}'
  		KROOT=
  		KINCLUDES='-I$(KROOT)/System/Library/Frameworks/Kernel.framework/Headers'
  		LD="cc"
***************
*** 544,550 ****
  	ppc_linux*)
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
--- 544,550 ----
  	ppc_linux*)
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
***************
*** 561,567 ****
  		LEX="lex"
  		LIBSYS_AIX_EXP="afsl.exp"
  		MT_CC="xlc_r"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthreads"
  		SHLIB_SUFFIX="o"
  		TXLIBS="-lcurses"
--- 561,567 ----
  		LEX="lex"
  		LIBSYS_AIX_EXP="afsl.exp"
  		MT_CC="xlc_r"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthreads"
  		SHLIB_SUFFIX="o"
  		TXLIBS="-lcurses"
***************
*** 577,583 ****
  		LEX="lex"
  		LIBSYS_AIX_EXP="afsl.exp"
  		MT_CC="xlc_r"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthreads"
  		SHLIB_SUFFIX="o"
  		TXLIBS="-lcurses"
--- 577,583 ----
  		LEX="lex"
  		LIBSYS_AIX_EXP="afsl.exp"
  		MT_CC="xlc_r"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthreads"
  		SHLIB_SUFFIX="o"
  		TXLIBS="-lcurses"
***************
*** 592,598 ****
  		LEX="lex"
  		LIBSYS_AIX_EXP="afsl.exp"
  		MT_CC="xlc_r"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthreads"
  		SHLIB_SUFFIX="o"
  		TXLIBS="-lcurses"
--- 592,598 ----
  		LEX="lex"
  		LIBSYS_AIX_EXP="afsl.exp"
  		MT_CC="xlc_r"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthreads"
  		SHLIB_SUFFIX="o"
  		TXLIBS="-lcurses"
***************
*** 607,613 ****
  		LEX="lex"
  		LIBSYS_AIX_EXP="afsl.exp"
  		MT_CC="xlc_r"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthreads"
  		SHLIB_SUFFIX="o"
  		TXLIBS="-lcurses"
--- 607,613 ----
  		LEX="lex"
  		LIBSYS_AIX_EXP="afsl.exp"
  		MT_CC="xlc_r"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthreads"
  		SHLIB_SUFFIX="o"
  		TXLIBS="-lcurses"
***************
*** 624,630 ****
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
  		MT_CC="$CC"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
--- 624,630 ----
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
  		MT_CC="$CC"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
***************
*** 644,650 ****
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
  		MT_CC="$CC"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
--- 644,650 ----
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
  		MT_CC="$CC"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
***************
*** 663,669 ****
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
  		MT_CC="$CC"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
--- 663,669 ----
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
  		MT_CC="$CC"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
***************
*** 681,687 ****
  		AFSD_LIBS="/usr/lib/libdwarf.a /usr/lib/libelf.a"
  		FSINCLUDES="-I/usr/include/sys/fs"
  		LEX="lex"
! 		MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		TXLIBS="-lcurses"
  		XCFLAGS64="-64 -mips3"
--- 681,687 ----
  		AFSD_LIBS="/usr/lib/libdwarf.a /usr/lib/libelf.a"
  		FSINCLUDES="-I/usr/include/sys/fs"
  		LEX="lex"
! 		MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		TXLIBS="-lcurses"
  		XCFLAGS64="-64 -mips3"
***************
*** 696,702 ****
  		AFSD_LIBS="/usr/lib/libdwarf.a /usr/lib/libelf.a"
  		FSINCLUDES="-I/usr/include/sys/fs"
  		LEX="lex"
! 		MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		TXLIBS="-lcurses"
  		XCFLAGS64="-D_BSD_COMPAT -64 -mips3"
--- 696,702 ----
  		AFSD_LIBS="/usr/lib/libdwarf.a /usr/lib/libelf.a"
  		FSINCLUDES="-I/usr/include/sys/fs"
  		LEX="lex"
! 		MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		TXLIBS="-lcurses"
  		XCFLAGS64="-D_BSD_COMPAT -64 -mips3"
***************
*** 710,716 ****
  		AFSD_LIBS="/usr/lib32/libdwarf.a /usr/lib32/libelf.a"
  		FSINCLUDES="-I/usr/include/sys/fs"
  		LEX="lex"
! 		MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		TXLIBS="-lcurses"
  		XCFLAGS64="-D_BSD_COMPAT -64 -mips3"
--- 710,716 ----
  		AFSD_LIBS="/usr/lib32/libdwarf.a /usr/lib32/libelf.a"
  		FSINCLUDES="-I/usr/include/sys/fs"
  		LEX="lex"
! 		MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		TXLIBS="-lcurses"
  		XCFLAGS64="-D_BSD_COMPAT -64 -mips3"
***************
*** 728,734 ****
  		LD="/usr/bin/ld"
  		LEX="lex"
  		MT_CC="/usr/bin/cc"
! 		MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		TXLIBS="-lcurses"
  		XCFLAGS64="-64 -mips3"
--- 728,734 ----
  		LD="/usr/bin/ld"
  		LEX="lex"
  		MT_CC="/usr/bin/cc"
! 		MT_CFLAGS='-D_SGI_MP_SOURCE -DAFS_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		TXLIBS="-lcurses"
  		XCFLAGS64="-64 -mips3"
***************
*** 741,747 ****
  	sparc*_linux*)
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
--- 741,747 ----
  	sparc*_linux*)
  		KERN_OPTMZ=-O2
  		LEX="flex -l"
! 		MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}'
  		MT_LIBS="-lpthread"
  		PAM_OPTMZ=-O2
  		PAM_CFLAGS="-Dlinux -DLINUX_PAM -fPIC"
***************
*** 774,780 ****
  		CCOBJ="/opt/SUNWspro/bin/cc"
  		LEX="lex"
  		MT_CC="/opt/SUNWspro/bin/cc"
! 		MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread -lsocket"
  		SHLIB_CFLAGS="-KPIC"
  		TXLIBS="-lcurses"
--- 774,780 ----
  		CCOBJ="/opt/SUNWspro/bin/cc"
  		LEX="lex"
  		MT_CC="/opt/SUNWspro/bin/cc"
! 		MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread -lsocket"
  		SHLIB_CFLAGS="-KPIC"
  		TXLIBS="-lcurses"
***************
*** 792,798 ****
  		CCOBJ="/opt/SUNWspro/bin/cc"
  		LEX="lex"
  		MT_CC="/opt/SUNWspro/bin/cc"
! 		MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread -lsocket"
  		PAM_CFLAGS="-KPIC"
  		PAM_LIBS="-lc -lpam -lsocket -lnsl -lm"
--- 792,798 ----
  		CCOBJ="/opt/SUNWspro/bin/cc"
  		LEX="lex"
  		MT_CC="/opt/SUNWspro/bin/cc"
! 		MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread -lsocket"
  		PAM_CFLAGS="-KPIC"
  		PAM_LIBS="-lc -lpam -lsocket -lnsl -lm"
***************
*** 814,820 ****
  		LEX="lex"
  		LD="/usr/ccs/bin/ld"
  		MT_CC="/opt/SUNWspro/bin/cc"
! 		MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread -lsocket"
  		PAM_CFLAGS="-KPIC"
  		PAM_LIBS="-lc -lpam -lsocket -lnsl -lm"
--- 814,820 ----
  		LEX="lex"
  		LD="/usr/ccs/bin/ld"
  		MT_CC="/opt/SUNWspro/bin/cc"
! 		MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread -lsocket"
  		PAM_CFLAGS="-KPIC"
  		PAM_LIBS="-lc -lpam -lsocket -lnsl -lm"
***************
*** 836,842 ****
  		LEX="lex"
  		LD="/usr/ccs/bin/ld"
  		MT_CC="/opt/SUNWspro/bin/cc"
! 		MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread -lsocket"
  		PAM_CFLAGS="-KPIC"
  		PAM_LIBS="-lc -lpam -lsocket -lnsl -lm"
--- 836,842 ----
  		LEX="lex"
  		LD="/usr/ccs/bin/ld"
  		MT_CC="/opt/SUNWspro/bin/cc"
! 		MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread -lsocket"
  		PAM_CFLAGS="-KPIC"
  		PAM_LIBS="-lc -lpam -lsocket -lnsl -lm"
***************
*** 858,864 ****
  		LEX="lex"
  		LD="/usr/ccs/bin/ld"
  		MT_CC="/opt/SUNWspro/bin/cc"
! 		MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread -lsocket"
  		PAM_CFLAGS="-KPIC"
  		PAM_LIBS="-lc -lpam -lsocket -lnsl -lm"
--- 858,864 ----
  		LEX="lex"
  		LD="/usr/ccs/bin/ld"
  		MT_CC="/opt/SUNWspro/bin/cc"
! 		MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread -lsocket"
  		PAM_CFLAGS="-KPIC"
  		PAM_LIBS="-lc -lpam -lsocket -lnsl -lm"
***************
*** 880,886 ****
  		LEX="lex"
  		LD="/usr/ccs/bin/ld"
  		MT_CC="/opt/SUNWspro/bin/cc"
! 		MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread -lsocket"
  		PAM_CFLAGS="-KPIC"
  		PAM_LIBS="-lc -lpam -lsocket -lnsl -lm"
--- 880,886 ----
  		LEX="lex"
  		LD="/usr/ccs/bin/ld"
  		MT_CC="/opt/SUNWspro/bin/cc"
! 		MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread -lsocket"
  		PAM_CFLAGS="-KPIC"
  		PAM_LIBS="-lc -lpam -lsocket -lnsl -lm"
***************
*** 902,908 ****
  		LEX="lex"
  		LD="/usr/ccs/bin/ld"
  		MT_CC="/opt/SUNWspro/bin/cc"
! 		MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread -lsocket"
  		PAM_CFLAGS="-KPIC"
  		PAM_LIBS="-lc -lpam -lsocket -lnsl -lm"
--- 902,908 ----
  		LEX="lex"
  		LD="/usr/ccs/bin/ld"
  		MT_CC="/opt/SUNWspro/bin/cc"
! 		MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread -lsocket"
  		PAM_CFLAGS="-KPIC"
  		PAM_LIBS="-lc -lpam -lsocket -lnsl -lm"
***************
*** 924,930 ****
  		LEX="lex"
  		LD="/usr/ccs/bin/ld"
  		MT_CC="/opt/SUNWspro/bin/cc"
! 		MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread -lsocket"
  		PAM_CFLAGS="-KPIC"
  		PAM_LIBS="-lc -lpam -lsocket -lnsl -lm"
--- 924,930 ----
  		LEX="lex"
  		LD="/usr/ccs/bin/ld"
  		MT_CC="/opt/SUNWspro/bin/cc"
! 		MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread -lsocket"
  		PAM_CFLAGS="-KPIC"
  		PAM_LIBS="-lc -lpam -lsocket -lnsl -lm"
***************
*** 945,951 ****
  		LEX="lex"
  		LD="/usr/ccs/bin/ld"
  		MT_CC="/opt/SUNWspro/bin/cc"
! 		MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread -lsocket"
  		PAM_CFLAGS="-KPIC"
  		PAM_LIBS="-lc -lpam -lsocket -lnsl -lm"
--- 945,951 ----
  		LEX="lex"
  		LD="/usr/ccs/bin/ld"
  		MT_CC="/opt/SUNWspro/bin/cc"
! 		MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread -lsocket"
  		PAM_CFLAGS="-KPIC"
  		PAM_LIBS="-lc -lpam -lsocket -lnsl -lm"
***************
*** 966,972 ****
  		LEX="lex"
  		LD="/usr/ccs/bin/ld"
  		MT_CC="/opt/SUNWspro/bin/cc"
! 		MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread -lsocket"
  		PAM_CFLAGS="-KPIC"
  		PAM_LIBS="-lc -lpam -lsocket -lnsl -lm"
--- 966,972 ----
  		LEX="lex"
  		LD="/usr/ccs/bin/ld"
  		MT_CC="/opt/SUNWspro/bin/cc"
! 		MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread -lsocket"
  		PAM_CFLAGS="-KPIC"
  		PAM_LIBS="-lc -lpam -lsocket -lnsl -lm"
***************
*** 987,993 ****
  		LEX="lex"
  		LD="/usr/ccs/bin/ld"
  		MT_CC="/opt/SUNWspro/bin/cc"
! 		MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread -lsocket"
  		PAM_CFLAGS="-KPIC"
  		PAM_LIBS="-lc -lpam -lsocket -lnsl -lm"
--- 987,993 ----
  		LEX="lex"
  		LD="/usr/ccs/bin/ld"
  		MT_CC="/opt/SUNWspro/bin/cc"
! 		MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread -lsocket"
  		PAM_CFLAGS="-KPIC"
  		PAM_LIBS="-lc -lpam -lsocket -lnsl -lm"
***************
*** 1008,1014 ****
  		LEX="lex"
  		LD="/usr/ccs/bin/ld"
  		MT_CC="/opt/SUNWspro/bin/cc"
! 		MT_CFLAGS='-mt -DAFS_PTHREAD_ENV -DUBIK_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread -lsocket"
  		PAM_CFLAGS="-KPIC"
  		PAM_LIBS="-lc -lpam -lsocket -lnsl -lm"
--- 1008,1014 ----
  		LEX="lex"
  		LD="/usr/ccs/bin/ld"
  		MT_CC="/opt/SUNWspro/bin/cc"
! 		MT_CFLAGS='-mt -DAFS_PTHREAD_ENV ${XCFLAGS}'
  		MT_LIBS="-lpthread -lsocket"
  		PAM_CFLAGS="-KPIC"
  		PAM_LIBS="-lc -lpam -lsocket -lnsl -lm"
Index: openafs/src/config/NTMakefile.amd64_w2k
diff -c openafs/src/config/NTMakefile.amd64_w2k:1.24.2.44 openafs/src/config/NTMakefile.amd64_w2k:1.24.2.46
*** openafs/src/config/NTMakefile.amd64_w2k:1.24.2.44	Wed Jul 16 00:29:43 2008
--- openafs/src/config/NTMakefile.amd64_w2k	Mon Jul 28 19:09:28 2008
***************
*** 84,90 ****
  #define used in WinNT/2000 installation and program version display
  AFSPRODUCT_VER_MAJOR=1
  AFSPRODUCT_VER_MINOR=5
! AFSPRODUCT_VER_PATCH=5000
  AFSPRODUCT_VER_BUILD=0
  
  AFSPRODUCT_VERSION=$(AFSPRODUCT_VER_MAJOR).$(AFSPRODUCT_VER_MINOR).$(AFSPRODUCT_VER_PATCH)
--- 84,90 ----
  #define used in WinNT/2000 installation and program version display
  AFSPRODUCT_VER_MAJOR=1
  AFSPRODUCT_VER_MINOR=5
! AFSPRODUCT_VER_PATCH=5101
  AFSPRODUCT_VER_BUILD=0
  
  AFSPRODUCT_VERSION=$(AFSPRODUCT_VER_MAJOR).$(AFSPRODUCT_VER_MINOR).$(AFSPRODUCT_VER_PATCH)
Index: openafs/src/config/NTMakefile.i386_nt40
diff -c openafs/src/config/NTMakefile.i386_nt40:1.84.2.42 openafs/src/config/NTMakefile.i386_nt40:1.84.2.44
*** openafs/src/config/NTMakefile.i386_nt40:1.84.2.42	Wed Jul 16 00:29:43 2008
--- openafs/src/config/NTMakefile.i386_nt40	Mon Jul 28 19:09:28 2008
***************
*** 84,90 ****
  #define used in WinNT/2000 installation and program version display
  AFSPRODUCT_VER_MAJOR=1
  AFSPRODUCT_VER_MINOR=5
! AFSPRODUCT_VER_PATCH=5000
  AFSPRODUCT_VER_BUILD=0
  
  AFSPRODUCT_VERSION=$(AFSPRODUCT_VER_MAJOR).$(AFSPRODUCT_VER_MINOR).$(AFSPRODUCT_VER_PATCH)
--- 84,90 ----
  #define used in WinNT/2000 installation and program version display
  AFSPRODUCT_VER_MAJOR=1
  AFSPRODUCT_VER_MINOR=5
! AFSPRODUCT_VER_PATCH=5101
  AFSPRODUCT_VER_BUILD=0
  
  AFSPRODUCT_VERSION=$(AFSPRODUCT_VER_MAJOR).$(AFSPRODUCT_VER_MINOR).$(AFSPRODUCT_VER_PATCH)
Index: openafs/src/config/NTMakefile.i386_w2k
diff -c openafs/src/config/NTMakefile.i386_w2k:1.23.2.46 openafs/src/config/NTMakefile.i386_w2k:1.23.2.48
*** openafs/src/config/NTMakefile.i386_w2k:1.23.2.46	Wed Jul 16 00:29:44 2008
--- openafs/src/config/NTMakefile.i386_w2k	Mon Jul 28 19:09:28 2008
***************
*** 88,94 ****
  #define used in WinNT/2000 installation and program version display
  AFSPRODUCT_VER_MAJOR=1
  AFSPRODUCT_VER_MINOR=5
! AFSPRODUCT_VER_PATCH=5000
  AFSPRODUCT_VER_BUILD=0
  
  AFSPRODUCT_VERSION=$(AFSPRODUCT_VER_MAJOR).$(AFSPRODUCT_VER_MINOR).$(AFSPRODUCT_VER_PATCH)
--- 88,94 ----
  #define used in WinNT/2000 installation and program version display
  AFSPRODUCT_VER_MAJOR=1
  AFSPRODUCT_VER_MINOR=5
! AFSPRODUCT_VER_PATCH=5101
  AFSPRODUCT_VER_BUILD=0
  
  AFSPRODUCT_VERSION=$(AFSPRODUCT_VER_MAJOR).$(AFSPRODUCT_VER_MINOR).$(AFSPRODUCT_VER_PATCH)
Index: openafs/src/pinstall/install.c
diff -c openafs/src/pinstall/install.c:1.23 openafs/src/pinstall/install.c:1.23.14.1
*** openafs/src/pinstall/install.c:1.23	Fri Aug  8 17:54:44 2003
--- openafs/src/pinstall/install.c	Mon Jul 28 08:16:06 2008
***************
*** 50,56 ****
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/pinstall/Attic/install.c,v 1.23 2003/08/08 21:54:44 shadow Exp $");
  
  #include &lt;stdio.h&gt;
  #include &lt;pwd.h&gt;
--- 50,56 ----
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/pinstall/Attic/install.c,v 1.23.14.1 2008/07/28 12:16:06 shadow Exp $");
  
  #include &lt;stdio.h&gt;
  #include &lt;pwd.h&gt;
***************
*** 183,191 ****
  {
      int pid;
      pid_t status;
-     static char *env[] = {
- 	0,
-     };
      static char *strip[] = {
  	"strip", 0, 0,
      };
--- 183,188 ----
***************
*** 204,210 ****
      case 0:			/* child        */
  	copy[1] = iname;
  	copy[2] = oname;
! 	execve("/bin/cp", copy, env);
  	perror("/bin/cp");
  	exit(1);
  
--- 201,207 ----
      case 0:			/* child        */
  	copy[1] = iname;
  	copy[2] = oname;
! 	execv("/bin/cp", copy);
  	perror("/bin/cp");
  	exit(1);
  
***************
*** 249,255 ****
  #else
  #define	STRIP_BIN	"/bin/strip"
  #endif
! 	execve(STRIP_BIN, strip, env);
  	perror(STRIP_BIN);
  	exit(1);
  
--- 246,252 ----
  #else
  #define	STRIP_BIN	"/bin/strip"
  #endif
! 	execv(STRIP_BIN, strip);
  	perror(STRIP_BIN);
  	exit(1);
  
***************
*** 275,283 ****
  quickStrip(char *iname, char *oname, int ignored, int copy_only)
  {
      int pid, status;
-     static char *env[] = {
- 	0,
-     };
      static char *strip[] = {
  	"strip", 0, 0,
      };
--- 272,277 ----
***************
*** 296,302 ****
      case 0:			/* child        */
  	copy[1] = iname;
  	copy[2] = oname;
! 	execve("/bin/cp", copy, env);
  	perror("/bin/cp");
  	exit(1);
  
--- 290,296 ----
      case 0:			/* child        */
  	copy[1] = iname;
  	copy[2] = oname;
! 	execv("/bin/cp", copy);
  	perror("/bin/cp");
  	exit(1);
  
***************
*** 334,340 ****
  
      case 0:			/* child        */
  	strip[1] = oname;
! 	execve("/bin/strip", strip, env);
  	perror("/bin/strip");
  	exit(1);
  
--- 328,334 ----
  
      case 0:			/* child        */
  	strip[1] = oname;
! 	execv("/bin/strip", strip);
  	perror("/bin/strip");
  	exit(1);
  
Index: openafs/src/rx/rx.c
diff -c openafs/src/rx/rx.c:1.97.2.26 openafs/src/rx/rx.c:1.97.2.27
*** openafs/src/rx/rx.c:1.97.2.26	Thu May 29 09:33:29 2008
--- openafs/src/rx/rx.c	Tue Jul 22 00:18:28 2008
***************
*** 17,23 ****
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/rx.c,v 1.97.2.26 2008/05/29 13:33:29 jaltman Exp $");
  
  #ifdef KERNEL
  #include "afs/sysincludes.h"
--- 17,23 ----
  #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/rx/rx.c,v 1.97.2.27 2008/07/22 04:18:28 jaltman Exp $");
  
  #ifdef KERNEL
  #include "afs/sysincludes.h"
***************
*** 750,826 ****
  		 int serviceSecurityIndex)
  {
      int hashindex, i;
!     afs_int32 cid, cix, nclones;
!     register struct rx_connection *conn, *tconn, *ptconn;
  
      SPLVAR;
  
      clock_NewTime();
      dpf(("rx_NewConnection(host %x, port %u, service %u, securityObject %x, serviceSecurityIndex %d)\n", ntohl(shost), ntohs(sport), sservice, securityObject, serviceSecurityIndex));
  
- 	conn = tconn = 0;
- 	nclones = rx_max_clones_per_connection;
- 
      /* Vasilsi said: "NETPRI protects Cid and Alloc", but can this be true in
       * the case of kmem_alloc? */
! 
      NETPRI;
      MUTEX_ENTER(&amp;rx_connHashTable_lock);
! 
!     /* send in the clones */
!     for(cix = 0; cix &lt;= nclones; ++cix) {
! 	  
! 	  ptconn = tconn;
! 	  tconn = rxi_AllocConnection();
! 	  tconn-&gt;type = RX_CLIENT_CONNECTION;
! 	  tconn-&gt;epoch = rx_epoch;
! 	  tconn-&gt;peer = rxi_FindPeer(shost, sport, 0, 1);
! 	  tconn-&gt;serviceId = sservice;
! 	  tconn-&gt;securityObject = securityObject;
! 	  tconn-&gt;securityData = (void *) 0;
! 	  tconn-&gt;securityIndex = serviceSecurityIndex;
! 	  tconn-&gt;ackRate = RX_FAST_ACK_RATE;
! 	  tconn-&gt;nSpecific = 0;
! 	  tconn-&gt;specific = NULL;
! 	  tconn-&gt;challengeEvent = NULL;
! 	  tconn-&gt;delayedAbortEvent = NULL;
! 	  tconn-&gt;abortCount = 0;
! 	  tconn-&gt;error = 0;
      for (i = 0; i &lt; RX_MAXCALLS; i++) {
! 	tconn-&gt;twind[i] = rx_initSendWindow;
! 	tconn-&gt;rwind[i] = rx_initReceiveWindow;
      }
- 	  tconn-&gt;parent = 0;
- 	  tconn-&gt;next_clone = 0;
- 	  tconn-&gt;nclones = nclones;
- 	  rx_SetConnDeadTime(tconn, rx_connDeadTime);
- 		
- 	  if(cix == 0) {
- 		conn = tconn;
- 	  } else {
- 		tconn-&gt;flags |= RX_CLONED_CONNECTION;
- 		tconn-&gt;parent = conn;
- 		ptconn-&gt;next_clone = tconn;
- 	  }
  
! 	  /* generic connection setup */
! #ifdef	RX_ENABLE_LOCKS
! 	  MUTEX_INIT(&amp;tconn-&gt;conn_call_lock, "conn call lock", MUTEX_DEFAULT, 0);
! 	  MUTEX_INIT(&amp;tconn-&gt;conn_data_lock, "conn data lock", MUTEX_DEFAULT, 0);
! 	  CV_INIT(&amp;tconn-&gt;conn_call_cv, "conn call cv", CV_DEFAULT, 0);
! #endif
! 	  cid = (rx_nextCid += RX_MAXCALLS);
! 	  tconn-&gt;cid = cid;
! 	  RXS_NewConnection(securityObject, tconn);
! 	  hashindex =
! 		CONN_HASH(shost, sport, tconn-&gt;cid, tconn-&gt;epoch, 
! 				  RX_CLIENT_CONNECTION);
! 	  tconn-&gt;refCount++; /* no lock required since only this thread knows */
! 	  tconn-&gt;next = rx_connHashTable[hashindex];
! 	  rx_connHashTable[hashindex] = tconn;
! 	  rx_MutexIncrement(rx_stats.nClientConns, rx_stats_mutex);	
!     }
!     
      MUTEX_EXIT(&amp;rx_connHashTable_lock);
      USERPRI;
      return conn;
--- 750,803 ----
  		 int serviceSecurityIndex)
  {
      int hashindex, i;
!     afs_int32 cid;
!     register struct rx_connection *conn;
  
      SPLVAR;
  
      clock_NewTime();
      dpf(("rx_NewConnection(host %x, port %u, service %u, securityObject %x, serviceSecurityIndex %d)\n", ntohl(shost), ntohs(sport), sservice, securityObject, serviceSecurityIndex));
  
      /* Vasilsi said: "NETPRI protects Cid and Alloc", but can this be true in
       * the case of kmem_alloc? */
!     conn = rxi_AllocConnection();
! #ifdef	RX_ENABLE_LOCKS
!     MUTEX_INIT(&amp;conn-&gt;conn_call_lock, "conn call lock", MUTEX_DEFAULT, 0);
!     MUTEX_INIT(&amp;conn-&gt;conn_data_lock, "conn call lock", MUTEX_DEFAULT, 0);
!     CV_INIT(&amp;conn-&gt;conn_call_cv, "conn call cv", CV_DEFAULT, 0);
! #endif
      NETPRI;
      MUTEX_ENTER(&amp;rx_connHashTable_lock);
!     cid = (rx_nextCid += RX_MAXCALLS);
!     conn-&gt;type = RX_CLIENT_CONNECTION;
!     conn-&gt;cid = cid;
!     conn-&gt;epoch = rx_epoch;
!     conn-&gt;peer = rxi_FindPeer(shost, sport, 0, 1);
!     conn-&gt;serviceId = sservice;
!     conn-&gt;securityObject = securityObject;
!     conn-&gt;securityData = (void *) 0;
!     conn-&gt;securityIndex = serviceSecurityIndex;
!     rx_SetConnDeadTime(conn, rx_connDeadTime);
!     conn-&gt;ackRate = RX_FAST_ACK_RATE;
!     conn-&gt;nSpecific = 0;
!     conn-&gt;specific = NULL;
!     conn-&gt;challengeEvent = NULL;
!     conn-&gt;delayedAbortEvent = NULL;
!     conn-&gt;abortCount = 0;
!     conn-&gt;error = 0;
      for (i = 0; i &lt; RX_MAXCALLS; i++) {
! 	conn-&gt;twind[i] = rx_initSendWindow;
! 	conn-&gt;rwind[i] = rx_initReceiveWindow;
      }
  
!     RXS_NewConnection(securityObject, conn);
!     hashindex =
! 	CONN_HASH(shost, sport, conn-&gt;cid, conn-&gt;epoch, RX_CLIENT_CONNECTION);
! 
!     conn-&gt;refCount++;		/* no lock required since only this thread knows... */
!     conn-&gt;next = rx_connHashTable[hashindex];
!     rx_connHashTable[hashindex] = conn;
!     rx_MutexIncrement(rx_stats.nClientConns, rx_stats_mutex);
      MUTEX_EXIT(&amp;rx_connHashTable_lock);
      USERPRI;
      return conn;
***************
*** 829,842 ****
  void
  rx_SetConnDeadTime(register struct rx_connection *conn, register int seconds)
  {
!   /* The idea is to set the dead time to a value that allows several
!    * keepalives to be dropped without timing out the connection. */
!   struct rx_connection *tconn;
!   tconn = conn;
!   do {
! 	tconn-&gt;secondsUntilDead = MAX(seconds, 6);
! 	tconn-&gt;secondsUntilPing = tconn-&gt;secondsUntilDead / 6;
!   } while(tconn-&gt;next_clone &amp;&amp; (tconn = tconn-&gt;next_clone));
  }
  
  int rxi_lowPeerRefCount = 0;
--- 806,815 ----
  void
  rx_SetConnDeadTime(register struct rx_connection *conn, register int seconds)
  {
!     /* The idea is to set the dead time to a value that allows several
!      * keepalives to be dropped without timing out the connection. */
!     conn-&gt;secondsUntilDead = MAX(seconds, 6);
!     conn-&gt;secondsUntilPing = conn-&gt;secondsUntilDead / 6;
  }
  
  int rxi_lowPeerRefCount = 0;
***************
*** 903,944 ****
  void
  rxi_DestroyConnection(register struct rx_connection *conn)
  {
!   register struct rx_connection *tconn, *dtconn;
! 
!   MUTEX_ENTER(&amp;rx_connHashTable_lock);
!   
!   if(!(conn-&gt;flags &amp; RX_CLONED_CONNECTION)) {
! 	tconn = conn-&gt;next_clone;
! 	conn-&gt;next_clone = 0; /* once */
! 	do {
! 	  if(tconn) {
! 		dtconn = tconn;
! 		tconn = tconn-&gt;next_clone;
! 		rxi_DestroyConnectionNoLock(dtconn);
! 		/* destroyed? */
! 		if (dtconn == rx_connCleanup_list) {
! 		  rx_connCleanup_list = rx_connCleanup_list-&gt;next;
! 		  MUTEX_EXIT(&amp;rx_connHashTable_lock);
! 		  /* rxi_CleanupConnection will free tconn */	
! 		  rxi_CleanupConnection(dtconn);
! 		  MUTEX_ENTER(&amp;rx_connHashTable_lock);
! 		  (conn-&gt;nclones)--;
! 		}
! 	  }
! 	} while(tconn);
!   }
! 
!   rxi_DestroyConnectionNoLock(conn);
!   /* conn should be at the head of the cleanup list */
!   if (conn == rx_connCleanup_list) {
  	rx_connCleanup_list = rx_connCleanup_list-&gt;next;
  	MUTEX_EXIT(&amp;rx_connHashTable_lock);
  	rxi_CleanupConnection(conn);
!   }
  #ifdef RX_ENABLE_LOCKS
!   else {
  	MUTEX_EXIT(&amp;rx_connHashTable_lock);
!   }
  #endif /* RX_ENABLE_LOCKS */
  }
  
--- 876,893 ----
  void
  rxi_DestroyConnection(register struct rx_connection *conn)
  {
!     MUTEX_ENTER(&amp;rx_connHashTable_lock);
!     rxi_DestroyConnectionNoLock(conn);
!     /* conn should be at the head of the cleanup list */
!     if (conn == rx_connCleanup_list) {
  	rx_connCleanup_list = rx_connCleanup_list-&gt;next;
  	MUTEX_EXIT(&amp;rx_connHashTable_lock);
  	rxi_CleanupConnection(conn);
!     }
  #ifdef RX_ENABLE_LOCKS
!     else {
  	MUTEX_EXIT(&amp;rx_connHashTable_lock);
!     }
  #endif /* RX_ENABLE_LOCKS */
  }
  
***************
*** 1124,1130 ****
  {
      register int i;
      register struct rx_call *call;
- 	register struct rx_connection *tconn;
      struct clock queueTime;
      SPLVAR;
  
--- 1073,1078 ----
***************
*** 1167,1217 ****
      } 
      MUTEX_EXIT(&amp;conn-&gt;conn_data_lock);
  
- 	/* search for next free call on this connection or 
- 	 * its clones, if any */
      for (;;) {
! 		tconn = conn;
! 		do {
! 			for (i = 0; i &lt; RX_MAXCALLS; i++) {
! 				call = tconn-&gt;call[i];
! 				if (call) {
! 					MUTEX_ENTER(&amp;call-&gt;lock);
! 					if (call-&gt;state == RX_STATE_DALLY) {
! 						rxi_ResetCall(call, 0);
! 						(*call-&gt;callNumber)++;
! 						goto f_call;
! 					}
! 					MUTEX_EXIT(&amp;call-&gt;lock);
! 				} else {
! 					call = rxi_NewCall(tconn, i);
! 					goto f_call;
! 				}
! 			} /* for i &lt; RX_MAXCALLS */
! 		} while (tconn-&gt;next_clone &amp;&amp; (tconn = tconn-&gt;next_clone));
! 
! 	f_call:
! 
! 		if (i &lt; RX_MAXCALLS) {
! 			break;
  		}
! 
! 		/* to be here, all available calls for this connection (and all
! 		 * its clones) must be in use */
! 
! 		MUTEX_ENTER(&amp;conn-&gt;conn_data_lock);
! 		conn-&gt;flags |= RX_CONN_MAKECALL_WAITING;
! 		conn-&gt;makeCallWaiters++;
! 		MUTEX_EXIT(&amp;conn-&gt;conn_data_lock);
  
  #ifdef	RX_ENABLE_LOCKS
! 		CV_WAIT(&amp;conn-&gt;conn_call_cv, &amp;conn-&gt;conn_call_lock);
  #else
! 		osi_rxSleep(conn);
  #endif
! 		MUTEX_ENTER(&amp;conn-&gt;conn_data_lock);
! 		conn-&gt;makeCallWaiters--;
! 		MUTEX_EXIT(&amp;conn-&gt;conn_data_lock);
!     } /* for ;; */
      /*
       * Wake up anyone else who might be giving us a chance to
       * run (see code above that avoids resource starvation).
--- 1115,1153 ----
      } 
      MUTEX_EXIT(&amp;conn-&gt;conn_data_lock);
  
      for (;;) {
! 	for (i = 0; i &lt; RX_MAXCALLS; i++) {
! 	    call = conn-&gt;call[i];
! 	    if (call) {
! 		MUTEX_ENTER(&amp;call-&gt;lock);
! 		if (call-&gt;state == RX_STATE_DALLY) {
! 		    rxi_ResetCall(call, 0);
! 		    (*call-&gt;callNumber)++;
! 		    break;
  		}
! 		MUTEX_EXIT(&amp;call-&gt;lock);
! 	    } else {
! 		call = rxi_NewCall(conn, i);
! 		break;
! 	    }
! 	}
! 	if (i &lt; RX_MAXCALLS) {
! 	    break;
! 	}
! 	MUTEX_ENTER(&amp;conn-&gt;conn_data_lock);
! 	conn-&gt;flags |= RX_CONN_MAKECALL_WAITING;
! 	conn-&gt;makeCallWaiters++;
! 	MUTEX_EXIT(&amp;conn-&gt;conn_data_lock);
  
  #ifdef	RX_ENABLE_LOCKS
! 	CV_WAIT(&amp;conn-&gt;conn_call_cv, &amp;conn-&gt;conn_call_lock);
  #else
! 	osi_rxSleep(conn);
  #endif
! 	MUTEX_ENTER(&amp;conn-&gt;conn_data_lock);
! 	conn-&gt;makeCallWaiters--;
! 	MUTEX_EXIT(&amp;conn-&gt;conn_data_lock);
!     }
      /*
       * Wake up anyone else who might be giving us a chance to
       * run (see code above that avoids resource starvation).
Index: openafs/src/rx/rx.h
diff -c openafs/src/rx/rx.h:1.28.4.10 openafs/src/rx/rx.h:1.28.4.11
*** openafs/src/rx/rx.h:1.28.4.10	Tue May 20 16:24:39 2008
--- openafs/src/rx/rx.h	Tue Jul 22 00:18:28 2008
***************
*** 210,229 ****
  #define rx_EnableHotThread()		(rx_enable_hot_thread = 1)
  #define rx_DisableHotThread()		(rx_enable_hot_thread = 0)
  
- /* Macros to set max connection clones (each allows RX_MAXCALLS 
-  * outstanding calls */
- 
- #define rx_SetMaxCalls(v) \
- do {\
- 	rx_SetCloneMax(v/4); \
- } while(0);
- 
- #define rx_SetCloneMax(v) \
- do {\
- 	if(v &lt; RX_HARD_MAX_CLONES) \
- 		rx_max_clones_per_connection = v; \
- } while(0);
- 
  #define rx_PutConnection(conn) rx_DestroyConnection(conn)
  
  /* A connection is an authenticated communication path, allowing 
--- 210,215 ----
***************
*** 234,242 ****
      struct rx_peer_rx_lock *peer;
  #else
  struct rx_connection {
!     struct rx_connection *next;	/* on hash chain _or_ free list */
!     struct rx_connection *parent; /* primary connection, if this is a clone */
!     struct rx_connection *next_clone; /* next in list of clones */
      struct rx_peer *peer;
  #endif
  #ifdef	RX_ENABLE_LOCKS
--- 220,226 ----
      struct rx_peer_rx_lock *peer;
  #else
  struct rx_connection {
!     struct rx_connection *next;	/*  on hash chain _or_ free list */
      struct rx_peer *peer;
  #endif
  #ifdef	RX_ENABLE_LOCKS
***************
*** 244,250 ****
      afs_kcondvar_t conn_call_cv;
      afs_kmutex_t conn_data_lock;	/* locks packet data */
  #endif
-     afs_uint32 nclones; /* count of clone connections (if not a clone) */
      afs_uint32 epoch;		/* Process start time of client side of connection */
      afs_uint32 cid;		/* Connection id (call channel is bottom bits) */
      afs_int32 error;		/* If this connection is in error, this is it */
--- 228,233 ----
***************
*** 444,450 ****
  #define RX_CONN_RESET		   16	/* connection is reset, remove */
  #define RX_CONN_BUSY               32	/* connection is busy; don't delete */
  #define RX_CONN_ATTACHWAIT	   64	/* attach waiting for peer-&gt;lastReach */
- #define RX_CLONED_CONNECTION	  128   /* connection is a clone */
  
  /* Type of connection, client or server */
  #define	RX_CLIENT_CONNECTION	0
--- 427,432 ----
Index: openafs/src/rx/rx_globals.h
diff -c openafs/src/rx/rx_globals.h:1.21.2.10 openafs/src/rx/rx_globals.h:1.21.2.11
*** openafs/src/rx/rx_globals.h:1.21.2.10	Tue May 20 17:59:02 2008
--- openafs/src/rx/rx_globals.h	Tue Jul 22 00:18:28 2008
***************
*** 591,609 ****
   */
  EXT int rx_enable_hot_thread GLOBALSINIT(0);
  
- /*
-  * Set rx_max_clones_per_connection to a value &gt; 0 to enable connection clone 
-  * workaround to RX_MAXCALLS limit.
-  */
-  
- #define RX_HARD_MAX_CLONES 10
- 
- /* Should be syncd before 1.6.0 */
- #if defined(AFS_NT40_ENV)
- EXT int rx_max_clones_per_connection GLOBALSINIT(0);
- #else
- EXT int rx_max_clones_per_connection GLOBALSINIT(2);
- #endif
- 
  EXT int RX_IPUDP_SIZE GLOBALSINIT(_RX_IPUDP_SIZE);
  #endif /* AFS_RX_GLOBALS_H */
--- 591,595 ----
Index: openafs/src/tvolser/Makefile.in
diff -c openafs/src/tvolser/Makefile.in:1.4.2.2 openafs/src/tvolser/Makefile.in:1.4.2.3
*** openafs/src/tvolser/Makefile.in:1.4.2.2	Thu Apr  3 12:17:58 2008
--- openafs/src/tvolser/Makefile.in	Thu Jul 17 20:24:13 2008
***************
*** 233,239 ****
  ${DEST}/root.server/usr/afs/bin/vos: vos
  	${INSTALL} -ns $? $@
  
! install: ${DESTDIR}${afssrvlibexecdir}/volserver ${DESTDIR}${afssrvlibexecdir}/vos
  clean:
  	$(RM) -f *.o volserver vos core AFS_component_version_number.c
  
--- 233,239 ----
  ${DEST}/root.server/usr/afs/bin/vos: vos
  	${INSTALL} -ns $? $@
  
! install: ${DESTDIR}${afssrvlibexecdir}/volserver ${DESTDIR}${afssrvsbindir}/vos
  clean:
  	$(RM) -f *.o volserver vos core AFS_component_version_number.c
  
***************
*** 242,248 ****
  ${DESTDIR}${afssrvlibexecdir}/volserver: volserver
  	${INSTALL} -ns $? $@
  
! ${DESTDIR}${afssrvlibexecdir}/vos: vos
  	${INSTALL} -ns $? $@
  
  dest: ${DEST}/root.server/usr/afs/bin/volserver ${DEST}/root.server/usr/afs/bin/vos
--- 242,248 ----
  ${DESTDIR}${afssrvlibexecdir}/volserver: volserver
  	${INSTALL} -ns $? $@
  
! ${DESTDIR}${afssrvsbindir}/vos: vos
  	${INSTALL} -ns $? $@
  
  dest: ${DEST}/root.server/usr/afs/bin/volserver ${DEST}/root.server/usr/afs/bin/vos
Index: openafs/src/ubik/beacon.c
diff -c openafs/src/ubik/beacon.c:1.21.8.5 openafs/src/ubik/beacon.c:1.21.8.6
*** openafs/src/ubik/beacon.c:1.21.8.5	Wed Apr  9 12:40:01 2008
--- openafs/src/ubik/beacon.c	Sat Jul 19 02:15:02 2008
***************
*** 11,17 ****
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/ubik/beacon.c,v 1.21.8.5 2008/04/09 16:40:01 shadow Exp $");
  
  #include &lt;sys/types.h&gt;
  #ifdef AFS_NT40_ENV
--- 11,17 ----
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/ubik/beacon.c,v 1.21.8.6 2008/07/19 06:15:02 rra Exp $");
  
  #include &lt;sys/types.h&gt;
  #ifdef AFS_NT40_ENV
***************
*** 330,336 ****
  		temp = POLLTIME;
  	    tt.tv_sec = temp;
  	    tt.tv_usec = 0;
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	    code = select(0, 0, 0, 0, &amp;tt);
  #else
  	    code = IOMGR_Select(0, 0, 0, 0, &amp;tt);
--- 330,336 ----
  		temp = POLLTIME;
  	    tt.tv_sec = temp;
  	    tt.tv_usec = 0;
! #ifdef AFS_PTHREAD_ENV
  	    code = select(0, 0, 0, 0, &amp;tt);
  #else
  	    code = IOMGR_Select(0, 0, 0, 0, &amp;tt);
***************
*** 451,462 ****
  	    ubik_amSyncSite = 1;
  	    syncSiteUntil = oldestYesVote + SMALLTIME;
  #ifndef AFS_PTHREAD_ENV
- #ifndef UBIK_PTHREAD_ENV
  		/* I did not find a corresponding LWP_WaitProcess(&amp;ubik_amSyncSite) --
  		   this may be a spurious signal call -- sjenkins */
  		LWP_NoYieldSignal(&amp;ubik_amSyncSite);
  #endif
- #endif
  	} else {
  	    if (ubik_amSyncSite)
  		ubik_dprint("Ubik: I am no longer the sync site\n");
--- 451,460 ----
Index: openafs/src/ubik/disk.c
diff -c openafs/src/ubik/disk.c:1.15.4.2 openafs/src/ubik/disk.c:1.15.4.3
*** openafs/src/ubik/disk.c:1.15.4.2	Wed Apr  2 15:51:56 2008
--- openafs/src/ubik/disk.c	Sat Jul 19 02:15:02 2008
***************
*** 11,17 ****
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/ubik/disk.c,v 1.15.4.2 2008/04/02 19:51:56 shadow Exp $");
  
  #include &lt;sys/types.h&gt;
  #ifdef AFS_NT40_ENV
--- 11,17 ----
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/ubik/disk.c,v 1.15.4.3 2008/07/19 06:15:02 rra Exp $");
  
  #include &lt;sys/types.h&gt;
  #ifdef AFS_NT40_ENV
***************
*** 798,804 ****
  	}
  
  	dbase-&gt;version.counter++;	/* bump commit count */
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	assert(pthread_cond_broadcast(&amp;dbase-&gt;version_cond) == 0);
  #else
  	LWP_NoYieldSignal(&amp;dbase-&gt;version);
--- 798,804 ----
  	}
  
  	dbase-&gt;version.counter++;	/* bump commit count */
! #ifdef AFS_PTHREAD_ENV
  	assert(pthread_cond_broadcast(&amp;dbase-&gt;version_cond) == 0);
  #else
  	LWP_NoYieldSignal(&amp;dbase-&gt;version);
***************
*** 918,924 ****
      free(atrans);
  
      /* Wakeup any writers waiting in BeginTrans() */
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	assert(pthread_cond_broadcast(&amp;dbase-&gt;flags_cond) == 0);
  #else
      LWP_NoYieldSignal(&amp;dbase-&gt;flags);
--- 918,924 ----
      free(atrans);
  
      /* Wakeup any writers waiting in BeginTrans() */
! #ifdef AFS_PTHREAD_ENV
  	assert(pthread_cond_broadcast(&amp;dbase-&gt;flags_cond) == 0);
  #else
      LWP_NoYieldSignal(&amp;dbase-&gt;flags);
Index: openafs/src/ubik/phys.c
diff -c openafs/src/ubik/phys.c:1.9.2.4 openafs/src/ubik/phys.c:1.9.2.5
*** openafs/src/ubik/phys.c:1.9.2.4	Mon Apr 28 17:48:11 2008
--- openafs/src/ubik/phys.c	Sat Jul 19 02:15:02 2008
***************
*** 11,17 ****
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/ubik/phys.c,v 1.9.2.4 2008/04/28 21:48:11 shadow Exp $");
  
  #include &lt;sys/types.h&gt;
  #ifdef AFS_NT40_ENV
--- 11,17 ----
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/ubik/phys.c,v 1.9.2.5 2008/07/19 06:15:02 rra Exp $");
  
  #include &lt;sys/types.h&gt;
  #ifdef AFS_NT40_ENV
***************
*** 24,30 ****
  #endif
  #include &lt;sys/stat.h&gt;
  
! /* #if defined (AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV) */
  #if 0   /* temporary hack - klm */
  /* nothing */
  #else
--- 24,30 ----
  #endif
  #include &lt;sys/stat.h&gt;
  
! /* #ifdef AFS_PTHREAD_ENV */
  #if 0   /* temporary hack - klm */
  /* nothing */
  #else
Index: openafs/src/ubik/recovery.c
diff -c openafs/src/ubik/recovery.c:1.14.4.7 openafs/src/ubik/recovery.c:1.14.4.8
*** openafs/src/ubik/recovery.c:1.14.4.7	Mon Apr 28 17:48:11 2008
--- openafs/src/ubik/recovery.c	Sat Jul 19 02:15:02 2008
***************
*** 11,17 ****
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/ubik/recovery.c,v 1.14.4.7 2008/04/28 21:48:11 shadow Exp $");
  
  #include &lt;sys/types.h&gt;
  #ifdef AFS_NT40_ENV
--- 11,17 ----
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/ubik/recovery.c,v 1.14.4.8 2008/07/19 06:15:02 rra Exp $");
  
  #include &lt;sys/types.h&gt;
  #ifdef AFS_NT40_ENV
***************
*** 72,78 ****
  urecovery_ResetState(void)
  {
      urecovery_state = 0;
! #if !defined(AFS_PTHREAD_ENV) || !defined(UBIK_PTHREAD_ENV)
      /*  No corresponding LWP_WaitProcess found anywhere for this -- klm */
      LWP_NoYieldSignal(&amp;urecovery_state);
  #endif
--- 72,78 ----
  urecovery_ResetState(void)
  {
      urecovery_state = 0;
! #if !defined(AFS_PTHREAD_ENV)
      /*  No corresponding LWP_WaitProcess found anywhere for this -- klm */
      LWP_NoYieldSignal(&amp;urecovery_state);
  #endif
***************
*** 86,92 ****
  int
  urecovery_LostServer(void)
  {
! #if !defined(AFS_PTHREAD_ENV) || !defined(UBIK_PTHREAD_ENV)
      /*  No corresponding LWP_WaitProcess found anywhere for this -- klm */
      LWP_NoYieldSignal(&amp;urecovery_state);
      return 0;
--- 86,92 ----
  int
  urecovery_LostServer(void)
  {
! #if !defined(AFS_PTHREAD_ENV)
      /*  No corresponding LWP_WaitProcess found anywhere for this -- klm */
      LWP_NoYieldSignal(&amp;urecovery_state);
      return 0;
***************
*** 369,375 ****
  	    adbase-&gt;version.counter = 0;
  	    (*adbase-&gt;setlabel) (adbase, 0, &amp;adbase-&gt;version);
  	}
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	assert(pthread_cond_broadcast(&amp;adbase-&gt;version_cond) == 0);
  #else
  	LWP_NoYieldSignal(&amp;adbase-&gt;version);
--- 369,375 ----
  	    adbase-&gt;version.counter = 0;
  	    (*adbase-&gt;setlabel) (adbase, 0, &amp;adbase-&gt;version);
  	}
! #ifdef AFS_PTHREAD_ENV
  	assert(pthread_cond_broadcast(&amp;adbase-&gt;version_cond) == 0);
  #else
  	LWP_NoYieldSignal(&amp;adbase-&gt;version);
***************
*** 453,459 ****
  	/* Run through this loop every 4 seconds */
  	tv.tv_sec = 4;
  	tv.tv_usec = 0;
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	select(0, 0, 0, 0, &amp;tv);
  #else
  	IOMGR_Select(0, 0, 0, 0, &amp;tv);
--- 453,459 ----
  	/* Run through this loop every 4 seconds */
  	tv.tv_sec = 4;
  	tv.tv_usec = 0;
! #ifdef AFS_PTHREAD_ENV
  	select(0, 0, 0, 0, &amp;tv);
  #else
  	IOMGR_Select(0, 0, 0, 0, &amp;tv);
***************
*** 694,700 ****
  		urecovery_state |= UBIK_RECHAVEDB;
  	    }
  	    udisk_Invalidate(ubik_dbase, 0);	/* data has changed */
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	    assert(pthread_cond_broadcast(&amp;ubik_dbase-&gt;version_cond) == 0);
  #else
  	    LWP_NoYieldSignal(&amp;ubik_dbase-&gt;version);
--- 694,700 ----
  		urecovery_state |= UBIK_RECHAVEDB;
  	    }
  	    udisk_Invalidate(ubik_dbase, 0);	/* data has changed */
! #ifdef AFS_PTHREAD_ENV
  	    assert(pthread_cond_broadcast(&amp;ubik_dbase-&gt;version_cond) == 0);
  #else
  	    LWP_NoYieldSignal(&amp;ubik_dbase-&gt;version);
***************
*** 722,728 ****
  	    code =
  		(*ubik_dbase-&gt;setlabel) (ubik_dbase, 0, &amp;ubik_dbase-&gt;version);
  	    udisk_Invalidate(ubik_dbase, 0);	/* data may have changed */
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	    assert(pthread_cond_broadcast(&amp;ubik_dbase-&gt;version_cond) == 0);
  #else
  	    LWP_NoYieldSignal(&amp;ubik_dbase-&gt;version);
--- 722,728 ----
  	    code =
  		(*ubik_dbase-&gt;setlabel) (ubik_dbase, 0, &amp;ubik_dbase-&gt;version);
  	    udisk_Invalidate(ubik_dbase, 0);	/* data may have changed */
! #ifdef AFS_PTHREAD_ENV
  	    assert(pthread_cond_broadcast(&amp;ubik_dbase-&gt;version_cond) == 0);
  #else
  	    LWP_NoYieldSignal(&amp;ubik_dbase-&gt;version);
***************
*** 755,761 ****
  		while ((ubik_dbase-&gt;flags &amp; DBWRITING) &amp;&amp; (safety &lt; 500)) {
  		    DBRELE(ubik_dbase);
  		    /* sleep for a little while */
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  		    select(0, 0, 0, 0, &amp;tv);
  #else
  		    IOMGR_Select(0, 0, 0, 0, &amp;tv);
--- 755,761 ----
  		while ((ubik_dbase-&gt;flags &amp; DBWRITING) &amp;&amp; (safety &lt; 500)) {
  		    DBRELE(ubik_dbase);
  		    /* sleep for a little while */
! #ifdef AFS_PTHREAD_ENV
  		    select(0, 0, 0, 0, &amp;tv);
  #else
  		    IOMGR_Select(0, 0, 0, 0, &amp;tv);
Index: openafs/src/ubik/remote.c
diff -c openafs/src/ubik/remote.c:1.15.4.6 openafs/src/ubik/remote.c:1.15.4.7
*** openafs/src/ubik/remote.c:1.15.4.6	Mon Apr 28 17:48:11 2008
--- openafs/src/ubik/remote.c	Sat Jul 19 02:15:02 2008
***************
*** 11,17 ****
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/ubik/remote.c,v 1.15.4.6 2008/04/28 21:48:11 shadow Exp $");
  
  #include &lt;sys/types.h&gt;
  #ifdef AFS_NT40_ENV
--- 11,17 ----
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/ubik/remote.c,v 1.15.4.7 2008/07/19 06:15:02 rra Exp $");
  
  #include &lt;sys/types.h&gt;
  #ifdef AFS_NT40_ENV
***************
*** 628,634 ****
  #endif
      memcpy(&amp;ubik_dbase-&gt;version, avers, sizeof(struct ubik_version));
      udisk_Invalidate(dbase, file);	/* new dbase, flush disk buffers */
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
      assert(pthread_cond_broadcast(&amp;dbase-&gt;version_cond) == 0);
  #else
      LWP_NoYieldSignal(&amp;dbase-&gt;version);
--- 628,634 ----
  #endif
      memcpy(&amp;ubik_dbase-&gt;version, avers, sizeof(struct ubik_version));
      udisk_Invalidate(dbase, file);	/* new dbase, flush disk buffers */
! #ifdef AFS_PTHREAD_ENV
      assert(pthread_cond_broadcast(&amp;dbase-&gt;version_cond) == 0);
  #else
      LWP_NoYieldSignal(&amp;dbase-&gt;version);
Index: openafs/src/ubik/ubik.c
diff -c openafs/src/ubik/ubik.c:1.15.14.6 openafs/src/ubik/ubik.c:1.15.14.7
*** openafs/src/ubik/ubik.c:1.15.14.6	Mon Jun 30 23:06:20 2008
--- openafs/src/ubik/ubik.c	Sat Jul 19 02:15:02 2008
***************
*** 11,17 ****
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/ubik/ubik.c,v 1.15.14.6 2008/07/01 03:06:20 shadow Exp $");
  
  #include &lt;sys/types.h&gt;
  #ifdef AFS_NT40_ENV
--- 11,17 ----
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/ubik/ubik.c,v 1.15.14.7 2008/07/19 06:15:02 rra Exp $");
  
  #include &lt;sys/types.h&gt;
  #ifdef AFS_NT40_ENV
***************
*** 189,195 ****
  {
      register struct ubik_dbase *tdb;
      register afs_int32 code;
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
      pthread_t rxServerThread;        /* pthread variables */
      pthread_t ubeacon_InteractThread;
      pthread_t urecovery_InteractThread;
--- 189,195 ----
  {
      register struct ubik_dbase *tdb;
      register afs_int32 code;
! #ifdef AFS_PTHREAD_ENV
      pthread_t rxServerThread;        /* pthread variables */
      pthread_t ubeacon_InteractThread;
      pthread_t urecovery_InteractThread;
***************
*** 290,296 ****
       * UpdateInterfaceAddr RPC that occurs in ubeacon_InitServerList. This avoids
       * the "steplock" problem in ubik initialization. Defect 11037.
       */
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  /* do assert stuff */
      assert(pthread_attr_init(&amp;rxServer_tattr) == 0);
      assert(pthread_attr_setdetachstate(&amp;rxServer_tattr, PTHREAD_CREATE_DETACHED) == 0);
--- 290,296 ----
       * UpdateInterfaceAddr RPC that occurs in ubeacon_InitServerList. This avoids
       * the "steplock" problem in ubik initialization. Defect 11037.
       */
! #ifdef AFS_PTHREAD_ENV
  /* do assert stuff */
      assert(pthread_attr_init(&amp;rxServer_tattr) == 0);
      assert(pthread_attr_setdetachstate(&amp;rxServer_tattr, PTHREAD_CREATE_DETACHED) == 0);
***************
*** 317,323 ****
  	return code;
  
      /* now start up async processes */
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  /* do assert stuff */
      assert(pthread_attr_init(&amp;ubeacon_Interact_tattr) == 0);
      assert(pthread_attr_setdetachstate(&amp;ubeacon_Interact_tattr, PTHREAD_CREATE_DETACHED) == 0);
--- 317,323 ----
  	return code;
  
      /* now start up async processes */
! #ifdef AFS_PTHREAD_ENV
  /* do assert stuff */
      assert(pthread_attr_init(&amp;ubeacon_Interact_tattr) == 0);
      assert(pthread_attr_setdetachstate(&amp;ubeacon_Interact_tattr, PTHREAD_CREATE_DETACHED) == 0);
***************
*** 334,340 ****
  	return code;
  #endif
  
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  /* do assert stuff */
      assert(pthread_attr_init(&amp;urecovery_Interact_tattr) == 0);
      assert(pthread_attr_setdetachstate(&amp;urecovery_Interact_tattr, PTHREAD_CREATE_DETACHED) == 0);
--- 334,340 ----
  	return code;
  #endif
  
! #ifdef AFS_PTHREAD_ENV
  /* do assert stuff */
      assert(pthread_attr_init(&amp;urecovery_Interact_tattr) == 0);
      assert(pthread_attr_setdetachstate(&amp;urecovery_Interact_tattr, PTHREAD_CREATE_DETACHED) == 0);
***************
*** 427,433 ****
  #endif
  		return UNOQUORUM;	/* a white lie */
  	    }
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	    sleep(2);
  #else
  	    IOMGR_Sleep(2);
--- 427,433 ----
  #endif
  		return UNOQUORUM;	/* a white lie */
  	    }
! #ifdef AFS_PTHREAD_ENV
  	    sleep(2);
  #else
  	    IOMGR_Sleep(2);
***************
*** 449,455 ****
  	/* if we're writing already, wait */
  	while (dbase-&gt;flags &amp; DBWRITING) {
  	    DBRELE(dbase);
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	    assert(pthread_mutex_lock(&amp;dbase-&gt;flags_mutex) == 0);
  	    assert(pthread_cond_wait(&amp;dbase-&gt;flags_cond, &amp;dbase-&gt;flags_mutex) == 0);
  	    assert(pthread_mutex_unlock(&amp;dbase-&gt;flags_mutex) == 0);
--- 449,455 ----
  	/* if we're writing already, wait */
  	while (dbase-&gt;flags &amp; DBWRITING) {
  	    DBRELE(dbase);
! #ifdef AFS_PTHREAD_ENV
  	    assert(pthread_mutex_lock(&amp;dbase-&gt;flags_mutex) == 0);
  	    assert(pthread_cond_wait(&amp;dbase-&gt;flags_cond, &amp;dbase-&gt;flags_mutex) == 0);
  	    assert(pthread_mutex_unlock(&amp;dbase-&gt;flags_mutex) == 0);
***************
*** 644,650 ****
  		code = 1;
  		tv.tv_sec = 1;	/* try again after a while (ha ha) */
  		tv.tv_usec = 0;
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  		select(0, 0, 0, 0, &amp;tv);
  #else
  		IOMGR_Select(0, 0, 0, 0, &amp;tv);	/* poll, should we wait on something? */
--- 644,650 ----
  		code = 1;
  		tv.tv_sec = 1;	/* try again after a while (ha ha) */
  		tv.tv_usec = 0;
! #ifdef AFS_PTHREAD_ENV
  		select(0, 0, 0, 0, &amp;tv);
  #else
  		IOMGR_Select(0, 0, 0, 0, &amp;tv);	/* poll, should we wait on something? */
***************
*** 952,958 ****
  	/* wait until version # changes, and then return */
  	if (vcmp(*aversion, adatabase-&gt;version) != 0)
  	    return 0;
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	assert(pthread_mutex_lock(&amp;adatabase-&gt;version_mutex) == 0);
  	assert(pthread_cond_wait(&amp;adatabase-&gt;version_cond,&amp;adatabase-&gt;version_mutex) == 0);
  	assert(pthread_mutex_unlock(&amp;adatabase-&gt;version_mutex) == 0);
--- 952,958 ----
  	/* wait until version # changes, and then return */
  	if (vcmp(*aversion, adatabase-&gt;version) != 0)
  	    return 0;
! #ifdef AFS_PTHREAD_ENV
  	assert(pthread_mutex_lock(&amp;adatabase-&gt;version_mutex) == 0);
  	assert(pthread_cond_wait(&amp;adatabase-&gt;version_cond,&amp;adatabase-&gt;version_mutex) == 0);
  	assert(pthread_mutex_unlock(&amp;adatabase-&gt;version_mutex) == 0);
Index: openafs/src/ubik/ubik.p.h
diff -c openafs/src/ubik/ubik.p.h:1.18.8.4 openafs/src/ubik/ubik.p.h:1.18.8.5
*** openafs/src/ubik/ubik.p.h:1.18.8.4	Mon Apr 28 17:48:11 2008
--- openafs/src/ubik/ubik.p.h	Sat Jul 19 02:15:02 2008
***************
*** 172,178 ****
      int (*getnfiles) (struct ubik_dbase * adbase);	/* find out number of files */
      short readers;		/* number of current read transactions */
      struct ubik_version cachedVersion;	/* version of caller's cached data */
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
      pthread_cond_t version_cond;    /* condition variable to manage changes to version */
      pthread_cond_t flags_cond;      /* condition variable to manage changes to flags */
    pthread_mutex_t version_mutex;
--- 172,178 ----
      int (*getnfiles) (struct ubik_dbase * adbase);	/* find out number of files */
      short readers;		/* number of current read transactions */
      struct ubik_version cachedVersion;	/* version of caller's cached data */
! #ifdef AFS_PTHREAD_ENV
      pthread_cond_t version_cond;    /* condition variable to manage changes to version */
      pthread_cond_t flags_cond;      /* condition variable to manage changes to flags */
    pthread_mutex_t version_mutex;
Index: openafs/src/ubik/utst_client.c
diff -c openafs/src/ubik/utst_client.c:1.7.14.2 openafs/src/ubik/utst_client.c:1.7.14.3
*** openafs/src/ubik/utst_client.c:1.7.14.2	Wed Apr  2 15:51:56 2008
--- openafs/src/ubik/utst_client.c	Sat Jul 19 02:15:02 2008
***************
*** 11,17 ****
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/ubik/utst_client.c,v 1.7.14.2 2008/04/02 19:51:56 shadow Exp $");
  
  #include &lt;sys/types.h&gt;
  #ifdef AFS_NT40_ENV
--- 11,17 ----
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/ubik/utst_client.c,v 1.7.14.3 2008/07/19 06:15:02 rra Exp $");
  
  #include &lt;sys/types.h&gt;
  #ifdef AFS_NT40_ENV
***************
*** 149,155 ****
  
  		tv.tv_sec = 1;
  		tv.tv_usec = 0;
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  		select(0, 0, 0, 0, &amp;tv);
  #else
  		IOMGR_Select(0, 0, 0, 0, &amp;tv);
--- 149,155 ----
  
  		tv.tv_sec = 1;
  		tv.tv_usec = 0;
! #ifdef AFS_PTHREAD_ENV
  		select(0, 0, 0, 0, &amp;tv);
  #else
  		IOMGR_Select(0, 0, 0, 0, &amp;tv);
***************
*** 176,182 ****
  
  		tv.tv_sec = 1;
  		tv.tv_usec = 0;
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  		select(0, 0, 0, 0, &amp;tv);
  #else
  		IOMGR_Select(0, 0, 0, 0, &amp;tv);
--- 176,182 ----
  
  		tv.tv_sec = 1;
  		tv.tv_usec = 0;
! #ifdef AFS_PTHREAD_ENV
  		select(0, 0, 0, 0, &amp;tv);
  #else
  		IOMGR_Select(0, 0, 0, 0, &amp;tv);
Index: openafs/src/ubik/utst_server.c
diff -c openafs/src/ubik/utst_server.c:1.8.14.2 openafs/src/ubik/utst_server.c:1.8.14.3
*** openafs/src/ubik/utst_server.c:1.8.14.2	Wed Apr  2 15:51:57 2008
--- openafs/src/ubik/utst_server.c	Sat Jul 19 02:15:02 2008
***************
*** 11,17 ****
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/ubik/utst_server.c,v 1.8.14.2 2008/04/02 19:51:57 shadow Exp $");
  
  #include &lt;afs/stds.h&gt;
  #include &lt;sys/types.h&gt;
--- 11,17 ----
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/ubik/utst_server.c,v 1.8.14.3 2008/07/19 06:15:02 rra Exp $");
  
  #include &lt;afs/stds.h&gt;
  #include &lt;sys/types.h&gt;
***************
*** 62,68 ****
      if (sleepTime) {
  	tv.tv_sec = sleepTime;
  	tv.tv_usec = 0;
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	select(0, 0, 0, 0, &amp;tv);
  #else
  	IOMGR_Select(0, 0, 0, 0, &amp;tv);
--- 62,68 ----
      if (sleepTime) {
  	tv.tv_sec = sleepTime;
  	tv.tv_usec = 0;
! #ifdef AFS_PTHREAD_ENV
  	select(0, 0, 0, 0, &amp;tv);
  #else
  	IOMGR_Select(0, 0, 0, 0, &amp;tv);
***************
*** 122,128 ****
      if (sleepTime) {
  	tv.tv_sec = sleepTime;
  	tv.tv_usec = 0;
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	select(0, 0, 0, 0, &amp;tv);
  #else
  	IOMGR_Select(0, 0, 0, 0, &amp;tv);
--- 122,128 ----
      if (sleepTime) {
  	tv.tv_sec = sleepTime;
  	tv.tv_usec = 0;
! #ifdef AFS_PTHREAD_ENV
  	select(0, 0, 0, 0, &amp;tv);
  #else
  	IOMGR_Select(0, 0, 0, 0, &amp;tv);
***************
*** 169,175 ****
      if (sleepTime) {
  	tv.tv_sec = sleepTime;
  	tv.tv_usec = 0;
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	select(0, 0, 0, 0, &amp;tv);
  #else
  	IOMGR_Select(0, 0, 0, 0, &amp;tv);
--- 169,175 ----
      if (sleepTime) {
  	tv.tv_sec = sleepTime;
  	tv.tv_usec = 0;
! #ifdef AFS_PTHREAD_ENV
  	select(0, 0, 0, 0, &amp;tv);
  #else
  	IOMGR_Select(0, 0, 0, 0, &amp;tv);
***************
*** 213,219 ****
      if (sleepTime) {
  	tv.tv_sec = sleepTime;
  	tv.tv_usec = 0;
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	select(0, 0, 0, 0, &amp;tv);
  #else
  	IOMGR_Select(0, 0, 0, 0, &amp;tv);
--- 213,219 ----
      if (sleepTime) {
  	tv.tv_sec = sleepTime;
  	tv.tv_usec = 0;
! #ifdef AFS_PTHREAD_ENV
  	select(0, 0, 0, 0, &amp;tv);
  #else
  	IOMGR_Select(0, 0, 0, 0, &amp;tv);
***************
*** 258,264 ****
      if (sleepTime) {
  	tv.tv_sec = sleepTime;
  	tv.tv_usec = 0;
! #if defined(AFS_PTHREAD_ENV) &amp;&amp; defined(UBIK_PTHREAD_ENV)
  	select(0, 0, 0, 0, &amp;tv);
  #else
  	IOMGR_Select(0, 0, 0, 0, &amp;tv);
--- 258,264 ----
      if (sleepTime) {
  	tv.tv_sec = sleepTime;
  	tv.tv_usec = 0;
! #ifdef AFS_PTHREAD_ENV
  	select(0, 0, 0, 0, &amp;tv);
  #else
  	IOMGR_Select(0, 0, 0, 0, &amp;tv);
Index: openafs/src/vol/vol-salvage.c
diff -c openafs/src/vol/vol-salvage.c:1.51.2.15 openafs/src/vol/vol-salvage.c:1.51.2.16
*** openafs/src/vol/vol-salvage.c:1.51.2.15	Thu Jun 12 15:18:50 2008
--- openafs/src/vol/vol-salvage.c	Mon Jul 28 08:58:42 2008
***************
*** 87,93 ****
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/vol/vol-salvage.c,v 1.51.2.15 2008/06/12 19:18:50 shadow Exp $");
  
  #ifndef AFS_NT40_ENV
  #include &lt;sys/param.h&gt;
--- 87,93 ----
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/vol/vol-salvage.c,v 1.51.2.16 2008/07/28 12:58:42 shadow Exp $");
  
  #ifndef AFS_NT40_ENV
  #include &lt;sys/param.h&gt;
***************
*** 1288,1294 ****
  			|| vsp-&gt;header.parent == singleVolumeNumber)) {
  		    (void)afs_snprintf(nameShouldBe, sizeof nameShouldBe,
  				       VFORMAT, vsp-&gt;header.id);
! 		    if (singleVolumeNumber)
  			AskOffline(vsp-&gt;header.id, fileSysPartition-&gt;name);
  		    if (strcmp(nameShouldBe, dp-&gt;d_name)) {
  			if (!Showmode)
--- 1288,1295 ----
  			|| vsp-&gt;header.parent == singleVolumeNumber)) {
  		    (void)afs_snprintf(nameShouldBe, sizeof nameShouldBe,
  				       VFORMAT, vsp-&gt;header.id);
! 		    if (singleVolumeNumber 
! 			&amp;&amp; vsp-&gt;header.id != singleVolumeNumber)
  			AskOffline(vsp-&gt;header.id, fileSysPartition-&gt;name);
  		    if (strcmp(nameShouldBe, dp-&gt;d_name)) {
  			if (!Showmode)
***************
*** 2315,2324 ****
--- 2316,2327 ----
      struct VnodeClassInfo *vcp = &amp;VnodeClassInfo[vLarge];
      Inode oldinode, newinode;
      DirHandle newdir;
+     FdHandle_t *fdP;
      afs_int32 code;
      afs_sfsize_t lcode;
      afs_int32 parentUnique = 1;
      struct VnodeEssence *vnodeEssence;
+     afs_size_t length;
  
      if (Testing)
  	return;
***************
*** 2373,2379 ****
      }
      vnode.cloned = 0;
      VNDISK_SET_INO(&amp;vnode, newinode);
!     VNDISK_SET_LEN(&amp;vnode, Length(&amp;newdir));
      lcode =
  	IH_IWRITE(vnodeInfo[vLarge].handle,
  		  vnodeIndexOffset(vcp, dir-&gt;vnodeNumber), (char *)&amp;vnode,
--- 2376,2383 ----
      }
      vnode.cloned = 0;
      VNDISK_SET_INO(&amp;vnode, newinode);
!     length = Length(&amp;newdir);
!     VNDISK_SET_LEN(&amp;vnode, length);
      lcode =
  	IH_IWRITE(vnodeInfo[vLarge].handle,
  		  vnodeIndexOffset(vcp, dir-&gt;vnodeNumber), (char *)&amp;vnode,
***************
*** 2390,2395 ****
--- 2394,2403 ----
  #else
      vnodeInfo[vLarge].handle-&gt;ih_synced = 1;
  #endif
+     /* make sure old directory file is really closed */
+     fdP = IH_OPEN(dir-&gt;dirHandle.dirh_handle);
+     FDH_REALLYCLOSE(fdP);
+     
      code = IH_DEC(dir-&gt;ds_linkH, oldinode, dir-&gt;rwVid);
      assert(code == 0);
      dir-&gt;dirHandle = newdir;
Index: openafs/src/vol/volume.c
diff -c openafs/src/vol/volume.c:1.43.2.21 openafs/src/vol/volume.c:1.43.2.22
*** openafs/src/vol/volume.c:1.43.2.21	Thu Jun 12 15:18:50 2008
--- openafs/src/vol/volume.c	Mon Jul 28 08:58:42 2008
***************
*** 22,28 ****
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/vol/volume.c,v 1.43.2.21 2008/06/12 19:18:50 shadow Exp $");
  
  #include &lt;rx/xdr.h&gt;
  #include &lt;afs/afsint.h&gt;
--- 22,28 ----
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/vol/volume.c,v 1.43.2.22 2008/07/28 12:58:42 shadow Exp $");
  
  #include &lt;rx/xdr.h&gt;
  #include &lt;afs/afsint.h&gt;
***************
*** 3820,3828 ****
  int
  VVolOpSetVBusy_r(Volume * vp, FSSYNC_VolOp_info * vopinfo)
  {
!     return (vopinfo-&gt;com.command == FSYNC_VOL_NEEDVOLUME &amp;&amp;
  	    (vopinfo-&gt;com.reason == V_CLONE ||
! 	     vopinfo-&gt;com.reason == V_DUMP));
  }
  
  
--- 3820,3830 ----
  int
  VVolOpSetVBusy_r(Volume * vp, FSSYNC_VolOp_info * vopinfo)
  {
!     return ((vopinfo-&gt;com.command == FSYNC_VOL_OFF &amp;&amp;
! 	    vopinfo-&gt;com.reason == FSYNC_SALVAGE) ||
! 	    (vopinfo-&gt;com.command == FSYNC_VOL_NEEDVOLUME &amp;&amp;
  	    (vopinfo-&gt;com.reason == V_CLONE ||
! 	     vopinfo-&gt;com.reason == V_DUMP)));
  }
  
  
Index: openafs/src/volser/vos.c
diff -c openafs/src/volser/vos.c:1.55.2.17 openafs/src/volser/vos.c:1.55.2.18
*** openafs/src/volser/vos.c:1.55.2.17	Wed May 21 23:51:46 2008
--- openafs/src/volser/vos.c	Sat Jul 19 02:56:52 2008
***************
*** 11,17 ****
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/volser/vos.c,v 1.55.2.17 2008/05/22 03:51:46 shadow Exp $");
  
  #include &lt;sys/types.h&gt;
  #include &lt;string.h&gt;
--- 11,17 ----
  #include &lt;afs/param.h&gt;
  
  RCSID
!     ("$Header: /cvs/openafs/src/volser/vos.c,v 1.55.2.18 2008/07/19 06:56:52 rra Exp $");
  
  #include &lt;sys/types.h&gt;
  #include &lt;string.h&gt;
***************
*** 472,487 ****
      return (error);
  }
  
- #if SIZEOF_TIME_T!=4
  static char *
  vos_ctime(afs_int32 *timep)
  {
      time_t foo = *timep;
      return ctime(&amp;foo);
  }
- #else
- #define vos_ctime ctime
- #endif
  
  static void
  DisplayFormat(pntr, server, part, totalOK, totalNotOK, totalBusy, fast,
--- 472,483 ----
</pre></body></html>