--- openafs/src/NTMakefile:1.27.2.12	Sat Aug 16 13:59:03 2008
+++ openafs/src/NTMakefile	Thu Apr  2 03:41:50 2009
@@ -41,91 +41,91 @@
 DOCD=$(SRC)\DOLASTCMP.BAT
 
 config:
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\config
 	$(CD) $(SRC)\config
 	$(NTMAKE)
 	$(CD) ..\..
 
 procmgmt_headers: config
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\procmgmt
 	$(CD) $(SRC)\procmgmt
 	$(NTMAKE_HEADERS)
 	$(CD) ..\..
 
 afsreg_headers:
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\WINNT\afsreg
 	$(CD) $(SRC)\WINNT\afsreg
 	$(NTMAKE_HEADERS)
 	$(CD) ..\..\..
 
 lwp_headers:
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\lwp
 	$(CD) $(SRC)\lwp
 	$(NTMAKE_HEADERS)
 	$(CD) ..\..
 
 util: procmgmt_headers afsreg_headers lwp_headers
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 comerr: util
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 afs: comerr
-      echo ***** $@
+      @echo ***** $@
       $(DOCD) $(SRC)\afs
       $(CD) $(SRC)\afs
       $(NTMAKE)
       $(CD) ..\..
 
 cmd: afs
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 afsreg: cmd
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\WINNT\$@
 	$(CD) $(SRC)\WINNT\$@
 	$(NTMAKE)
 	$(CD) ..\..\..
 
 eventlog: afsreg
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\WINNT\$@
 	$(CD) $(SRC)\WINNT\$@
 	$(NTMAKE)
 	$(CD) ..\..\..
 
 lwp: eventlog
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 rxgen: lwp
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 des: rxgen
-     echo ***** $@
+     @echo ***** $@
 !	IF (EXIST($(SRC)\des\NTMakefile))
 		$(DOCD) $(SRC)\des
 		$(CD) $(SRC)\des
@@ -139,461 +139,461 @@
 !	ENDIF
 
 rx: des
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 rxdebug: rx
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 ubik_headers: rxdebug
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\ubik
 	$(CD) $(SRC)\ubik
 	$(NTMAKE_HEADERS)
 	$(CD) ..\..
 
 rxstat: ubik_headers
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 rxkad: rxstat
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 pthread: rxkad
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\WINNT\$@
 	$(CD) $(SRC)\WINNT\$@
 	$(NTMAKE)
 	$(CD) ..\..\..
 
 procmgmt: pthread
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 fsint: procmgmt
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 audit: fsint
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 osi_headers: audit
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\WINNT\client_osi
 	$(CD) $(SRC)\WINNT\client_osi
 	$(NTMAKE_HEADERS)
 	$(CD) ..\..\..
 
 libacl_headers: osi_headers
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\libacl
 	$(CD) $(SRC)\libacl
 	$(NTMAKE_HEADERS)
 	$(CD) ..\..
 
 cm_headers: libacl_headers
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\WINNT\afsd
 	$(CD) $(SRC)\WINNT\afsd
 	$(NTMAKE_HEADERS)
 	$(CD) ..\..\..
 
 auth_headers: cm_headers
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\auth
 	$(CD) $(SRC)\auth
 	$(NTMAKE_HEADERS)
 	$(CD) ..\..
 
 vlserver_headers: auth_headers
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\vlserver
 	$(CD) $(SRC)\vlserver
 	$(NTMAKE_HEADERS)
 	$(CD) ..\..
 
 afsdobjs: vlserver_headers
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\WINNT\afsd
 	$(CD) $(SRC)\WINNT\afsd
 	$(NTMAKE_OBJS)
 	$(CD) ..\..\..
 
 sys: afsdobjs
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 auth: sys
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..	
 
 ubik: auth
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..	
 
 ptserver: ubik
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..	
 
 libacl: ptserver
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 kauth: libacl
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 vlserver: kauth
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 usd: vlserver
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 bubasics: usd
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 budb:	bubasics
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 butm:  budb
-     echo ***** $@
+     @echo ***** $@
      $(DOCD) $(SRC)\$@
      $(CD) $(SRC)\$@
      $(NTMAKE)
      $(CD) ..\..
 
 dir: butm
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 vol: dir
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 volser: vol
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 viced: volser
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 update: viced
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 bucoord: update
-     echo ***** $@
+     @echo ***** $@
      $(DOCD) $(SRC)\$@
      $(CD) $(SRC)\$@
      $(NTMAKE)
      $(CD) ..\..
 
 butc:   bucoord
-     echo ***** $@
+     @echo ***** $@
      $(DOCD) $(SRC)\$@
      $(CD) $(SRC)\$@
      $(NTMAKE)
      $(CD) ..\..
 
 bozo: butc
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 bosctlsvc: bozo
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\WINNT\$@
 	$(CD) $(SRC)\WINNT\$@
 	$(NTMAKE)
 	$(CD) ..\..\..
 
 bu_utils: bosctlsvc
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 libafsrpc: bu_utils
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 libafsauthent: libafsrpc
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 tviced: libafsauthent
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 tbutc:  tviced
-     echo ***** $@
+     @echo ***** $@
      $(DOCD) $(SRC)\$@
      $(CD) $(SRC)\$@
      $(NTMAKE)
      $(CD) ..\..
 
 talocale: tbutc
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\WINNT\$@
 	$(CD) $(SRC)\WINNT\$@
 	$(NTMAKE)
 	$(CD) ..\..\..
 
 license: talocale
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\WINNT\$@
 	$(CD) $(SRC)\WINNT\$@
 	$(NTMAKE)
 	$(CD) ..\..\..
 
 client_osi: license
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\WINNT\$@
 	$(CD) $(SRC)\WINNT\$@
 	$(NTMAKE)
 	$(CD) ..\..\..
 
 afsd: client_osi
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\WINNT\$@
 	$(CD) $(SRC)\WINNT\$@
 	$(NTMAKE)
 	$(CD) ..\..\..
 
 libadmin: afsd
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 adminutil: libadmin
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\libadmin\$@
 	$(CD) $(SRC)\libadmin\$@
 	$(NTMAKE)
 	$(CD) ..\..\..
 
 vos: adminutil
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\libadmin\$@
 	$(CD) $(SRC)\libadmin\$@
 	$(NTMAKE)
 	$(CD) ..\..\..
 
 client: vos
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\libadmin\$@
 	$(CD) $(SRC)\libadmin\$@
 	$(NTMAKE)
 	$(CD) ..\..\..
 
 kas: client
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\libadmin\$@
 	$(CD) $(SRC)\libadmin\$@
 	$(NTMAKE)
 	$(CD) ..\..\..
 
 pts: kas
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\libadmin\$@
 	$(CD) $(SRC)\libadmin\$@
 	$(NTMAKE)
 	$(CD) ..\..\..
 
 bos: pts
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\libadmin\$@
 	$(CD) $(SRC)\libadmin\$@
 	$(NTMAKE)
 	$(CD) ..\..\..
 
 cfg: bos
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\libadmin\$@
 	$(CD) $(SRC)\libadmin\$@
 	$(NTMAKE)
 	$(CD) ..\..\..
 
 admintest: cfg
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\libadmin\test
 	$(CD) $(SRC)\libadmin\test
 	$(NTMAKE)
 	$(CD) ..\..\..
 
 afsadmsvr: admintest
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\WINNT\$@
 	$(CD) $(SRC)\WINNT\$@
 	$(NTMAKE)
 	$(CD) ..\..\..
 
 afsusrmgr: afsadmsvr
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\WINNT\$@
 	$(CD) $(SRC)\WINNT\$@
 	$(NTMAKE)
 	$(CD) ..\..\..
 
 afssvrmgr: afsusrmgr
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\WINNT\$@
 	$(CD) $(SRC)\WINNT\$@
 	$(NTMAKE)
 	$(CD) ..\..\..
 
 afssvrcfg: afssvrmgr
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\WINNT\$@
 	$(CD) $(SRC)\WINNT\$@
 	$(NTMAKE)
 	$(CD) ..\..\..
 
 afssvrcpa: afssvrcfg
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\WINNT\$@
 	$(CD) $(SRC)\WINNT\$@
 	$(NTMAKE)
 	$(CD) ..\..\..
 
 client_talocale: afssvrcpa
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\WINNT\talocale
 	$(CD) $(SRC)\WINNT\talocale
 	$(NTMAKE)
 	$(CD) ..\..\..
 
 client_cpa: client_talocale
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\WINNT\$@
 	$(CD) $(SRC)\WINNT\$@
 	$(NTMAKE)
 	$(CD) ..\..\..
 
 client_config: client_cpa
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\WINNT\$@
 	$(CD) $(SRC)\WINNT\$@
 	$(NTMAKE)
 	$(CD) ..\..\..
 
 client_exp: client_config
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\WINNT\$@
 	$(CD) $(SRC)\WINNT\$@
 	$(NTMAKE)
 	$(CD) ..\..\..
 
 client_creds: client_exp
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\WINNT\$@
 	$(CD) $(SRC)\WINNT\$@
 	$(NTMAKE)
 	$(CD) ..\..\..
 
 aklog: client_creds
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\WINNT\$@
 	$(CD) $(SRC)\WINNT\$@
 	$(NTMAKE)
 	$(CD) ..\..\..
 
 xstat: aklog
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 netidmgr_plugin: xstat
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\WINNT\$@
 	$(CD) $(SRC)\WINNT\$@
 	$(NTMAKE)
@@ -601,24 +601,24 @@
 
 extra: netidmgr_plugin
 !	IF EXIST($(SRC)\WINNT\extra) && EXIST($(SRC)\WINNT\extra\NTMakefile)
-     echo ***** $@
+     @echo ***** $@
     $(DOCD) $(SRC)\WINNT\$@
 	$(CD) $(SRC)\WINNT\$@
 	$(NTMAKE)
 	$(CD) ..\..\..
 !	ELSE
-     echo ***** Skipping $@ ***** Not found.
+     @echo ***** Skipping $@ ***** Not found.
 !	ENDIF
                 
 finale: extra
-     echo ***** $@
+     @echo ***** $@
 	$(DOCD) $(SRC)\$@
 	$(CD) $(SRC)\$@
 	$(NTMAKE)
 	$(CD) ..\..
 
 install: finale
-	echo Build Finished Successfully
+	@echo Build Finished Successfully
         
 
 # Clean target for obj tree
@@ -647,28 +647,33 @@
 	-@copy $(SRC)\config\NTLANG.BAT .
 
 loopback:
-   echo ***** Making Loopback Adapter Utility DLL
+   @echo ***** Making Loopback Adapter Utility DLL
    $(DOCD) $(SRC)\WINNT\install\$@
    $(CD) $(SRC)\WINNT\install\$@
    $(NTMAKE)
    $(CD) ..\..\..\..
 
 man-pages: 
-   echo ***** $@
+   @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\$@
+NSIS.i386: loopback man-pages
+   @echo ***** Making NSIS Installer
+   $(DOCD) $(SRC)\WINNT\install\NSIS
+   $(CD) $(SRC)\WINNT\install\NSIS
    $(NTMAKE)
    $(CD) ..\..\..\..
 
+NSIS.AMD64:
+   @echo Skipping NSIS Installer on non-x86 platforms; not implemented
+
+NSIS: NSIS.$(CPU)
+
 wix: loopback man-pages
-   echo ***** Making Wix MSI Installer
+   @echo ***** Making Wix MSI Installer
    $(DOCD) $(SRC)\WINNT\install\$@
    $(CD) $(SRC)\WINNT\install\$@
    $(NTMAKE)
--- openafs/src/WINNT/afsd/afsd_eventlog.c:1.5.4.4	Wed Feb 18 23:04:36 2009
+++ openafs/src/WINNT/afsd/afsd_eventlog.c	Sat Mar 28 19:17:44 2009
@@ -195,7 +195,6 @@
     case MSG_SERVICE_ERROR_STOP:
     case MSG_CRYPT_OFF:
     case MSG_CRYPT_ON:
-    case MSG_SMB_RESET_ALL_VCS:
 	break;
     case MSG_FLUSH_BAD_SHARE_NAME:
     case MSG_FLUSH_OPEN_ENUM_ERROR:
--- openafs/src/WINNT/afsd/afsd_eventmessages.mc:1.4.4.3	Wed Feb 18 23:04:36 2009
+++ openafs/src/WINNT/afsd/afsd_eventmessages.mc	Sat Mar 28 19:17:44 2009
@@ -374,12 +374,4 @@
 MaxBufferSize for client is too small (Client=%1, Server=%2).
 .
 
-MessageId=
-Severity=Informational
-Facility=System
-SymbolicName=MSG_SMB_RESET_ALL_VCS
-Language=English
-Windows SMB Redirector requests reset of all SMB virtual circuits.
-.
-
 ;#endif /* __AFSD_EVENTMESSAGES_H_ 1 */
--- openafs/src/WINNT/afsd/afsd_init.c:1.79.2.54	Sun Mar  1 23:45:15 2009
+++ openafs/src/WINNT/afsd/afsd_init.c	Wed Apr  1 13:29:24 2009
@@ -617,6 +617,7 @@
     int cm_SubnetMask[CM_MAXINTERFACE_ADDR];/* client's subnet mask in host order*/
     int cm_NetMtu[CM_MAXINTERFACE_ADDR];    /* client's MTU sizes */
     int cm_NetFlags[CM_MAXINTERFACE_ADDR];  /* network flags */
+    DWORD dwPriority;
 
     WSAStartup(0x0101, &WSAjunk);
 
@@ -666,6 +667,16 @@
         osi_panic(buf, __FILE__, __LINE__);
     }
 
+    dummyLen = sizeof(dwPriority);
+    code = RegQueryValueEx(parmKey, "PriorityClass", NULL, NULL,
+                            (BYTE *) &dwPriority, &dummyLen);
+    if (code != ERROR_SUCCESS || dwPriority == 0) {
+        dwPriority = HIGH_PRIORITY_CLASS;
+    }
+    if (dwPriority != GetPriorityClass(GetCurrentProcess()))
+        SetPriorityClass(GetCurrentProcess(), dwPriority);
+    afsi_log("PriorityClass 0x%x", GetPriorityClass(GetCurrentProcess()));
+
     dummyLen = sizeof(lockOrderValidation);
     code = RegQueryValueEx(parmKey, "LockOrderValidation", NULL, NULL,
                             (BYTE *) &lockOrderValidation, &dummyLen);
--- openafs/src/WINNT/afsd/cm_vnodeops.c:1.69.2.99	Sat Mar 14 00:55:09 2009
+++ openafs/src/WINNT/afsd/cm_vnodeops.c	Fri Mar 27 13:58:19 2009
@@ -1932,17 +1932,13 @@
                         fid_count = i+1;
                     } else {
                         /* add the new fid to the list */
-                        for ( i=0; i<fid_count; i++) {
-                            if ( !cm_FidCmp(&nscp->fid, &fids[i]) ) {
-                                code = CM_ERROR_TOO_MANY_SYMLINKS;
-                                cm_ReleaseSCache(nscp);
-                                nscp = NULL;
-                                break;
-                            }
-                        }
-                        if (i == fid_count && fid_count < MAX_FID_COUNT) {
-                            fids[fid_count++] = nscp->fid;
-                        }
+                        if (fid_count == MAX_FID_COUNT) {
+                            code = CM_ERROR_TOO_MANY_SYMLINKS;
+                            cm_ReleaseSCache(nscp);
+                            nscp = NULL;
+                            break;
+                        }       
+                        fids[fid_count++] = nscp->fid;
                     }
                 }
 
--- openafs/src/WINNT/afsd/cm_vnodeops.h:1.14.4.15	Sat Mar 14 00:55:10 2009
+++ openafs/src/WINNT/afsd/cm_vnodeops.h	Fri Mar 27 13:58:19 2009
@@ -237,7 +237,7 @@
 
 extern int cm_KeyEquals(cm_key_t * k1, cm_key_t * k2, int flags);
 
-#define MAX_SYMLINK_COUNT 16
+#define MAX_SYMLINK_COUNT 64
 
 /* make this big enough so that one buffer of dir pages won't overflow.  We'll
  * check anyway, but we want to minimize the chance that we have to leave stuff
--- openafs/src/WINNT/afsd/cm_volume.c:1.14.4.59	Sun Mar  1 23:45:15 2009
+++ openafs/src/WINNT/afsd/cm_volume.c	Wed Apr  1 12:39:08 2009
@@ -163,7 +163,8 @@
 		     cm_volume_t *volp)
 {
     cm_conn_t *connp;
-    int i, j, k;
+    int i;
+    afs_uint32 j, k;
     cm_serverRef_t *tsrp;
     cm_server_t *tsp;
     struct sockaddr_in tsockAddr;
@@ -412,7 +413,7 @@
                         serverUUID[j] = uuid;
                     }
 
-                    free(addrs.bulkaddrs_val);  /* This is wrong */
+                    xdr_free(addrs.bulkaddrs_val, addrs.bulkaddrs_len * sizeof(*addrs.bulkaddrs_val));
 
                     if (nentries == 0)
                         code = CM_ERROR_INVAL;
--- openafs/src/WINNT/afsd/smb.c:1.118.2.120	Tue Mar 17 23:56:26 2009
+++ openafs/src/WINNT/afsd/smb.c	Sat Apr  4 16:16:36 2009
@@ -3183,7 +3183,7 @@
 #endif /* COMMENT */
     }
     else if (code == CM_ERROR_BADSHARENAME) {
-        NTStatus = 0xC00000CCL;	/* Bad network name */
+        NTStatus = 0xC00000BEL;	/* Bad network path (server valid, share bad) */
     }
     else if (code == CM_ERROR_NOIPC) {
 #ifdef COMMENT
@@ -3254,7 +3254,7 @@
         NTStatus = 0xC000022DL; /* Retry */
     } 
     else if (code == CM_ERROR_ALLOFFLINE || code == CM_ERROR_ALLDOWN) {
-        NTStatus = 0xC00000BEL; /* Bad Network Path */
+        NTStatus = 0xC000003AL; /* Path not found */
     } 
     else if (code >= ERROR_TABLE_BASE_RXK && code < ERROR_TABLE_BASE_RXK + 256) {
 	NTStatus = 0xC0000322L; /* No Kerberos key */
@@ -8358,25 +8358,30 @@
         if (dp->procp) {
             /* we have a recognized operation */
             char * opName = myCrt_Dispatch(inp->inCom);
+            smb_t *smbp;
+
+            smbp = (smb_t *) inp;
 
-            if (inp->inCom == 0x1d)
+            osi_Log5(smb_logp,"Dispatch %s mid 0x%x vcp 0x%p lana %d lsn %d",
+                      opName, smbp->mid, vcp,vcp->lana,vcp->lsn);
+            if (inp->inCom == 0x1d) {
                 /* Raw Write */
                 code = smb_ReceiveCoreWriteRaw (vcp, inp, outp, rwcp);
-            else {
-                osi_Log4(smb_logp,"Dispatch %s vcp 0x%p lana %d lsn %d",
-                         opName,vcp,vcp->lana,vcp->lsn);
+            } else {
                 code = (*(dp->procp)) (vcp, inp, outp);
-                osi_Log4(smb_logp,"Dispatch return  code 0x%x vcp 0x%p lana %d lsn %d",
-                         code,vcp,vcp->lana,vcp->lsn);
-#ifdef LOG_PACKET
-                if ( code == CM_ERROR_BADSMB ||
-                     code == CM_ERROR_BADOP )
-                    smb_LogPacket(inp);
-#endif /* LOG_PACKET */
             }   
+            osi_Log5(smb_logp,"Dispatch return code 0x%x mid 0x%x vcp 0x%p lana %d lsn %d",
+                      code, smbp->mid, vcp,vcp->lana,vcp->lsn);
 
             newTime = GetTickCount();
-            osi_Log2(smb_logp, "Dispatch %s duration %d ms", opName, newTime - oldTime);
+            osi_Log3(smb_logp, "Dispatch %s mid 0x%x duration %d ms", 
+                     opName, smbp->mid, newTime - oldTime);
+
+#ifdef LOG_PACKET
+            if ( code == CM_ERROR_BADSMB ||
+                 code == CM_ERROR_BADOP )
+                smb_LogPacket(inp);
+#endif /* LOG_PACKET */
 
             /* ReceiveV3Tran2A handles its own logging */
             if (inp->inCom != 0x32 && newTime - oldTime > 45000) {
@@ -8387,7 +8392,7 @@
                 cm_fid_t afid = {0,0,0,0,0};
 
                 uidp = smb_FindUID(vcp, smbp->uid, 0);
-                smb_LookupTIDPath(vcp,((smb_t *)inp)->tid, &treepath);
+                smb_LookupTIDPath(vcp, smbp->tid, &treepath);
                 fidp = smb_FindFID(vcp, inp->fid, 0);
 
                 if (fidp) {
@@ -8401,9 +8406,10 @@
                         pathname = inp->stringsp->wdata;
                 }
 
-                afsi_log("Request %s duration %d ms user %S tid \"%S\" path? \"%S\" afid (%d.%d.%d.%d)", 
-                          opName, newTime - oldTime,
-                          uidp ? uidp->unp->name : NULL,
+                afsi_log("Request %s duration %d ms user 0x%x \"%S\" pid 0x%x mid 0x%x tid 0x%x \"%S\" path? \"%S\" afid (%d.%d.%d.%d)", 
+                          opName, newTime - oldTime, 
+                          smbp->uid, uidp ? uidp->unp->name : NULL,
+                          smbp->pid, smbp->mid, smbp->tid,
                           treepath,
                           pathname, 
                           afid.cell, afid.volume, afid.vnode, afid.unique);
@@ -10077,13 +10083,12 @@
                                                     );
 
                 if (nts != STATUS_SUCCESS && ntsEx != STATUS_SUCCESS) {
-                    char message[AFSPATHMAX];
-                    sprintf(message,"MsV1_0SetProcessOption failure: nts 0x%x ntsEx 0x%x",
-                                       nts, ntsEx);
-                    OutputDebugString(message);
-                    afsi_log(message);
+                    osi_Log2(smb_logp, "MsV1_0SetProcessOption failure: nts 0x%x ntsEx 0x%x",
+                             nts, ntsEx);
+
+                    afsi_log("MsV1_0SetProcessOption failure: nts 0x%x ntsEx 0x%x", nts, ntsEx);
                 } else {
-                    OutputDebugString("MsV1_0SetProcessOption success");
+                    osi_Log0(smb_logp, "MsV1_0SetProcessOption success");
                     afsi_log("MsV1_0SetProcessOption success");
                 }
                 /* END - code from Larry */
--- openafs/src/WINNT/afsd/smb3.c:1.95.2.91	Tue Mar 17 23:56:26 2009
+++ openafs/src/WINNT/afsd/smb3.c	Mon Apr  6 13:25:16 2009
@@ -144,8 +144,6 @@
     va_start( args, format );
     cm_ClientStrPrintfV(vbuffer, lengthof(vbuffer), format, args);
     osi_Log1(smb_logp, "%S", osi_LogSaveClientString(smb_logp, vbuffer));
-    cm_ClientStrCat(vbuffer, lengthof(vbuffer), _C("\n"));
-    OutputDebugStringW(vbuffer);
 }
 
 void OutputDebugHexDump(unsigned char * buffer, int len) {
@@ -159,8 +157,6 @@
         if(!(i%16)) {
             if(i) {
                 osi_Log1(smb_logp, "%s", osi_LogSaveString(smb_logp, buf));
-                StringCchCatA(buf, lengthof(buf), "\r\n");
-                OutputDebugString(buf);
             }
             StringCchPrintfA(buf, lengthof(buf), "%5x", i);
             memset(buf+5,' ',80);
@@ -180,8 +176,6 @@
     }    
     if(i) {
         osi_Log1(smb_logp, "%s", osi_LogSaveString(smb_logp, buf));
-        StringCchCatA(buf, lengthof(buf), "\r\n");
-        OutputDebugString(buf);
     }   
 }
 
@@ -715,7 +709,6 @@
     }
 
     if (vcNumber == 0) {
-        LogEvent(EVENTLOG_INFORMATION_TYPE, MSG_SMB_RESET_ALL_VCS);
         osi_Log0(smb_logp, "Resetting all VCs");
         smb_MarkAllVCsDead(vcp);
     }
@@ -1856,7 +1849,7 @@
     } else {
         userp = smb_GetTran2User(vcp, p);
         if (!userp) {
-            osi_Log1(smb_logp,"ReceiveTran2GetDfsReferral unable to resolve user [%d]", p->uid);
+            osi_Log1(smb_logp,"ReceiveRAPNetShareGetInfo unable to resolve user [%d]", p->uid);
             return CM_ERROR_BADSMB;
         }   
         code = cm_NameI(cm_data.rootSCachep, shareName,
@@ -2262,9 +2255,10 @@
                     pathname = inp->stringsp->wdata;
             }
 
-            afsi_log("Request %s duration %d ms user %S tid \"%S\" path? \"%S\" afid (%d.%d.%d.%d)", 
+            afsi_log("Request %s duration %d ms user 0x%x \"%S\" pid 0x%x mid 0x%x tid 0x%x \"%S\" path? \"%S\" afid (%d.%d.%d.%d)", 
                       myCrt_2Dispatch(asp->opcode), newTime - oldTime,
-                      uidp ? uidp->unp->name : NULL,
+                      asp->uid, uidp ? uidp->unp->name : NULL,
+                      asp->pid, asp->mid, asp->tid,
                       treepath,
                       pathname, 
                       afid.cell, afid.volume, afid.vnode, afid.unique);
@@ -3902,10 +3896,10 @@
             /* 
              * We have a requested path.  Check to see if it is something 
              * we know about.
-			 *
-			 * But be careful because the name that we might be searching
-			 * for might be a known name with the final character stripped
-			 * off.  If we 
+             *
+             * But be careful because the name that we might be searching
+             * for might be a known name with the final character stripped
+             * off.
              */
             code = cm_NameI(cm_data.rootSCachep, &requestFileName[nbnLen+2],
                             CM_FLAG_FOLLOW | CM_FLAG_CASEFOLD | CM_FLAG_DFS_REFERRAL,
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/index.htm:1.5.4.42	Thu Jan 22 11:05:20 2009
+++ openafs/src/WINNT/doc/install/Documentation/en_US/html/index.htm	Mon Apr  6 13:20:52 2009
@@ -57,7 +57,7 @@
 
 <h1>OpenAFS for Windows</h1>
 
-<h2>Version 1.5.57</h2>
+<h2>Version 1.5.59</h2>
 
 <p class=MsoNormal>&nbsp; </p>
 
@@ -78,7 +78,7 @@
 <span
 style='font-family:Symbol'>·<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 </span></span><a
-href="ReleaseNotes/relnotes-frames.htm">OpenAFS for Windows 1.5.57
+href="ReleaseNotes/relnotes-frames.htm">OpenAFS for Windows 1.5.59
 Release Notes</a></p>
 
 <p style='margin-left:36.0pt;text-indent:-18.0pt;'>
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm:1.1.6.40	Thu Jan 22 11:05:25 2009
+++ openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/logo.htm	Mon Apr  6 13:20:55 2009
@@ -18,7 +18,7 @@
 .shape {behavior:url(#default#VML);}
 </style>
 <![endif]-->
-<title>OpenAFS for Windows 1.5.57 Release Notes</title>
+<title>OpenAFS for Windows 1.5.59 Release Notes</title>
 <!--[if gte mso 9]><xml>
  <o:DocumentProperties>
   <o:Revision>1</o:Revision>
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes-frames.htm:1.1.4.42	Thu Jan 22 11:05:25 2009
+++ openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes-frames.htm	Mon Apr  6 13:20:55 2009
@@ -10,7 +10,7 @@
 <meta name=Originator content="Microsoft Word 12">
 <link rel=File-List href="relnotes-frames_files/filelist.xml">
 <link rel=Preview href="relnotes-frames_files/preview.wmf">
-<title>OpenAFS for Windows 1.5.57 Release Notes</title>
+<title>OpenAFS for Windows 1.5.59 Release Notes</title>
 <!--[if gte mso 9]><xml>
  <o:DocumentProperties>
   <o:LastAuthor>Jeffrey Eric Altman</o:LastAuthor>
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes.htm:1.6.4.48	Thu Jan 22 11:05:25 2009
+++ openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes.htm	Mon Apr  6 13:20:55 2009
@@ -22,7 +22,7 @@
 .shape {behavior:url(#default#VML);}
 </style>
 <![endif]-->
-<title>OpenAFS for Windows 1.5.57 Release Notes</title>
+<title>OpenAFS for Windows 1.5.59 Release Notes</title>
 <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
  name="PostalCode"/>
 <o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
@@ -1226,7 +1226,7 @@
 
 <div class=Section1>
 
-<p class=MsoTitle>OpenAFS for Windows 1.5.57 (with Unicode Support)<br>
+<p class=MsoTitle>OpenAFS for Windows 1.5.59 (with Unicode Support)<br>
 Release Notes</p>
 
 <p class=MsoBodyText>The Andrew File System (AFS) is a location-independent
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm:1.2.6.41	Thu Jan 22 11:05:26 2009
+++ openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm	Mon Apr  6 13:20:55 2009
@@ -12,7 +12,7 @@
 <base target=body>
 <link rel=File-List href="toc_files/filelist.xml">
 <link rel=Preview href="toc_files/preview.wmf">
-<title>OpenAFS for Windows 1.5.57 Table of Contents</title>
+<title>OpenAFS for Windows 1.5.59 Table of Contents</title>
 <!--[if gte mso 9]><xml>
  <o:DocumentProperties>
   <o:Author>Jeffrey Altman</o:Author>
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes_files/filelist.xml:1.1.6.4	Wed Jul 16 01:34:59 2008
+++ openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes_files/filelist.xml	Sun Mar 29 13:13:10 2009
--- openafs/src/WINNT/install/loopback/NTMakefile:1.5.4.4	Thu Jul 10 14:28:26 2008
+++ openafs/src/WINNT/install/loopback/NTMakefile	Wed Apr  1 18:56:29 2009
@@ -1,4 +1,4 @@
-# rcsid : $Id: NTMakefile,v 1.5.4.4 2008/07/10 18:28:26 jaltman Exp $
+# rcsid : $Id: NTMakefile,v 1.5.4.5 2009/04/01 22:56:29 jaltman Exp $
 
 RELDIR=WINNT\install\loopback
 !INCLUDE ..\..\..\config\NTMakefile.$(SYS_NAME)
@@ -39,10 +39,19 @@
 !ERROR netcfgx.h header file cannot be found.  DDK improperly configured.
 !ENDIF
 
+# DDK version 6001 and above contain SDK header files and come with
+# its own set of runtime header files.  We want to use the Platform
+# SDK header files.
+INCLUDE=$(INCLUDE);$(DDK_INCL)
+
 # afsloopback.dll
 
-DLLSOURCEFILES = loopbackutils.cpp renameconnection.cpp wmi.cpp
-DLLOBJFILES =  $(OUT)\loopbackutils.obj $(OUT)\renameconnection.obj $(OUT)\wmi.obj
+DLLSOURCEFILES = loopbackutils.cpp wmi.cpp renameconnection.cpp
+
+# The order of these files is significant.  The first in the list
+# should be an .obj that includes <afx.h> at the top of the source
+# file.  See Q148652
+DLLOBJFILES =  $(OUT)\renameconnection.obj $(OUT)\loopbackutils.obj $(OUT)\wmi.obj
 
 $(EXERES) : instloop.rc AFS_component_version_number.h
 
@@ -57,7 +66,7 @@
 	$(STATICC2OBJ) -c -DUNICODE -D_UNICODE /Fo$@ $**
 
 $(OUT)\wmi.obj: wmi.cpp
-	$(STATICC2OBJ)  -I$(DDK_INCL) -c -DUNICODE -D_UNICODE /Fo$@ $**
+	$(STATICC2OBJ) -c -DUNICODE -D_UNICODE /Fo$@ $**
 
 $(DLLFILE): $(DLLOBJFILES) $(DLLRES)
 	$(LINK) -DLL $(DLLEXPORTS) -OUT:$@ $** $(DLLLIBFILES)
@@ -66,7 +75,7 @@
 
 # instloop.exe
 
-EXEOBJFILES = $(OUT)\instloop.obj $(DLLOBJFILES)
+EXEOBJFILES = $(DLLOBJFILES) $(OUT)\instloop.obj
 #EXELIBFILES = $(MEDIABINDIR)\afsloopback.lib
 
 $(OUT)\instloop.obj: instloop.c
--- openafs/src/WINNT/talocale/tal_alloc.cpp:1.7	Sat Nov  5 01:48:02 2005
+++ openafs/src/WINNT/talocale/tal_alloc.cpp	Wed Apr  1 13:36:39 2009
@@ -1020,7 +1020,7 @@
          MemMgr_StoreSettings();
          l.hManager = NULL;
          KillTimer (hDlg, l.idTimer);
-         l.idTimer = -1;
+         l.idTimer = (UINT_PTR)-1;
          break;
 
       case WM_SIZE:
--- openafs/src/WINNT/tests/torture/Source/WinThreads.c:1.5.2.2	Thu Feb 26 12:29:20 2009
+++ openafs/src/WINNT/tests/torture/Source/WinThreads.c	Sun Apr  5 01:25:20 2009
@@ -583,6 +583,7 @@
             blob.in_size = 0;
             blob.out_size = sizeof(space);
             blob.out = space;
+#if 0
             if (!(code = ppioctl(strPath, VIOCGETVOLSTAT, &blob, 1)))
             {
                 bret = WINTORTURE_ASFDLL_ONLINE;
@@ -590,6 +591,22 @@
                 if (!status->Online || !status->InService || !status->Blessed || status->NeedsSalvage)
                     bret = WINTORTURE_ASFDLL_OFFLINE;
             }
+#else
+            errno = 0;
+            code = ppioctl(strPath, VIOC_PATH_AVAILABILITY, &blob, 1);
+            if (!code) {
+                switch (errno) {
+                case ENXIO:
+                case ENOSYS:
+                case EBUSY:
+                    bret = WINTORTURE_ASFDLL_OFFLINE;
+                    break;
+                default:
+                    bret = WINTORTURE_ASFDLL_ONLINE;
+                    break;
+                }
+            }
+#endif 
         }
         else
             bret = WINTORTURE_ASFPIOCTL_NOTFOUND;
--- openafs/src/WINNT/tests/torture/Source/nbio.c:1.4.2.3	Thu Feb 26 12:47:44 2009
+++ openafs/src/WINNT/tests/torture/Source/nbio.c	Sun Apr  5 08:54:40 2009
@@ -83,7 +83,7 @@
 int nb_unlink(char *fname)
 {
     int     rc;
-    char    temp[256];
+    char    temp[512];
     char    FileName[128];
     pstring path;
 
@@ -98,7 +98,7 @@
     if (!rc)
     {
         LeaveThread(0, "", CMD_UNLINK);
-        sprintf(temp, "FILE: DeleteFile %s failed GLE(0x%x)\n", fname, GetLastError());
+        sprintf(temp, "FILE: DeleteFile %s failed GLE(0x%x)\n", path, GetLastError());
         if (verbose)
             printf("%s", temp);
         LogMessage(ProcessNumber, HostName, FileName, temp, LogID);
@@ -949,7 +949,7 @@
 void delete_fn(file_info *finfo, const char *name, void *state)
 {
     int     rc;
-    char    temp[256];
+    char    temp[512];
     char    s[1024];
     char    FileName[128];
 
@@ -1002,7 +1002,7 @@
     if (!rc)
     {
         char FileName[256];
-        char temp[128];
+        char temp[512];
         int  rc;
 
         rc = GetLastError();
--- openafs/src/afs/afs_vcache.c:1.114.2.30	Wed Mar 25 15:34:48 2009
+++ openafs/src/afs/afs_vcache.c	Tue Mar 31 08:41:37 2009
@@ -41,7 +41,7 @@
 #include "afs/param.h"
 
 RCSID
-    ("$Header: /cvs/openafs/src/afs/afs_vcache.c,v 1.114.2.30 2009/03/25 19:34:48 shadow Exp $");
+    ("$Header: /cvs/openafs/src/afs/afs_vcache.c,v 1.114.2.31 2009/03/31 12:41:37 shadow Exp $");
 
 #include "afs/sysincludes.h"	/*Standard vendor system headers */
 #include "afsincludes.h"	/*AFS-based standard headers */
@@ -784,7 +784,7 @@
     /* track the peak */
     if (afsd_dynamic_vcaches && afs_maxvcount < afs_vcount) {
 	afs_maxvcount = afs_vcount;
-	printf("peak vnodes: %d\n", afs_maxvcount);
+	/*printf("peak vnodes: %d\n", afs_maxvcount);*/
     }
 #endif
     afs_stats_cmperf.vcacheXAllocs++;	/* count in case we have a leak */
--- openafs/src/afs/LINUX/osi_proc.c:1.1.2.7	Wed Mar 18 09:41:37 2009
+++ openafs/src/afs/LINUX/osi_proc.c	Tue Mar 31 08:16:32 2009
@@ -15,7 +15,7 @@
 #include "afs/param.h"
 
 RCSID
-    ("$Header: /cvs/openafs/src/afs/LINUX/osi_proc.c,v 1.1.2.7 2009/03/18 13:41:37 shadow Exp $");
+    ("$Header: /cvs/openafs/src/afs/LINUX/osi_proc.c,v 1.1.2.8 2009/03/31 12:16:32 shadow Exp $");
 
 #include <linux/module.h> /* early to avoid printf->printk mapping */
 #ifdef HAVE_KERNEL_LINUX_SEQ_FILE_H
@@ -336,7 +336,9 @@
     entry = create_proc_entry("unixusers", 0, openafs_procfs);
     if (entry) {
 	entry->proc_fops = &afs_unixuser_fops;
+#if defined(STRUCT_PROC_DIR_ENTRY_HAS_OWNER)
 	entry->owner = THIS_MODULE;
+#endif
     }
     entry = create_proc_entry(PROC_CELLSERVDB_NAME, 0, openafs_procfs);
     if (entry)
@@ -344,7 +346,9 @@
 #else
     entry = create_proc_info_entry(PROC_CELLSERVDB_NAME, (S_IFREG|S_IRUGO), openafs_procfs, csdbproc_info);
 #endif
+#if defined(STRUCT_PROC_DIR_ENTRY_HAS_OWNER)
     entry->owner = THIS_MODULE;
+#endif
 }
 
 void
--- openafs/src/cf/linux-test4.m4:1.29.2.54	Mon Mar 23 11:16:45 2009
+++ openafs/src/cf/linux-test4.m4	Sat Apr  4 12:44:02 2009
@@ -782,7 +782,7 @@
   AC_MSG_CHECKING([if key_alloc() takes a struct task *])
   AC_CACHE_VAL([ac_cv_key_alloc_needs_struct_task], [
     save_CPPFLAGS="$CPPFLAGS"
-    CPPFLAGS="$CPPFLAGS -Werror"
+    CPPFLAGS="$CPPFLAGS -Werror -Wno-pointer-arith"
     AC_TRY_KBUILD(
 [#include <linux/rwsem.h>
 #include <linux/key.h>
@@ -801,7 +801,7 @@
   AC_MSG_CHECKING([if key_alloc() takes credentials])
   AC_CACHE_VAL([ac_cv_key_alloc_needs_cred], [
     save_CPPFLAGS="$CPPFLAGS"
-    CPPFLAGS="$CPPFLAGS -Werror"
+    CPPFLAGS="$CPPFLAGS -Werror -Wno-pointer-arith"
     AC_TRY_KBUILD(
 [#include <linux/rwsem.h>
 #include <linux/key.h>
@@ -1201,3 +1201,17 @@
   if test "x$ac_cv_linux_struct_task_has_cred" = "xyes"; then
     AC_DEFINE([STRUCT_TASK_HAS_CRED], 1, [define if struct task has a cred pointer])
   fi])
+
+AC_DEFUN([LINUX_STRUCT_PROC_DIR_ENTRY_HAS_OWNER], [
+  AC_MSG_CHECKING([if struct proc_dir_entry_has_owner])
+  AC_CACHE_VAL([ac_cv_linux_struct_proc_dir_entry_has_owner], [
+    AC_TRY_KBUILD(
+[#include <linux/proc_fs.h>],
+[struct proc_dir_entry _p;
+_p.owner= "";],
+      ac_cv_linux_struct_proc_dir_entry_has_owner=yes,
+      ac_cv_linux_struct_proc_dir_entry_has_owner=no)])
+  AC_MSG_RESULT($ac_cv_linux_struct_proc_dir_entry_has_owner)
+  if test "x$ac_cv_linux_struct_proc_dir_entry_has_owner" = "xyes"; then
+    AC_DEFINE([STRUCT_PROC_DIR_ENTRY_HAS_OWNER], 1, [define if struct proc_dir_entry has an owner member])
+  fi])
--- openafs/src/config/NTMakefile:1.20.2.3	Wed Jul  2 08:49:15 2008
+++ openafs/src/config/NTMakefile	Thu Apr  2 01:04:57 2009
@@ -487,7 +487,7 @@
 version: $(DESTDIR)\bin\mkvers.exe NTMakefile.version 
 
 NTMakefile.version: NTMakefile.version-CML NTMakefile.version-NOCML
-	$(DEL) NTMakefile.version
+	-$(DEL) NTMakefile.version
 !	IF (EXIST(..\..\src\CML\state) || EXIST(..\..\..\src\CML\state))
 		$(COPY) NTMakefile.version-CML NTMakefile.version
 !	ELSE
@@ -529,12 +529,12 @@
 # This clean target must be named something different than the universal
 # 'clean' so that the version file can be removed last.
 clean_version:
-	$(DEL) NTMakefile.version
+	-$(DEL) NTMakefile.version
 
 clean::
-	$(DEL) $(DESTDIR)\LIB\*.DLL
-	$(DEL) $(DESTDIR)\bin\mkver.exe*
-	$(DEL) $(DESTDIR)\bin\touch.exe*
-	$(DEL) $(OUT)\util_cr.exe*
-	$(DEL) $(OUT)\mkver.exe*
-	$(DEL) $(OUT)\touch.exe*
+	-$(DEL) $(DESTDIR)\LIB\*.DLL
+	-$(DEL) $(DESTDIR)\bin\mkver.exe*
+	-$(DEL) $(DESTDIR)\bin\touch.exe*
+	-$(DEL) $(OUT)\util_cr.exe*
+	-$(DEL) $(OUT)\mkver.exe*
+	-$(DEL) $(OUT)\touch.exe*
--- openafs/src/config/NTMakefile.amd64_w2k:1.24.2.52	Thu Jan 22 12:05:50 2009
+++ openafs/src/config/NTMakefile.amd64_w2k	Mon Apr  6 13:17:32 2009
@@ -84,7 +84,7 @@
 #define used in WinNT/2000 installation and program version display
 AFSPRODUCT_VER_MAJOR=1
 AFSPRODUCT_VER_MINOR=5
-AFSPRODUCT_VER_PATCH=5700
+AFSPRODUCT_VER_PATCH=5900
 AFSPRODUCT_VER_BUILD=0
 
 AFSPRODUCT_VERSION=$(AFSPRODUCT_VER_MAJOR).$(AFSPRODUCT_VER_MINOR).$(AFSPRODUCT_VER_PATCH)
--- openafs/src/config/NTMakefile.i386_nt40:1.84.2.50	Thu Jan 22 12:05:50 2009
+++ openafs/src/config/NTMakefile.i386_nt40	Mon Apr  6 13:17:32 2009
@@ -84,7 +84,7 @@
 #define used in WinNT/2000 installation and program version display
 AFSPRODUCT_VER_MAJOR=1
 AFSPRODUCT_VER_MINOR=5
-AFSPRODUCT_VER_PATCH=5700
+AFSPRODUCT_VER_PATCH=5900
 AFSPRODUCT_VER_BUILD=0
 
 AFSPRODUCT_VERSION=$(AFSPRODUCT_VER_MAJOR).$(AFSPRODUCT_VER_MINOR).$(AFSPRODUCT_VER_PATCH)
--- openafs/src/config/NTMakefile.i386_w2k:1.23.2.54	Thu Jan 22 12:05:50 2009
+++ openafs/src/config/NTMakefile.i386_w2k	Mon Apr  6 13:17:32 2009
@@ -88,7 +88,7 @@
 #define used in WinNT/2000 installation and program version display
 AFSPRODUCT_VER_MAJOR=1
 AFSPRODUCT_VER_MINOR=5
-AFSPRODUCT_VER_PATCH=5700
+AFSPRODUCT_VER_PATCH=5900
 AFSPRODUCT_VER_BUILD=0
 
 AFSPRODUCT_VERSION=$(AFSPRODUCT_VER_MAJOR).$(AFSPRODUCT_VER_MINOR).$(AFSPRODUCT_VER_PATCH)
--- openafs/src/libafsrpc/afsrpc.def:1.11.4.13	Tue Jan 27 12:09:38 2009
+++ openafs/src/libafsrpc/afsrpc.def	Wed Apr  1 12:38:13 2009
@@ -244,6 +244,7 @@
         rx_WritevAlloc                          @249
         rx_ReadProc32                           @250
         rx_WriteProc32                          @251
+        xdr_free                                @252
 
 ; for performance testing
         rx_TSFPQGlobSize                        @2001 DATA
--- openafs/src/rx/rx_xmit_nt.c:1.11.2.1	Tue Jan 27 01:05:04 2009
+++ openafs/src/rx/rx_xmit_nt.c	Thu Apr  2 03:45:00 2009
@@ -18,11 +18,15 @@
 #include <afs/param.h>
 
 RCSID
-    ("$Header: /cvs/openafs/src/rx/rx_xmit_nt.c,v 1.11.2.1 2009/01/27 06:05:04 jaltman Exp $");
+    ("$Header: /cvs/openafs/src/rx/rx_xmit_nt.c,v 1.11.2.2 2009/04/02 07:45:00 jaltman Exp $");
 
 #if defined(AFS_NT40_ENV)
 
 #include <winsock2.h>
+#if (_WIN32_WINNT < 0x0501)
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0501
+#endif
 #include <mswsock.h>
 
 #if (_WIN32_WINNT < 0x0600)
--- openafs/src/rx/xdr.c:1.11.4.2	Wed Jan 28 17:33:28 2009
+++ openafs/src/rx/xdr.c	Wed Apr  1 12:38:13 2009
@@ -36,7 +36,7 @@
 #endif
 
 RCSID
-    ("$Header: /cvs/openafs/src/rx/xdr.c,v 1.11.4.2 2009/01/28 22:33:28 shadow Exp $");
+    ("$Header: /cvs/openafs/src/rx/xdr.c,v 1.11.4.3 2009/04/01 16:38:13 jaltman Exp $");
 
 /*
  * xdr.c, Generic XDR routines implementation.
@@ -583,4 +583,10 @@
     return (FALSE);
 }
 #endif
+
+void 
+xdr_free(void *x, afs_int32 size)
+{
+    osi_free(x, size);
+}
 #endif /* NeXT */
--- openafs/src/rx/xdr_prototypes.h:1.8.4.2	Wed Jan 28 17:33:28 2009
+++ openafs/src/rx/xdr_prototypes.h	Wed Apr  1 12:38:13 2009
@@ -58,6 +58,7 @@
 			struct xdr_discrim *choices, xdrproc_t dfault);
 extern bool_t xdr_string(XDR * xdrs, char **cpp, u_int maxsize);
 extern bool_t xdr_wrapstring(XDR * xdrs, char **cpp);
+extern void   xdr_free(void *x, afs_int32 size);
 
 
 /* xdr_float.c */
--- openafs/src/volser/NTMakefile:1.11.2.5	Wed Jul  2 08:49:29 2008
+++ openafs/src/volser/NTMakefile	Tue Mar 24 18:36:25 2009
@@ -90,6 +90,7 @@
 	$(OUT)\volmain.obj \
 	$(OUT)\volprocs.obj \
 	$(OUT)\voltrans.obj \
+	$(OUT)\vol_split.obj \
 	$(OUT)\volserver.res
 	
 
--- openafs/src/volser/vol_split.c:1.1.2.5	Tue Mar 24 14:20:33 2009
+++ openafs/src/volser/vol_split.c	Tue Mar 24 18:36:25 2009
@@ -8,7 +8,7 @@
 #include <afsconfig.h>
 #include <afs/param.h>
 
-#ifdef AFS_NAMEI_ENV
+#if defined(AFS_NAMEI_ENV) && !defined(AFS_NT40_ENV)
 #include <sys/types.h>
 #include <stdio.h>
 #ifdef AFS_PTHREAD_ENV
@@ -92,7 +92,6 @@
     struct VnodeExtract *e;
     afs_uint32 size;
     afs_uint32 offset;
-    afs_uint32 vN; 
 
     *length = 0;
     if (parent)
@@ -247,7 +246,6 @@
 static afs_int32 
 copyDir(struct Msg *m, IHandle_t *inh, IHandle_t *outh)
 {
-    afs_int32 code;
     FdHandle_t *infdP, *outfdP;
     char *tbuf;
     afs_size_t size;
@@ -325,7 +323,6 @@
     afs_uint64 size;
     afs_uint64 offset;
     Inode ino, newino;
-    afs_uint32 newVn;
 
     fdP = IH_OPEN(vol->vnodeIndex[class].handle);
     if (!fdP) {
@@ -364,8 +361,8 @@
 		FdHandle_t *infdP = 0;
 		FdHandle_t *outfdP = 0;
 		char *tbuf = malloc(2048);
-		Inode nearInode;
 #if defined(NEARINODE_HINT)
+		Inode nearInode;
 		V_pref(vol,nearInode)
 #endif
 
@@ -582,9 +579,9 @@
 	return EIO;
     }
     FDH_SEEK(fdP2, 0, 0);
-    sprintf(&symlink, "#%s", V_name(newvol));
+    sprintf(symlink, "#%s", V_name(newvol));
     size = strlen(symlink) + 1;
-    if (FDH_WRITE(fdP2, &symlink, size) != size) {
+    if (FDH_WRITE(fdP2, symlink, size) != size) {
 	Log("split volume: couldn't write mountpoint %u.%u.%u\n", 
 		V_id(vol), newvN, vnode.uniquifier);
 	return EIO;
@@ -684,7 +681,7 @@
 	    *blocks += (size + 0x3ff) >> 10;
 	    ino = VNDISK_GET_INO(vnode);
 	    if (ino) {
-		IHandle_t *h, *newh;
+		IHandle_t *h;
 	        IH_INIT(h, vol->device, V_parentId(vol), ino);
 		    IH_DEC(h, ino, V_parentId(vol));
 #ifdef AFS_RXOSD_SUPPORT
@@ -759,7 +756,7 @@
 	rx_Write(m->call, m->line, strlen(m->line));
     }
     code = findName(vol, parVnode, where, rootVnode->uniquifier, 
-			&name,  sizeof(name));
+                    name,  sizeof(name));
     if (code) {
 	sprintf(m->line, 
 		"splitvolume: could'nt find name of %u in directory %u.%u.%u.\n",
--- openafs/src/volser/volint.xg:1.5.4.4	Tue Mar 24 09:36:38 2009
+++ openafs/src/volser/volint.xg	Tue Mar 24 21:16:14 2009
@@ -446,7 +446,7 @@
 
 proc SplitVolume (
   IN afs_uint32 vid,
-  IN afs_uint32 new,
+  IN afs_uint32 newid,
   IN afs_uint32 where,
   IN afs_int32 verbose
 ) split = VOLSPLIT;
--- openafs/src/volser/volprocs.c:1.42.2.22	Tue Mar 24 14:20:33 2009
+++ openafs/src/volser/volprocs.c	Tue Mar 24 18:36:25 2009
@@ -13,7 +13,7 @@
 #include <afs/param.h>
 
 RCSID
-    ("$Header: /cvs/openafs/src/volser/volprocs.c,v 1.42.2.22 2009/03/24 18:20:33 shadow Exp $");
+    ("$Header: /cvs/openafs/src/volser/volprocs.c,v 1.42.2.23 2009/03/24 22:36:25 jaltman Exp $");
 
 #include <stdio.h>
 #include <sys/types.h>
@@ -2922,7 +2922,7 @@
 SAFSVolSplitVolume(struct rx_call *acall, afs_uint32 vid, afs_uint32 new, 
 		   afs_uint32 where, afs_int32 verbose)
 {
-#ifdef AFS_NAMEI_ENV
+#if defined(AFS_NAMEI_ENV) && !defined(AFS_NT40_ENV)
     afs_int32 code, code2;
     Volume *vol=0, *newvol=0;
     struct volser_trans *tt = 0, *tt2 = 0;
--- openafs/src/afs/LINUX/osi_vnodeops.c	19 Mar 2009 04:54:50 -0000	1.81.2.77
+++ openafs/src/afs/LINUX/osi_vnodeops.c	4 Apr 2009 12:33:39 -0000
@@ -45,6 +45,10 @@
 #define pageoff(pp) pp->offset
 #endif
 
+#ifndef MAX_ERRNO
+#define MAX_ERRNO 1000L
+#endif
+
 #if defined(AFS_LINUX26_ENV)
 #define UnlockPage(pp) unlock_page(pp)
 extern struct backing_dev_info afs_backing_dev_info;
@@ -1087,8 +1091,10 @@
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,10)
     if (code == ENOENT)
 	return ERR_PTR(0);
-    else
+    else if ((code >= 0) && (code <= MAX_ERRNO))
 	return ERR_PTR(-code);
+    else 
+	return ERR_PTR(-EIO);
 #else
     if (code == ENOENT)
 	code = 0;
@@ -1429,7 +1435,10 @@
 
     if (code < 0) {
 	dput(basep);
-	res = ERR_PTR(code);
+	if (code < -MAX_ERRNO)
+	    res = ERR_PTR(-EIO);
+	else
+	    res = ERR_PTR(code);
     } else {
 	name[code] = '\0';
 	res = lookup_dentry(name, basep, follow);
only in patch2:
--- openafs/src/afs/VNOPS/afs_vnop_lookup.c	26 Aug 2008 14:02:14 -0000	1.50.2.22
+++ openafs/src/afs/VNOPS/afs_vnop_lookup.c	4 Apr 2009 12:32:41 -0000
@@ -538,8 +538,6 @@
     int nskip;			/* # of slots in the LRU queue to skip */
     struct vcache *lruvcp;	/* vcache ptr of our goal pos in LRU queue */
     struct dcache *dcp;		/* chunk containing the dir block */
-    char *statMemp;		/* status memory block */
-    char *cbfMemp;		/* callback and fid memory block */
     afs_size_t temp;		/* temp for holding chunk length, &c. */
     struct AFSFid *fidsp;	/* file IDs were collecting */
     struct AFSCallBack *cbsp;	/* call back pointers */
@@ -597,13 +595,11 @@
      * one for fids and callbacks, and one for stat info.  Well set
      * up our pointers to the memory from there, too.
      */
-    statMemp = osi_AllocLargeSpace(nentries * sizeof(AFSFetchStatus));
-    statsp = (struct AFSFetchStatus *)statMemp;
-    cbfMemp =
-	osi_AllocLargeSpace(nentries *
-			    (sizeof(AFSCallBack) + sizeof(AFSFid)));
-    fidsp = (AFSFid *) cbfMemp;
-    cbsp = (AFSCallBack *) (cbfMemp + nentries * sizeof(AFSFid));
+    statsp = (AFSFetchStatus *) 
+	    osi_Alloc(AFSCBMAX * sizeof(AFSFetchStatus));
+    fidsp = (AFSFid *) osi_AllocLargeSpace(nentries * sizeof(AFSFid));
+    cbsp = (AFSCallBack *) 
+	    osi_Alloc(AFSCBMAX * sizeof(AFSCallBack));
 
     /* next, we must iterate over the directory, starting from the specified
      * cookie offset (dirCookie), and counting out nentries file entries.
@@ -1081,7 +1077,7 @@
 	afs_PutVolume(volp, READ_LOCK);
 
     /* If we did the InlineBulk RPC pull out the return code */
-    if (inlinebulk) {
+    if (inlinebulk && code == 0) {
 	if ((&statsp[0])->errorCode) {
 	    afs_Analyze(tcp, (&statsp[0])->errorCode, &adp->fid, areqp,
 			AFS_STATS_FS_RPCIDX_BULKSTATUS, SHARED_LOCK, NULL);
@@ -1091,8 +1087,9 @@
 	code = 0;
     }
   done2:
-    osi_FreeLargeSpace(statMemp);
-    osi_FreeLargeSpace(cbfMemp);
+    osi_FreeLargeSpace((char *)fidsp);
+    osi_Free((char *)statsp, AFSCBMAX * sizeof(AFSFetchStatus));
+    osi_Free((char *)cbsp, AFSCBMAX * sizeof(AFSCallBack));
     return code;
 }
 
only in patch2:
--- openafs/src/sys/rmtsysc.c	28 Nov 2007 05:08:11 -0000	1.11.2.5
+++ openafs/src/sys/rmtsysc.c	4 Apr 2009 12:32:41 -0000
@@ -241,8 +241,14 @@
     InData.rmtbulk_len = data->in_size;
     InData.rmtbulk_val = inbuffer;
     inparam_conversion(cmd, InData.rmtbulk_val, 0);
-    OutData.rmtbulk_len = data->out_size;
-    OutData.rmtbulk_val = data->out;
+
+    OutData.rmtbulk_len = MAXBUFFERLEN * sizeof(*OutData.rmtbulk_val);
+    OutData.rmtbulk_val = malloc(OutData.rmtbulk_len); 
+    if (!OutData.rmtbulk_val) {
+	free(inbuffer);
+	return -1;
+    }
+
     /* We always need to pass absolute pathnames to the remote pioctl since we
      * lose the current directory value when doing an rpc call. Below we
      * prepend the current absolute path directory, if the name is relative */
@@ -279,8 +285,15 @@
     if (!errorcode) {
 	/* Do the conversions back to the host order; store the results back
 	 * on the same buffer */
-	outparam_conversion(cmd, OutData.rmtbulk_val, 1);
+	if (data->out_size < OutData.rmtbulk_len) {
+	    errno = EINVAL;
+	    errorcode = -1;
+	} else {
+	    memcpy(data->out, OutData.rmtbulk_val, data->out_size);
+	    outparam_conversion(cmd, data->out, 1);
+	}
     }
+    free(OutData.rmtbulk_val);
     free(inbuffer);
     return errorcode;
 }
