Index: openafs/src/WINNT/afsd/afsd_init.c
diff -c openafs/src/WINNT/afsd/afsd_init.c:1.79.2.1 openafs/src/WINNT/afsd/afsd_init.c:1.79.2.3
*** openafs/src/WINNT/afsd/afsd_init.c:1.79.2.1	Thu Jun 22 17:54:40 2006
--- openafs/src/WINNT/afsd/afsd_init.c	Wed Aug  9 19:29:23 2006
***************
*** 270,276 ****
      HKEY hkMSV10;
      HKEY hkClient;
      DWORD dwType;
!     DWORD dwSize;
      DWORD dwValue;
      PBYTE pHostNames = NULL, pName = NULL;
      BOOL  bNameFound = FALSE;   
--- 270,276 ----
      HKEY hkMSV10;
      HKEY hkClient;
      DWORD dwType;
!     DWORD dwSize, dwAllocSize;
      DWORD dwValue;
      PBYTE pHostNames = NULL, pName = NULL;
      BOOL  bNameFound = FALSE;   
***************
*** 283,293 ****
      {
          if (RegQueryValueEx( hkMSV10, "BackConnectionHostNames", 0, 
  			     &dwType, NULL, &dwSize) == ERROR_SUCCESS) {
! 	    dwSize += strlen(cm_NetbiosName) + 1;
! 	    pHostNames = malloc(dwSize);
              if (RegQueryValueEx( hkMSV10, "BackConnectionHostNames", 0, &dwType, 
  				 pHostNames, &dwSize) == ERROR_SUCCESS) {
! 		for (pName = pHostNames; *pName ; pName += strlen(pName) + 1)
  		{
  		    if ( !stricmp(pName, cm_NetbiosName) ) {
  			bNameFound = TRUE;
--- 283,297 ----
      {
          if (RegQueryValueEx( hkMSV10, "BackConnectionHostNames", 0, 
  			     &dwType, NULL, &dwSize) == ERROR_SUCCESS) {
! 	    dwAllocSize += 1 /* in case the source string is not nul terminated */
! 		+ strlen(cm_NetbiosName) + 2;
! 	    pHostNames = malloc(dwAllocSize);
! 	    dwSize = dwAllocSize;
              if (RegQueryValueEx( hkMSV10, "BackConnectionHostNames", 0, &dwType, 
  				 pHostNames, &dwSize) == ERROR_SUCCESS) {
! 		for (pName = pHostNames; 
! 		     (pName - pHostNames < dwSize) && *pName ; 
! 		     pName += strlen(pName) + 1)
  		{
  		    if ( !stricmp(pName, cm_NetbiosName) ) {
  			bNameFound = TRUE;
***************
*** 301,307 ****
              size_t size = strlen(cm_NetbiosName) + 2;
              if ( !pHostNames ) {
                  pHostNames = malloc(size);
- 		dwSize = size;
  		pName = pHostNames;
              }
              StringCbCopyA(pName, size, cm_NetbiosName);
--- 305,310 ----
***************
*** 309,314 ****
--- 312,318 ----
              *pName = '\0';  /* add a second nul terminator */
  
              dwType = REG_MULTI_SZ;
+ 	    dwSize = pName - pHostNames + 1;
              RegSetValueEx( hkMSV10, "BackConnectionHostNames", 0, dwType, pHostNames, dwSize);
  
              if ( RegOpenKeyEx( HKEY_LOCAL_MACHINE, 
***************
*** 997,1012 ****
      if (rx_enable_process_stats)
          afsi_log("RX Process Statistics gathering is enabled");
  
-     dummyLen = sizeof(ConnDeadtimeout);
-     code = RegQueryValueEx(parmKey, "ConnDeadTimeout", NULL, NULL,
-                            (BYTE *) &ConnDeadtimeout, &dummyLen);
-     afsi_log("ConnDeadTimeout is %d", ConnDeadtimeout);
- 
-     dummyLen = sizeof(HardDeadtimeout);
-     code = RegQueryValueEx(parmKey, "HardDeadTimeout", NULL, NULL,
-                            (BYTE *) &HardDeadtimeout, &dummyLen);
-     afsi_log("HardDeadTimeout is %d", HardDeadtimeout);
- 
      dummyLen = sizeof(DWORD);
      code = RegQueryValueEx(parmKey, "daemonCheckDownInterval", NULL, NULL,
  			    (BYTE *) &dwValue, &dummyLen);
--- 1001,1006 ----
Index: openafs/src/WINNT/afsd/afsd_service.c
diff -c openafs/src/WINNT/afsd/afsd_service.c:1.52.4.3 openafs/src/WINNT/afsd/afsd_service.c:1.52.4.4
*** openafs/src/WINNT/afsd/afsd_service.c:1.52.4.3	Thu Jul 20 17:46:18 2006
--- openafs/src/WINNT/afsd/afsd_service.c	Mon Aug  7 17:19:05 2006
***************
*** 372,379 ****
   * Mount a drive into AFS if there global mapping
   */
  /* DEE Could check first if we are run as SYSTEM */
! #define MAX_RETRIES 30
! static void MountGlobalDrives(void)
  {
  #ifndef AFSIFS
      char szAfsPath[_MAX_PATH];
--- 372,380 ----
   * Mount a drive into AFS if there global mapping
   */
  /* DEE Could check first if we are run as SYSTEM */
! #define MAX_RETRIES 10
! #define MAX_DRIVES  23
! static DWORD __stdcall MountGlobalDrivesThread(void * notUsed)
  {
  #ifndef AFSIFS
      char szAfsPath[_MAX_PATH];
***************
*** 394,400 ****
      if (dwResult != ERROR_SUCCESS)
          return;
  
!     while (dwRetry < MAX_RETRIES) {
          dwDriveSize = sizeof(szDriveToMapTo);
          dwSubMountSize = sizeof(szSubMount);
          dwResult = RegEnumValue(hKey, dwIndex++, szDriveToMapTo, &dwDriveSize, 0, &dwType, szSubMount, &dwSubMountSize);
--- 395,401 ----
      if (dwResult != ERROR_SUCCESS)
          return;
  
!     while (dwIndex < MAX_DRIVES) {
          dwDriveSize = sizeof(szDriveToMapTo);
          dwSubMountSize = sizeof(szSubMount);
          dwResult = RegEnumValue(hKey, dwIndex++, szDriveToMapTo, &dwDriveSize, 0, &dwType, szSubMount, &dwSubMountSize);
***************
*** 407,413 ****
          }
  
  #ifndef AFSIFS
!         for ( ; dwRetry < MAX_RETRIES; dwRetry++)
          {
              NETRESOURCE nr;
              memset (&nr, 0x00, sizeof(NETRESOURCE));
--- 408,414 ----
          }
  
  #ifndef AFSIFS
!         for (dwRetry = 0 ; dwRetry < MAX_RETRIES; dwRetry++)
          {
              NETRESOURCE nr;
              memset (&nr, 0x00, sizeof(NETRESOURCE));
***************
*** 435,444 ****
--- 436,467 ----
          }
  #else
  	/* FIXFIX: implement */
+ 	afsi_log("GlobalAutoMap of %s to %s not implemented", szDriveToMapTo, szSubMount);
  #endif
      }        
  
      RegCloseKey(hKey);
+     return 0;
+ }
+ 
+ static HANDLE hThreadMountGlobalDrives = NULL;
+ 
+ static void MountGlobalDrives()
+ {
+     DWORD tid;
+ 
+     hThreadMountGlobalDrives = CreateThread(NULL, 0, MountGlobalDrivesThread, 0, 0, &tid);
+ 
+     if ( hThreadMountGlobalDrives ) {
+         DWORD rc = WaitForSingleObject( hThreadMountGlobalDrives, 15000 );
+ 	if (rc == WAIT_TIMEOUT) {
+ 	    afsi_log("GlobalAutoMap thread failed to complete after 15 seconds");
+ 	} else if (rc == WAIT_OBJECT_0) {
+ 	    afsi_log("GlobalAutoMap thread completed");
+ 	    CloseHandle( hThreadMountGlobalDrives );
+ 	    hThreadMountGlobalDrives = NULL;
+ 	}
+     }
  }
  
  static void DismountGlobalDrives()
***************
*** 456,461 ****
--- 479,497 ----
      HKEY hKey;
      DWORD dwIndex = 0;
  
+     if ( hThreadMountGlobalDrives ) {
+         DWORD rc = WaitForSingleObject(hThreadMountGlobalDrives, 0);
+ 
+ 	if (rc == WAIT_TIMEOUT) {
+ 	    afsi_log("GlobalAutoMap thread failed to complete before service shutdown");
+ 	}
+ 	else if (rc == WAIT_OBJECT_0) {
+ 	    afsi_log("GlobalAutoMap thread completed");
+ 	    CloseHandle( hThreadMountGlobalDrives );
+ 	    hThreadMountGlobalDrives = NULL;
+ 	}
+     }
+ 
      sprintf(szKeyName, "%s\\GlobalAutoMapper", AFSREG_CLT_SVC_PARAM_SUBKEY);
  
      dwResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, szKeyName, 0, KEY_QUERY_VALUE, &hKey);
***************
*** 465,471 ****
  #ifdef AFSIFS    
      /* FIXFIX: implement */
  #else
!     while (1) {
          dwDriveSize = sizeof(szDriveToMapTo);
          dwSubMountSize = sizeof(szSubMount);
          dwResult = RegEnumValue(hKey, dwIndex++, szDriveToMapTo, &dwDriveSize, 0, &dwType, szSubMount, &dwSubMountSize);
--- 501,507 ----
  #ifdef AFSIFS    
      /* FIXFIX: implement */
  #else
!     while (dwIndex < MAX_DRIVES) {
          dwDriveSize = sizeof(szDriveToMapTo);
          dwSubMountSize = sizeof(szSubMount);
          dwResult = RegEnumValue(hKey, dwIndex++, szDriveToMapTo, &dwDriveSize, 0, &dwType, szSubMount, &dwSubMountSize);
Index: openafs/src/WINNT/afsd/afslogon.c
diff -c openafs/src/WINNT/afsd/afslogon.c:1.45.2.3 openafs/src/WINNT/afsd/afslogon.c:1.45.2.4
*** openafs/src/WINNT/afsd/afslogon.c:1.45.2.3	Wed Jul 26 08:51:21 2006
--- openafs/src/WINNT/afsd/afslogon.c	Thu Aug  3 17:55:06 2006
***************
*** 398,404 ****
              hkDoms = NULL;
          }
      } else
!         DebugEvent("Not opening domain key for [%s]", effDomain);
  
      /* Each individual can either be specified on the domain key, the domains key or in the
         net provider key.  They fail over in that order.  If none is found, we just use the 
--- 398,404 ----
              hkDoms = NULL;
          }
      } else
!         DebugEvent("Not opening domain key");
  
      /* Each individual can either be specified on the domain key, the domains key or in the
         net provider key.  They fail over in that order.  If none is found, we just use the 
Index: openafs/src/WINNT/afsd/cm_buf.c
diff -c openafs/src/WINNT/afsd/cm_buf.c:1.31.2.1 openafs/src/WINNT/afsd/cm_buf.c:1.31.2.2
*** openafs/src/WINNT/afsd/cm_buf.c:1.31.2.1	Thu Jun  1 11:40:04 2006
--- openafs/src/WINNT/afsd/cm_buf.c	Thu Aug  3 23:46:39 2006
***************
*** 89,100 ****
  /* set this to 1 when we are terminating to prevent access attempts */
  static int buf_ShutdownFlag = 0;
  
  /* hold a reference to an already held buffer */
  void buf_Hold(cm_buf_t *bp)
  {
      osi_assert(bp->magic == CM_BUF_MAGIC);
      lock_ObtainWrite(&buf_globalLock);
!     bp->refCount++;
      lock_ReleaseWrite(&buf_globalLock);
  }
  
--- 89,131 ----
  /* set this to 1 when we are terminating to prevent access attempts */
  static int buf_ShutdownFlag = 0;
  
+ void buf_HoldLocked(cm_buf_t *bp)
+ {
+     osi_assert(bp->magic == CM_BUF_MAGIC);
+     bp->refCount++;
+ }
+ 
  /* hold a reference to an already held buffer */
  void buf_Hold(cm_buf_t *bp)
  {
+     lock_ObtainWrite(&buf_globalLock);
+     buf_HoldLocked(bp);
+     lock_ReleaseWrite(&buf_globalLock);
+ }
+ 
+ /* code to drop reference count while holding buf_globalLock */
+ void buf_ReleaseLocked(cm_buf_t *bp)
+ {
+     /* ensure that we're in the LRU queue if our ref count is 0 */
      osi_assert(bp->magic == CM_BUF_MAGIC);
+     osi_assert(bp->refCount > 0);
+     if (--bp->refCount == 0) {
+         if (!(bp->flags & CM_BUF_INLRU)) {
+             osi_QAdd((osi_queue_t **) &cm_data.buf_freeListp, &bp->q);
+ 
+             /* watch for transition from empty to one element */
+             if (!cm_data.buf_freeListEndp)
+                 cm_data.buf_freeListEndp = cm_data.buf_freeListp;
+             bp->flags |= CM_BUF_INLRU;
+         }
+     }
+ }       
+ 
+ /* release a buffer.  Buffer must be referenced, but unlocked. */
+ void buf_Release(cm_buf_t *bp)
+ {
      lock_ObtainWrite(&buf_globalLock);
!     buf_ReleaseLocked(bp);
      lock_ReleaseWrite(&buf_globalLock);
  }
  
***************
*** 108,114 ****
  
      lock_ObtainWrite(&buf_globalLock);
      bp = cm_data.buf_allp;
!     bp->refCount++;
      lock_ReleaseWrite(&buf_globalLock);
      nAtOnce = (long)sqrt((double)cm_data.buf_nbuffers);
      while (buf_ShutdownFlag == 0) {
--- 139,145 ----
  
      lock_ObtainWrite(&buf_globalLock);
      bp = cm_data.buf_allp;
!     buf_HoldLocked(bp);
      lock_ReleaseWrite(&buf_globalLock);
      nAtOnce = (long)sqrt((double)cm_data.buf_nbuffers);
      while (buf_ShutdownFlag == 0) {
***************
*** 141,151 ****
               * and so can be followed even when holding no locks.
               */
              lock_ObtainWrite(&buf_globalLock);
!             buf_LockedRelease(bp);
              bp = bp->allp;
              if (!bp) 
                  bp = cm_data.buf_allp;
!             bp->refCount++;
              lock_ReleaseWrite(&buf_globalLock);
          }	/* for loop over a bunch of buffers */
      }		/* whole daemon's while loop */
--- 172,182 ----
               * and so can be followed even when holding no locks.
               */
              lock_ObtainWrite(&buf_globalLock);
!             buf_ReleaseLocked(bp);
              bp = bp->allp;
              if (!bp) 
                  bp = cm_data.buf_allp;
! 	    buf_HoldLocked(bp);
              lock_ReleaseWrite(&buf_globalLock);
          }	/* for loop over a bunch of buffers */
      }		/* whole daemon's while loop */
***************
*** 426,439 ****
          return CM_ERROR_INVAL;
  }
  
- /* release a buffer.  Buffer must be referenced, but unlocked. */
- void buf_Release(cm_buf_t *bp)
- {
-     lock_ObtainWrite(&buf_globalLock);
-     buf_LockedRelease(bp);
-     lock_ReleaseWrite(&buf_globalLock);
- }
- 
  /* wait for reading or writing to clear; called with write-locked
   * buffer and unlocked scp and returns with locked buffer.
   */
--- 457,462 ----
***************
*** 497,523 ****
      osi_Log1(afsd_logp, "WaitIO finished wait for bp 0x%p", bp);
  }
  
- /* code to drop reference count while holding buf_globalLock */
- void buf_LockedRelease(cm_buf_t *bp)
- {
-     /* ensure that we're in the LRU queue if our ref count is 0 */
-     osi_assert(bp->refCount > 0);
-     if (--bp->refCount == 0) {
-         if (!(bp->flags & CM_BUF_INLRU)) {
-             osi_QAdd((osi_queue_t **) &cm_data.buf_freeListp, &bp->q);
- 
-             /* watch for transition from empty to one element */
-             if (!cm_data.buf_freeListEndp)
-                 cm_data.buf_freeListEndp = cm_data.buf_freeListp;
-             bp->flags |= CM_BUF_INLRU;
-         }
-     }
- }       
- 
  /* find a buffer, if any, for a particular file ID and offset.  Assumes
   * that buf_globalLock is write locked when called.
   */
! cm_buf_t *buf_LockedFind(struct cm_scache *scp, osi_hyper_t *offsetp)
  {
      long i;
      cm_buf_t *bp;
--- 520,529 ----
      osi_Log1(afsd_logp, "WaitIO finished wait for bp 0x%p", bp);
  }
  
  /* find a buffer, if any, for a particular file ID and offset.  Assumes
   * that buf_globalLock is write locked when called.
   */
! cm_buf_t *buf_FindLocked(struct cm_scache *scp, osi_hyper_t *offsetp)
  {
      long i;
      cm_buf_t *bp;
***************
*** 527,533 ****
          if (cm_FidCmp(&scp->fid, &bp->fid) == 0
               && offsetp->LowPart == bp->offset.LowPart
               && offsetp->HighPart == bp->offset.HighPart) {
!             bp->refCount++;
              break;
          }
      }
--- 533,539 ----
          if (cm_FidCmp(&scp->fid, &bp->fid) == 0
               && offsetp->LowPart == bp->offset.LowPart
               && offsetp->HighPart == bp->offset.HighPart) {
!             buf_HoldLocked(bp);
              break;
          }
      }
***************
*** 544,550 ****
      cm_buf_t *bp;
  
      lock_ObtainWrite(&buf_globalLock);
!     bp = buf_LockedFind(scp, offsetp);
      lock_ReleaseWrite(&buf_globalLock);
  
      return bp;
--- 550,556 ----
      cm_buf_t *bp;
  
      lock_ObtainWrite(&buf_globalLock);
!     bp = buf_FindLocked(scp, offsetp);
      lock_ReleaseWrite(&buf_globalLock);
  
      return bp;
***************
*** 557,563 ****
   * at any given time, and also ensures that the log is forced sufficiently far,
   * if this buffer contains logged data.
   */
! void buf_LockedCleanAsync(cm_buf_t *bp, cm_req_t *reqp)
  {
      long code = 0;
  
--- 563,569 ----
   * at any given time, and also ensures that the log is forced sufficiently far,
   * if this buffer contains logged data.
   */
! void buf_CleanAsyncLocked(cm_buf_t *bp, cm_req_t *reqp)
  {
      long code = 0;
  
***************
*** 566,576 ****
      while ((bp->flags & CM_BUF_DIRTY) == CM_BUF_DIRTY) {
          lock_ReleaseMutex(&bp->mx);
  
! 	osi_Log1(afsd_logp, "buf_LockedCleanAsync starts I/O on 0x%p", bp);
          code = (*cm_buf_opsp->Writep)(&bp->fid, &bp->offset,
                                         cm_data.buf_blockSize, 0, bp->userp,
                                         reqp);
! 	osi_Log2(afsd_logp, "buf_LockedCleanAsync I/O on 0x%p, done=%d", bp, code);
                  
          lock_ObtainMutex(&bp->mx);
          if (code) 
--- 572,582 ----
      while ((bp->flags & CM_BUF_DIRTY) == CM_BUF_DIRTY) {
          lock_ReleaseMutex(&bp->mx);
  
! 	osi_Log1(afsd_logp, "buf_CleanAsyncLocked starts I/O on 0x%p", bp);
          code = (*cm_buf_opsp->Writep)(&bp->fid, &bp->offset,
                                         cm_data.buf_blockSize, 0, bp->userp,
                                         reqp);
! 	osi_Log2(afsd_logp, "buf_CleanAsyncLocked I/O on 0x%p, done=%d", bp, code);
                  
          lock_ObtainMutex(&bp->mx);
          if (code) 
***************
*** 690,696 ****
          lock_ObtainWrite(&buf_globalLock);
          /* check to see if we lost the race */
          if (scp) {
!             if (bp = buf_LockedFind(scp, offsetp)) {
                  bp->refCount--;
                  lock_ReleaseWrite(&buf_globalLock);
                  return CM_BUF_EXISTS;
--- 696,706 ----
          lock_ObtainWrite(&buf_globalLock);
          /* check to see if we lost the race */
          if (scp) {
!             if (bp = buf_FindLocked(scp, offsetp)) {
! 		/* Do not call buf_ReleaseLocked() because we 
! 		 * do not want to allow the buffer to be added
! 		 * to the free list.
! 		 */
                  bp->refCount--;
                  lock_ReleaseWrite(&buf_globalLock);
                  return CM_BUF_EXISTS;
***************
*** 754,760 ****
                   * just the lock required to minimize contention
                   * on the big lock.
                   */
!                 bp->refCount++;
                  lock_ReleaseWrite(&buf_globalLock);
  
                  /* grab required lock and clean; this only
--- 764,770 ----
                   * just the lock required to minimize contention
                   * on the big lock.
                   */
!                 buf_HoldLocked(bp);
                  lock_ReleaseWrite(&buf_globalLock);
  
                  /* grab required lock and clean; this only
***************
*** 1073,1079 ****
      osi_assert(bp->magic == CM_BUF_MAGIC);
  
      lock_ObtainMutex(&bp->mx);
!     buf_LockedCleanAsync(bp, reqp);
      lock_ReleaseMutex(&bp->mx);
  }       
  
--- 1083,1089 ----
      osi_assert(bp->magic == CM_BUF_MAGIC);
  
      lock_ObtainMutex(&bp->mx);
!     buf_CleanAsyncLocked(bp, reqp);
      lock_ReleaseMutex(&bp->mx);
  }       
  
***************
*** 1138,1144 ****
      for(i=0; i<cm_data.buf_hashSize; i++) {
          for(bp = cm_data.buf_hashTablepp[i]; bp; bp = bp->hashp) {
              if ((bp->flags & CM_BUF_DIRTY) == CM_BUF_DIRTY) {
!                 bp->refCount++;
                  lock_ReleaseWrite(&buf_globalLock);
  
                  /* now no locks are held; clean buffer and go on */
--- 1148,1154 ----
      for(i=0; i<cm_data.buf_hashSize; i++) {
          for(bp = cm_data.buf_hashTablepp[i]; bp; bp = bp->hashp) {
              if ((bp->flags & CM_BUF_DIRTY) == CM_BUF_DIRTY) {
!                 buf_HoldLocked(bp);
                  lock_ReleaseWrite(&buf_globalLock);
  
                  /* now no locks are held; clean buffer and go on */
***************
*** 1148,1154 ****
  
                  /* relock and release buffer */
                  lock_ObtainWrite(&buf_globalLock);
!                 buf_LockedRelease(bp);
              } /* dirty */
          } /* over one bucket */
      }	/* for loop over all hash buckets */
--- 1158,1164 ----
  
                  /* relock and release buffer */
                  lock_ObtainWrite(&buf_globalLock);
!                 buf_ReleaseLocked(bp);
              } /* dirty */
          } /* over one bucket */
      }	/* for loop over all hash buckets */
***************
*** 1228,1234 ****
      osi_hyper_t bufEnd;
      long code;
      long bufferPos;
-     int didRelease;
      long i;
  
      /* assert that cm_bufCreateLock is held in write mode */
--- 1238,1243 ----
***************
*** 1243,1252 ****
          return 0;
      }
  
!     bufp->refCount++;
      lock_ReleaseWrite(&buf_globalLock);
      for(; bufp; bufp = nbufp) {
-         didRelease = 0;
          lock_ObtainMutex(&bufp->mx);
  
          bufEnd.HighPart = 0;
--- 1252,1260 ----
          return 0;
      }
  
!     buf_HoldLocked(bufp);
      lock_ReleaseWrite(&buf_globalLock);
      for(; bufp; bufp = nbufp) {
          lock_ObtainMutex(&bufp->mx);
  
          bufEnd.HighPart = 0;
***************
*** 1267,1280 ****
                            | CM_SCACHESYNC_GETSTATUS
                            | CM_SCACHESYNC_SETSIZE
                            | CM_SCACHESYNC_BUFLOCKED);
!         /* if we succeeded in our locking, and this applies to the right
           * file, and the truncate request overlaps the buffer either
           * totally or partially, then do something.
           */
          if (code == 0 && cm_FidCmp(&bufp->fid, &scp->fid) == 0
               && LargeIntegerLessThan(*sizep, bufEnd)) {
  
-             lock_ObtainWrite(&buf_globalLock);
  
              /* destroy the buffer, turning off its dirty bit, if
               * we're truncating the whole buffer.  Otherwise, set
--- 1275,1290 ----
                            | CM_SCACHESYNC_GETSTATUS
                            | CM_SCACHESYNC_SETSIZE
                            | CM_SCACHESYNC_BUFLOCKED);
! 
! 	
! 	lock_ObtainWrite(&buf_globalLock);
! 	/* if we succeeded in our locking, and this applies to the right
           * file, and the truncate request overlaps the buffer either
           * totally or partially, then do something.
           */
          if (code == 0 && cm_FidCmp(&bufp->fid, &scp->fid) == 0
               && LargeIntegerLessThan(*sizep, bufEnd)) {
  
  
              /* destroy the buffer, turning off its dirty bit, if
               * we're truncating the whole buffer.  Otherwise, set
***************
*** 1301,1342 ****
                  memset(bufp->datap + bufferPos, 0,
                          cm_data.buf_blockSize - bufferPos);
              }
- 
-             lock_ReleaseWrite(&buf_globalLock);
          }
  		
          lock_ReleaseMutex(&scp->mx);
          lock_ReleaseMutex(&bufp->mx);
!         if (!didRelease) {
!             lock_ObtainWrite(&buf_globalLock);
!             nbufp = bufp->fileHashp;
!             if (nbufp) nbufp->refCount++;
!             buf_LockedRelease(bufp);
!             lock_ReleaseWrite(&buf_globalLock);
!         }
! 
!         /* bail out early if we fail */
!         if (code) {
!             /* at this point, nbufp is held; bufp has already been
!              * released.
!              */
!             if (nbufp) 
!                 buf_Release(nbufp);
! 
! #ifdef TESTING
!             buf_ValidateBufQueues();
! #endif /* TESTING */
! 
!             return code;
!         }
      }
  
  #ifdef TESTING
      buf_ValidateBufQueues();
  #endif /* TESTING */
  
!     /* success */
!     return 0;
  }
  
  long buf_FlushCleanPages(cm_scache_t *scp, cm_user_t *userp, cm_req_t *reqp)
--- 1311,1340 ----
                  memset(bufp->datap + bufferPos, 0,
                          cm_data.buf_blockSize - bufferPos);
              }
          }
  		
          lock_ReleaseMutex(&scp->mx);
          lock_ReleaseMutex(&bufp->mx);
!     
! 	if (!code) {
! 	    nbufp = bufp->fileHashp;
! 	    if (nbufp) 
! 		buf_HoldLocked(nbufp);
! 	} else {
! 	    /* This forces the loop to end and the error code
! 	     * to be returned. */
! 	    nbufp = NULL;
! 	}
! 	buf_ReleaseLocked(bufp);
! 	lock_ReleaseWrite(&buf_globalLock);
      }
  
  #ifdef TESTING
      buf_ValidateBufQueues();
  #endif /* TESTING */
  
!     /* done */
!     return code;
  }
  
  long buf_FlushCleanPages(cm_scache_t *scp, cm_user_t *userp, cm_req_t *reqp)
***************
*** 1353,1360 ****
      lock_ObtainWrite(&buf_globalLock);
      bp = cm_data.buf_fileHashTablepp[i];
      if (bp) 
!         bp->refCount++;
      lock_ReleaseWrite(&buf_globalLock);
      for (; bp; bp = nbp) {
          didRelease = 0;	/* haven't released this buffer yet */
  
--- 1351,1359 ----
      lock_ObtainWrite(&buf_globalLock);
      bp = cm_data.buf_fileHashTablepp[i];
      if (bp) 
!         buf_HoldLocked(bp);
      lock_ReleaseWrite(&buf_globalLock);
+     
      for (; bp; bp = nbp) {
          didRelease = 0;	/* haven't released this buffer yet */
  
***************
*** 1363,1369 ****
              lock_ObtainMutex(&bp->mx);
  
              /* start cleaning the buffer, and wait for it to finish */
!             buf_LockedCleanAsync(bp, reqp);
              buf_WaitIO(scp, bp);
              lock_ReleaseMutex(&bp->mx);
  
--- 1362,1368 ----
              lock_ObtainMutex(&bp->mx);
  
              /* start cleaning the buffer, and wait for it to finish */
!             buf_CleanAsyncLocked(bp, reqp);
              buf_WaitIO(scp, bp);
              lock_ReleaseMutex(&bp->mx);
  
***************
*** 1377,1386 ****
               */
              if (!(bp->flags & CM_BUF_DIRTY)) {
                  if (bp->refCount == 1) {	/* bp is held above */
-                     buf_LockedRelease(bp);
                      nbp = bp->fileHashp;
                      if (nbp) 
!                         nbp->refCount++;
                      didRelease = 1;
                      buf_Recycle(bp);
                  }
--- 1376,1385 ----
               */
              if (!(bp->flags & CM_BUF_DIRTY)) {
                  if (bp->refCount == 1) {	/* bp is held above */
                      nbp = bp->fileHashp;
                      if (nbp) 
!                         buf_HoldLocked(nbp);
!                     buf_ReleaseLocked(bp);
                      didRelease = 1;
                      buf_Recycle(bp);
                  }
***************
*** 1393,1407 ****
        skip:
          if (!didRelease) {
              lock_ObtainWrite(&buf_globalLock);
!             if (nbp = bp->fileHashp) 
!                 nbp->refCount++;
!             buf_LockedRelease(bp);
              lock_ReleaseWrite(&buf_globalLock);
          }
      }	/* for loop over a bunch of buffers */
  
  #ifdef TESTING
!             buf_ValidateBufQueues();
  #endif /* TESTING */
  
      /* done */
--- 1392,1407 ----
        skip:
          if (!didRelease) {
              lock_ObtainWrite(&buf_globalLock);
!             nbp = bp->fileHashp;
! 	    if (nbp)
!                 buf_HoldLocked(nbp);
!             buf_ReleaseLocked(bp);
              lock_ReleaseWrite(&buf_globalLock);
          }
      }	/* for loop over a bunch of buffers */
  
  #ifdef TESTING
!     buf_ValidateBufQueues();
  #endif /* TESTING */
  
      /* done */
***************
*** 1421,1427 ****
      lock_ObtainWrite(&buf_globalLock);
      bp = cm_data.buf_fileHashTablepp[i];
      if (bp) 
!         bp->refCount++;
      lock_ReleaseWrite(&buf_globalLock);
      for (; bp; bp = nbp) {
          /* clean buffer synchronously */
--- 1421,1427 ----
      lock_ObtainWrite(&buf_globalLock);
      bp = cm_data.buf_fileHashTablepp[i];
      if (bp) 
!         buf_HoldLocked(bp);
      lock_ReleaseWrite(&buf_globalLock);
      for (; bp; bp = nbp) {
          /* clean buffer synchronously */
***************
*** 1447,1456 ****
          }
  
          lock_ObtainWrite(&buf_globalLock);
-         buf_LockedRelease(bp);
          nbp = bp->fileHashp;
          if (nbp) 
!             nbp->refCount++;
          lock_ReleaseWrite(&buf_globalLock);
      }	/* for loop over a bunch of buffers */
  
--- 1447,1456 ----
          }
  
          lock_ObtainWrite(&buf_globalLock);
          nbp = bp->fileHashp;
          if (nbp) 
!             buf_HoldLocked(nbp);
!         buf_ReleaseLocked(bp);
          lock_ReleaseWrite(&buf_globalLock);
      }	/* for loop over a bunch of buffers */
  
Index: openafs/src/WINNT/afsd/cm_buf.h
diff -c openafs/src/WINNT/afsd/cm_buf.h:1.12 openafs/src/WINNT/afsd/cm_buf.h:1.12.4.1
*** openafs/src/WINNT/afsd/cm_buf.h:1.12	Fri Nov 18 18:45:02 2005
--- openafs/src/WINNT/afsd/cm_buf.h	Thu Aug  3 23:46:39 2006
***************
*** 146,154 ****
  
  extern void buf_WaitIO(cm_scache_t *, cm_buf_t *);
  
! extern void buf_LockedRelease(cm_buf_t *);
  
! extern cm_buf_t *buf_LockedFind(struct cm_scache *, osi_hyper_t *);
  
  extern cm_buf_t *buf_Find(struct cm_scache *, osi_hyper_t *);
  
--- 146,156 ----
  
  extern void buf_WaitIO(cm_scache_t *, cm_buf_t *);
  
! extern void buf_ReleaseLocked(cm_buf_t *);
  
! extern void buf_HoldLocked(cm_buf_t *);
! 
! extern cm_buf_t *buf_FindLocked(struct cm_scache *, osi_hyper_t *);
  
  extern cm_buf_t *buf_Find(struct cm_scache *, osi_hyper_t *);
  
***************
*** 156,169 ****
  extern HANDLE buf_GetFileHandle(long);
  #endif /* !DJGPP */
  
- extern void buf_LockedCleanAsync(cm_buf_t *, cm_req_t *);
- 
  extern long buf_GetNewLocked(struct cm_scache *, osi_hyper_t *, cm_buf_t **);
  
  extern long buf_Get(struct cm_scache *, osi_hyper_t *, cm_buf_t **);
  
  extern long buf_GetNew(struct cm_scache *, osi_hyper_t *, cm_buf_t **);
  
  extern void buf_CleanAsync(cm_buf_t *, cm_req_t *);
  
  extern void buf_CleanWait(cm_scache_t *, cm_buf_t *);
--- 158,171 ----
  extern HANDLE buf_GetFileHandle(long);
  #endif /* !DJGPP */
  
  extern long buf_GetNewLocked(struct cm_scache *, osi_hyper_t *, cm_buf_t **);
  
  extern long buf_Get(struct cm_scache *, osi_hyper_t *, cm_buf_t **);
  
  extern long buf_GetNew(struct cm_scache *, osi_hyper_t *, cm_buf_t **);
  
+ extern void buf_CleanAsyncLocked(cm_buf_t *, cm_req_t *);
+ 
  extern void buf_CleanAsync(cm_buf_t *, cm_req_t *);
  
  extern void buf_CleanWait(cm_scache_t *, cm_buf_t *);
Index: openafs/src/WINNT/afsd/cm_conn.c
diff -c openafs/src/WINNT/afsd/cm_conn.c:1.49.2.4 openafs/src/WINNT/afsd/cm_conn.c:1.49.2.5
*** openafs/src/WINNT/afsd/cm_conn.c:1.49.2.4	Mon Jul 10 15:27:30 2006
--- openafs/src/WINNT/afsd/cm_conn.c	Tue Aug  8 12:39:17 2006
***************
*** 20,25 ****
--- 20,26 ----
  #include <rx/rx.h>
  #include <rx/rxkad.h>
  #include <afs/unified_afs.h>
+ #include <WINNT/afsreg.h>
  
  osi_rwlock_t cm_connLock;
  
***************
*** 41,50 ****
  
  void cm_InitConn(void)
  {
! 	static osi_once_t once;
! 	long code;
! 	DWORD sessTimeout;
! 	HKEY parmKey;
          
      if (osi_Once(&once)) {
  	lock_InitializeRWLock(&cm_connLock, "connection global lock");
--- 42,52 ----
  
  void cm_InitConn(void)
  {
!     static osi_once_t once;
!     long code;
!     DWORD dwValue;
!     DWORD dummyLen;
!     HKEY parmKey;
          
      if (osi_Once(&once)) {
  	lock_InitializeRWLock(&cm_connLock, "connection global lock");
***************
*** 60,84 ****
  			    0, KEY_QUERY_VALUE, &parmKey);
  	if (code == ERROR_SUCCESS)
          {
! 	    DWORD dummyLen = sizeof(sessTimeout);
  	    code = RegQueryValueEx(parmKey, LANMAN_WKS_SESSION_TIMEOUT, NULL, NULL, 
! 				   (BYTE *) &sessTimeout, &dummyLen);
  	    if (code == ERROR_SUCCESS)
!             {
!                 RDRtimeout = sessTimeout;
! 	    }
          }
  
! 	afsi_log("lanmanworkstation : SessTimeout %d", sessTimeout);
! 	if ( ConnDeadtimeout < RDRtimeout + 15 ) {
! 	    ConnDeadtimeout = RDRtimeout + 15;
! 	    afsi_log("ConnDeadTimeout increased to %d", ConnDeadtimeout);
! 	}
! 	if ( HardDeadtimeout < 2 * ConnDeadtimeout ) {
! 	    HardDeadtimeout = 2 * ConnDeadtimeout;
! 	    afsi_log("HardDeadTimeout increased to %d", HardDeadtimeout);
  	}
  
  	osi_EndOnce(&once);
      }
  }
--- 62,101 ----
  			    0, KEY_QUERY_VALUE, &parmKey);
  	if (code == ERROR_SUCCESS)
          {
! 	    dummyLen = sizeof(DWORD);
  	    code = RegQueryValueEx(parmKey, LANMAN_WKS_SESSION_TIMEOUT, NULL, NULL, 
! 				   (BYTE *) &dwValue, &dummyLen);
  	    if (code == ERROR_SUCCESS)
!                 RDRtimeout = dwValue;
! 	    RegCloseKey(parmKey);
          }
  
! 	code = RegOpenKeyEx(HKEY_LOCAL_MACHINE, AFSREG_CLT_SVC_PARAM_SUBKEY,
! 			     0, KEY_QUERY_VALUE, &parmKey);
! 	if (code == ERROR_SUCCESS) {
! 	    dummyLen = sizeof(DWORD);
! 	    code = RegQueryValueEx(parmKey, "ConnDeadTimeout", NULL, NULL,
! 				    (BYTE *) &dwValue, &dummyLen);
! 	    if (code == ERROR_SUCCESS)
!                 ConnDeadtimeout = dwValue;
! 
! 	    dummyLen = sizeof(DWORD);
! 	    code = RegQueryValueEx(parmKey, "HardDeadTimeout", NULL, NULL,
! 				    (BYTE *) &dwValue, &dummyLen);
! 	    if (code == ERROR_SUCCESS)
!                 HardDeadtimeout = dwValue;
! 	    afsi_log("HardDeadTimeout is %d", HardDeadtimeout);
! 	    RegCloseKey(parmKey);
  	}
  
+ 	afsi_log("lanmanworkstation : SessTimeout %d", RDRtimeout);
+ 	if (ConnDeadtimeout == 0)
+ 	    ConnDeadtimeout = RDRtimeout / 2;
+ 	afsi_log("ConnDeadTimeout is %d", ConnDeadtimeout);
+ 	if (HardDeadtimeout == 0)
+ 	    HardDeadtimeout = RDRtimeout;
+ 	afsi_log("HardDeadTimeout is %d", HardDeadtimeout);
+ 
  	osi_EndOnce(&once);
      }
  }
Index: openafs/src/WINNT/afsd/cm_conn.h
diff -c openafs/src/WINNT/afsd/cm_conn.h:1.13.4.2 openafs/src/WINNT/afsd/cm_conn.h:1.13.4.3
*** openafs/src/WINNT/afsd/cm_conn.h:1.13.4.2	Wed Jun 28 01:34:50 2006
--- openafs/src/WINNT/afsd/cm_conn.h	Tue Aug  8 12:39:17 2006
***************
*** 11,18 ****
  #define __CM_CONN_H_ENV__ 1
  
  #define	CM_CONN_DEFAULTRDRTIMEOUT	45
! #define CM_CONN_CONNDEADTIME		60
! #define CM_CONN_HARDDEADTIME        120
  
  extern unsigned short ConnDeadtimeout;
  extern unsigned short HardDeadtimeout;
--- 11,18 ----
  #define __CM_CONN_H_ENV__ 1
  
  #define	CM_CONN_DEFAULTRDRTIMEOUT	45
! #define CM_CONN_CONNDEADTIME		 0
! #define CM_CONN_HARDDEADTIME             0
  
  extern unsigned short ConnDeadtimeout;
  extern unsigned short HardDeadtimeout;
Index: openafs/src/WINNT/afsd/cm_dcache.c
diff -c openafs/src/WINNT/afsd/cm_dcache.c:1.30.2.1 openafs/src/WINNT/afsd/cm_dcache.c:1.30.2.2
*** openafs/src/WINNT/afsd/cm_dcache.c:1.30.2.1	Sat Jun 24 16:41:54 2006
--- openafs/src/WINNT/afsd/cm_dcache.c	Wed Aug  9 19:49:41 2006
***************
*** 1060,1067 ****
          /* add the buffer to the list */
          qdp = osi_QDAlloc();
          osi_SetQData(qdp, tbp);
!         osi_QAdd((osi_queue_t **)&heldBufListp, &qdp->q);
!         if (!heldBufListEndp) heldBufListEndp = qdp;
          /* leave tbp held (from buf_Get) */
  
          if (!reserving) 
--- 1060,1068 ----
          /* add the buffer to the list */
          qdp = osi_QDAlloc();
          osi_SetQData(qdp, tbp);
!         osi_QAddH((osi_queue_t **)&heldBufListp, 
! 		  (osi_queue_t **)&heldBufListEndp, 
! 		  &qdp->q);
          /* leave tbp held (from buf_Get) */
  
          if (!reserving) 
***************
*** 1129,1137 ****
          /* add the buffer to the list */
          qdp = osi_QDAlloc();
          osi_SetQData(qdp, tbp);
!         osi_QAdd((osi_queue_t **)&biop->bufListp, &qdp->q);
!         if (!biop->bufListEndp) 
!             biop->bufListEndp = qdp;
          buf_Hold(tbp);
  
          /* from now on, a failure just stops our collection process, but
--- 1130,1138 ----
          /* add the buffer to the list */
          qdp = osi_QDAlloc();
          osi_SetQData(qdp, tbp);
!         osi_QAddH((osi_queue_t **)&biop->bufListp, 
! 		  (osi_queue_t **)&biop->bufListEndp, 
! 		  &qdp->q);
          buf_Hold(tbp);
  
          /* from now on, a failure just stops our collection process, but
***************
*** 1148,1153 ****
--- 1149,1157 ----
      for (qdp = heldBufListp; qdp; qdp = tqdp) {
          tqdp = (osi_queueData_t *) osi_QNext(&qdp->q);
          tbp = osi_GetQData(qdp);
+ 	osi_QRemoveHT((osi_queue_t **) &heldBufListp,
+ 		      (osi_queue_t **) &heldBufListEndp,
+ 		      &qdp->q);
          osi_QDFree(qdp);
          buf_Release(tbp);
      }
***************
*** 1200,1205 ****
--- 1204,1212 ----
                  
          /* extract buffer and free queue data */
          bufp = osi_GetQData(qdp);
+ 	osi_QRemoveHT((osi_queue_t **) &biop->bufListp,
+ 		      (osi_queue_t **) &biop->bufListEndp,
+ 		      &qdp->q);
          osi_QDFree(qdp);
  
          /* now, mark I/O as done, unlock the buffer and release it */
Index: openafs/src/WINNT/afsd/smb.c
diff -c openafs/src/WINNT/afsd/smb.c:1.118.2.16 openafs/src/WINNT/afsd/smb.c:1.118.2.17
*** openafs/src/WINNT/afsd/smb.c:1.118.2.16	Mon Jul 31 11:51:38 2006
--- openafs/src/WINNT/afsd/smb.c	Thu Aug  3 19:30:28 2006
***************
*** 141,147 ****
  int smb_useV3;		/* try to negotiate V3 */
  
  #ifndef DJGPP
! static showErrors = 1;
  /* MessageBox or something like it */
  int (_stdcall *smb_MBfunc)(HWND, LPCTSTR, LPCTSTR, UINT) = NULL;
  #endif /* DJGPP */
--- 141,147 ----
  int smb_useV3;		/* try to negotiate V3 */
  
  #ifndef DJGPP
! static showErrors = 0;
  /* MessageBox or something like it */
  int (_stdcall *smb_MBfunc)(HWND, LPCTSTR, LPCTSTR, UINT) = NULL;
  #endif /* DJGPP */
***************
*** 8177,8184 ****
              if (showErrors)
                  code = (*smb_MBfunc)(NULL, tbuffer, "AFS Client Service: Fatal Error",
                                        MB_OK|MB_SERVICE_NOTIFICATION);
!             osi_assert(tbuffer);
!             ExitThread(1);
  #else
              fprintf(stderr, "NCBLISTEN lana=%d failed with code %d\n",
                       ncbp->ncb_lana_num, code);
--- 8177,8183 ----
              if (showErrors)
                  code = (*smb_MBfunc)(NULL, tbuffer, "AFS Client Service: Fatal Error",
                                        MB_OK|MB_SERVICE_NOTIFICATION);
! 	    osi_panic(tbuffer, __FILE__, __LINE__);
  #else
              fprintf(stderr, "NCBLISTEN lana=%d failed with code %d\n",
                       ncbp->ncb_lana_num, code);
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.2 openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes-frames.htm:1.1.4.3
*** openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes-frames.htm:1.1.4.2	Wed Jul 19 00:15:17 2006
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes-frames.htm	Thu Aug 10 00:07:04 2006
***************
*** 3,9 ****
  <head>
  <meta http-equiv=Content-Type content="text/html; charset=windows-1252">
  <meta name=Generator content="Microsoft Word 11 (filtered)">
! <title>OpenAFS for Windows 1.5.3 Release Notes</title>
  <style>
  <!--
   /* Font Definitions */
--- 3,9 ----
  <head>
  <meta http-equiv=Content-Type content="text/html; charset=windows-1252">
  <meta name=Generator content="Microsoft Word 11 (filtered)">
! <title>OpenAFS for Windows 1.5.6 Release Notes</title>
  <style>
  <!--
   /* Font Definitions */
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.1 openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes.htm:1.6.4.2
*** openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes.htm:1.6.4.1	Wed Jul 19 00:08:46 2006
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/relnotes.htm	Thu Aug 10 00:07:04 2006
***************
*** 3,9 ****
  <head>
  <meta http-equiv=Content-Type content="text/html; charset=windows-1252">
  <meta name=Generator content="Microsoft Word 11 (filtered)">
! <title>OpenAFS for Windows 1.5.3 Release Notes</title>
  
  <style>
  <!--
--- 3,9 ----
  <head>
  <meta http-equiv=Content-Type content="text/html; charset=windows-1252">
  <meta name=Generator content="Microsoft Word 11 (filtered)">
! <title>OpenAFS for Windows 1.5.6 Release Notes</title>
  
  <style>
  <!--
***************
*** 306,312 ****
  
  <div class=Section1>
  
! <p class=MsoTitle>OpenAFS for Windows 1.5.3<br>
  Release Notes</p>
  
  <p class=MsoBodyText>The Andrew File System (AFS) is a location-independent
--- 306,312 ----
  
  <div class=Section1>
  
! <p class=MsoTitle>OpenAFS for Windows 1.5.6<br>
  Release Notes</p>
  
  <p class=MsoBodyText>The Andrew File System (AFS) is a location-independent
***************
*** 354,397 ****
  continued growth.</p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="../../oafw-1-4-release-notes.doc#_Toc115417109">1. Installer Options<span
  style='color:windowtext;display:none;text-decoration:none'>. </span><span
  style='color:windowtext;display:none;text-decoration:none'>1</span></a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="../../oafw-1-4-release-notes.doc#_Toc115417110">2. System Requirements<span
  style='color:windowtext;display:none;text-decoration:none'>. </span><span
  style='color:windowtext;display:none;text-decoration:none'>2</span></a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="../../oafw-1-4-release-notes.doc#_Toc115417111">3. Operational Notes<span
  style='color:windowtext;display:none;text-decoration:none'>. </span><span
  style='color:windowtext;display:none;text-decoration:none'>2</span></a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="../../oafw-1-4-release-notes.doc#_Toc115417112">4. How to Debug Problems
  with OpenAFS for Windows:<span style='color:windowtext;display:none;text-decoration:
  none'> </span><span
  style='color:windowtext;display:none;text-decoration:none'>11</span></a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="../../oafw-1-4-release-notes.doc#_Toc115417113">5. Reporting Bugs:<span
  style='color:windowtext;display:none;text-decoration:none'> </span><span
  style='color:windowtext;display:none;text-decoration:none'>13</span></a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="../../oafw-1-4-release-notes.doc#_Toc115417114">6. How to Contribute to
  the Development of OpenAFS for Windows<span style='color:windowtext;display:
  none;text-decoration:none'>. </span><span
  style='color:windowtext;display:none;text-decoration:none'>14</span></a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="../../oafw-1-4-release-notes.doc#_Toc115417115">7. MSI Deployment Guide<span
  style='color:windowtext;display:none;text-decoration:none'>. </span><span
  style='color:windowtext;display:none;text-decoration:none'>15</span></a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="../../oafw-1-4-release-notes.doc#_Toc115417116">Appendix A: Registry
  Values<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
  style='color:windowtext;display:none;text-decoration:none'>26</span></a></span></p>
  
--- 354,397 ----
  continued growth.</p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="#_Toc115417109">1. Installer Options<span
  style='color:windowtext;display:none;text-decoration:none'>. </span><span
  style='color:windowtext;display:none;text-decoration:none'>1</span></a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="#_Toc115417110">2. System Requirements<span
  style='color:windowtext;display:none;text-decoration:none'>. </span><span
  style='color:windowtext;display:none;text-decoration:none'>2</span></a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="#_Toc115417111">3. Operational Notes<span
  style='color:windowtext;display:none;text-decoration:none'>. </span><span
  style='color:windowtext;display:none;text-decoration:none'>2</span></a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="#_Toc115417112">4. How to Debug Problems
  with OpenAFS for Windows:<span style='color:windowtext;display:none;text-decoration:
  none'> </span><span
  style='color:windowtext;display:none;text-decoration:none'>11</span></a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="#_Toc115417113">5. Reporting Bugs:<span
  style='color:windowtext;display:none;text-decoration:none'> </span><span
  style='color:windowtext;display:none;text-decoration:none'>13</span></a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="#_Toc115417114">6. How to Contribute to
  the Development of OpenAFS for Windows<span style='color:windowtext;display:
  none;text-decoration:none'>. </span><span
  style='color:windowtext;display:none;text-decoration:none'>14</span></a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="#_Toc115417115">7. MSI Deployment Guide<span
  style='color:windowtext;display:none;text-decoration:none'>. </span><span
  style='color:windowtext;display:none;text-decoration:none'>15</span></a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="#_Toc115417116">Appendix A: Registry
  Values<span style='color:windowtext;display:none;text-decoration:none'>. </span><span
  style='color:windowtext;display:none;text-decoration:none'>26</span></a></span></p>
  
***************
*** 412,418 ****
  style='font-size:9.0pt'>2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span></span>a Windows Installer package (.msi) that is built using WiX and
  can be customized for organizations via the use of MSI Transforms (see <a
! href="../../oafw-1-4-release-notes.doc#_MSI_Deployment_Guide">MSI Deployment
  Guide</a>)</p>
  
  <h1 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139993083"></a><a
--- 412,418 ----
  style='font-size:9.0pt'>2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
  </span></span>a Windows Installer package (.msi) that is built using WiX and
  can be customized for organizations via the use of MSI Transforms (see <a
! href="#_MSI_Deployment_Guide">MSI Deployment
  Guide</a>)</p>
  
  <h1 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139993083"></a><a
***************
*** 571,577 ****
  and the principal names placed into the ACL’s are not the principal names from
  the Kerberos 5 ticket.  To support this transition, OpenAFS for Windows 1.4
  adds a new registry value, <i><a
! href="../../oafw-1-4-release-notes.doc#_Value___: Use524">Use524</a></i>, to
  force the use of krb524d.  However, the availability of this option should only
  be used by individuals until such time as their organizations can provide a
  more permanent solution.</p>
--- 571,577 ----
  and the principal names placed into the ACL’s are not the principal names from
  the Kerberos 5 ticket.  To support this transition, OpenAFS for Windows 1.4
  adds a new registry value, <i><a
! href="#_Value___: Use524">Use524</a></i>, to
  force the use of krb524d.  However, the availability of this option should only
  be used by individuals until such time as their organizations can provide a
  more permanent solution.</p>
***************
*** 661,667 ****
  points are preserved in the registry at key:</p>
  
  <p class=PreformattedText style='margin-left:35.45pt'><a
! href="../../oafw-1-4-release-notes.doc#_Regkey:_[HKLMSOFTWAREOpenAFSClie">HKLM\SOFTWARE\OpenAFS\Client\Freelance</a></p>
  
  <p class=MsoNormal>Additional mount points may be manually created using the
  &quot;fs mkmount&quot; command.  Mount points may be removed using the &quot;fs
--- 661,667 ----
  points are preserved in the registry at key:</p>
  
  <p class=PreformattedText style='margin-left:35.45pt'><a
! href="#_Regkey:_[HKLMSOFTWAREOpenAFSClie">HKLM\SOFTWARE\OpenAFS\Client\Freelance</a></p>
  
  <p class=MsoNormal>Additional mount points may be manually created using the
  &quot;fs mkmount&quot; command.  Mount points may be removed using the &quot;fs
***************
*** 695,701 ****
  <p class=MsoNormal>The symlinks are stored in the registry at:</p>
  
  <p class=PreformattedText style='margin-left:35.45pt'><a
! href="../../oafw-1-4-release-notes.doc#_Regkey:_[HKLMSOFTWAREOpenAFSClie_1">HKLM\SOFTWARE\OpenAFS\Client\Freelance\Symlinks</a> </p>
  
  <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139993094"></a><a
  name="_Toc126872175"></a><a name="_Toc115417046"></a><a name="_Toc115416110">3.4.
--- 695,701 ----
  <p class=MsoNormal>The symlinks are stored in the registry at:</p>
  
  <p class=PreformattedText style='margin-left:35.45pt'><a
! href="#_Regkey:_[HKLMSOFTWAREOpenAFSClie_1">HKLM\SOFTWARE\OpenAFS\Client\Freelance\Symlinks</a> </p>
  
  <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139993094"></a><a
  name="_Toc126872175"></a><a name="_Toc115417046"></a><a name="_Toc115416110">3.4.
***************
*** 738,744 ****
  <p class=MsoNormal>Integrated Login supports the ability to obtain tokens for
  multiple cells.  For further information on how to configure this feature read
  the <a href="../relnotes.htm#_Value:_TheseCells">TheseCells</a> value in <a
! href="../../oafw-1-4-release-notes.doc#_Appendix_A:_Registry_Values">Appendix A</a>.</p>
  
  <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139993096"></a><a
  name="_Toc126872177"></a><a name="_Toc115417048"></a><a name="_Toc115416112">3.6.
--- 738,744 ----
  <p class=MsoNormal>Integrated Login supports the ability to obtain tokens for
  multiple cells.  For further information on how to configure this feature read
  the <a href="../relnotes.htm#_Value:_TheseCells">TheseCells</a> value in <a
! href="#_Appendix_A:_Registry_Values">Appendix A</a>.</p>
  
  <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139993096"></a><a
  name="_Toc126872177"></a><a name="_Toc115417048"></a><a name="_Toc115416112">3.6.
***************
*** 787,794 ****
  user interface to change this selection after install time although these
  options may be altered via the registry on either per machine or per user
  basis.  See <a
! href="../../oafw-1-4-release-notes.doc#_Value___: AfscredsShortcutParams">AfscredsShortcutParams</a>
! in <a href="../../oafw-1-4-release-notes.doc#_Appendix_A:_Registry_Values">Appendix
  A</a>.</p>
  
  <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139993097"></a><a
--- 787,794 ----
  user interface to change this selection after install time although these
  options may be altered via the registry on either per machine or per user
  basis.  See <a
! href="#_Value___: AfscredsShortcutParams">AfscredsShortcutParams</a>
! in <a href="#_Appendix_A:_Registry_Values">Appendix
  A</a>.</p>
  
  <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139993097"></a><a
***************
*** 865,871 ****
  member of the &quot;AFS Client Admins&quot; group.</p>
  
  <p class=MsoNormal>Setting the default sysname for a machine should be done via
! the <a href="../../oafw-1-4-release-notes.doc#_Value_:_SysName">registry</a>
  and not via &quot;fs sysname&quot;.</p>
  
  <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139993098"></a><a
--- 865,871 ----
  member of the &quot;AFS Client Admins&quot; group.</p>
  
  <p class=MsoNormal>Setting the default sysname for a machine should be done via
! the <a href="#_Value_:_SysName">registry</a>
  and not via &quot;fs sysname&quot;.</p>
  
  <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139993098"></a><a
***************
*** 1021,1030 ****
  <p class=MsoNormal>Previous AFS clients for Windows stored configuration data
  in Windows .INI files.   OpenAFS 1.4 does not use Windows .INI files for the storage
  of configuration data.   All settings are now stored in the registry (see <a
! href="../../oafw-1-4-release-notes.doc#_Appendix_A:_Registry_Values">Appendix A</a>). 
  The CellServDB file is now stored in the %PROGRAMFILES%\OpenAFS\Client
  directory.   The <i><a
! href="../../oafw-1-4-release-notes.doc#_Value___: CellServDBDir">CellServDBDir</a></i>
  registry value can be used to specify an alternative location.</p>
  
  <p class=MsoNormal>OpenAFS 1.4 will relocate the contents of the “afsdcell.ini”
--- 1021,1030 ----
  <p class=MsoNormal>Previous AFS clients for Windows stored configuration data
  in Windows .INI files.   OpenAFS 1.4 does not use Windows .INI files for the storage
  of configuration data.   All settings are now stored in the registry (see <a
! href="#_Appendix_A:_Registry_Values">Appendix A</a>). 
  The CellServDB file is now stored in the %PROGRAMFILES%\OpenAFS\Client
  directory.   The <i><a
! href="#_Value___: CellServDBDir">CellServDBDir</a></i>
  registry value can be used to specify an alternative location.</p>
  
  <p class=MsoNormal>OpenAFS 1.4 will relocate the contents of the “afsdcell.ini”
***************
*** 1141,1149 ****
  NT4 accounts.</p>
  
  <p class=MsoNormal>If there is a need to disable this functionality, the <a
! href="../../oafw-1-4-release-notes.doc#_Value_:_LogoffPreserveTokens">LogoffPreserveTokens</a>
  registry value can be used. (see <a
! href="../../oafw-1-4-release-notes.doc#_Appendix_A:_Registry_Values">Appendix A</a>.)</p>
  
  <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139993110"></a><a
  name="_Toc126872191"></a><a name="_Toc115417062"></a><a name="_Toc115416126">3.20.
--- 1141,1149 ----
  NT4 accounts.</p>
  
  <p class=MsoNormal>If there is a need to disable this functionality, the <a
! href="#_Value_:_LogoffPreserveTokens">LogoffPreserveTokens</a>
  registry value can be used. (see <a
! href="#_Appendix_A:_Registry_Values">Appendix A</a>.)</p>
  
  <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139993110"></a><a
  name="_Toc126872191"></a><a name="_Toc115417062"></a><a name="_Toc115416126">3.20.
***************
*** 1204,1212 ****
  </p>
  
  <p class=MsoNormal><a
! href="../../oafw-1-4-release-notes.doc#_Appendix_A:_Registry_Values">Appendix A</a>
  documents the &quot;<a
! href="../../oafw-1-4-release-notes.doc#_Value___: VerifyServiceSignature">VerifyServiceSignature</a>&quot;
  registry value which can be used to disable the signature check.  The file
  version check cannot be disabled.</p>
  
--- 1204,1212 ----
  </p>
  
  <p class=MsoNormal><a
! href="#_Appendix_A:_Registry_Values">Appendix A</a>
  documents the &quot;<a
! href="#_Value___: VerifyServiceSignature">VerifyServiceSignature</a>&quot;
  registry value which can be used to disable the signature check.  The file
  version check cannot be disabled.</p>
  
***************
*** 1278,1284 ****
  <p class=PreformattedText>&nbsp;</p>
  
  <p class=MsoNormal>OpenAFS 1.4 provides an optional registry value, <i><a
! href="../../oafw-1-4-release-notes.doc#_Value___: StoreAnsiFilenames">StoreAnsiFilenames</a></i>,
  that can be set to instruct OpenAFS to store filenames using the ANSI Code Page
  instead of the OEM Code Page.  The ANSI Code Page is a compatible superset of
  Latin-1.  This setting is not the default setting because making this change
--- 1278,1284 ----
  <p class=PreformattedText>&nbsp;</p>
  
  <p class=MsoNormal>OpenAFS 1.4 provides an optional registry value, <i><a
! href="#_Value___: StoreAnsiFilenames">StoreAnsiFilenames</a></i>,
  that can be set to instruct OpenAFS to store filenames using the ANSI Code Page
  instead of the OEM Code Page.  The ANSI Code Page is a compatible superset of
  Latin-1.  This setting is not the default setting because making this change
***************
*** 1387,1395 ****
  <p class=MsoNormal>VLDB and File Server Preferences can now be provided initial
  values using registry keys.  This is useful for managed machines in a Windows
  domain which are centrally located (e.g., in a computing lab.)  See <a
! href="../../oafw-1-4-release-notes.doc#_Appendix_A:_Registry_Values">Appendix A</a>
  for details on the &quot;<a
! href="../../oafw-1-4-release-notes.doc#_Regkey:_[HKLMSOFTWAREOpenAFSClie_2">Server
  Preferences</a>&quot; keys.</p>
  
  <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139993125"></a><a
--- 1387,1395 ----
  <p class=MsoNormal>VLDB and File Server Preferences can now be provided initial
  values using registry keys.  This is useful for managed machines in a Windows
  domain which are centrally located (e.g., in a computing lab.)  See <a
! href="#_Appendix_A:_Registry_Values">Appendix A</a>
  for details on the &quot;<a
! href="#_Regkey:_[HKLMSOFTWAREOpenAFSClie_2">Server
  Preferences</a>&quot; keys.</p>
  
  <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139993125"></a><a
***************
*** 1528,1534 ****
  <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139993134"></a><a
  name="_Toc126872211"></a><a name="_Toc115417082"></a><a name="_Toc115416146">4.1.
  pioctl debugging (</a><a
! href="../../oafw-1-4-release-notes.doc#_Value___: IoctlDebug">IoctlDebug</a>
  registry key)</h2>
  
  <p class=MsoNormal>pioctl (path-based ioctl) calls are used by various tools to
--- 1528,1534 ----
  <h2 style='margin-left:0pt;text-indent:0pt'><a name="_Toc139993134"></a><a
  name="_Toc126872211"></a><a name="_Toc115417082"></a><a name="_Toc115416146">4.1.
  pioctl debugging (</a><a
! href="#_Value___: IoctlDebug">IoctlDebug</a>
  registry key)</h2>
  
  <p class=MsoNormal>pioctl (path-based ioctl) calls are used by various tools to
***************
*** 1599,1605 ****
  in the source code will quickly reveal the reason for the termination.</p>
  
  <p class=MsoNormal>The <i><a
! href="../../oafw-1-4-release-notes.doc#_Value___: MaxLogSize">MaxLogSize</a></i>
  registry value determines the maximum size of the %WINDIR%\TEMP\afsd_init.log
  file.  If the file is larger than this value when OpenAFS Client Service
  starts, the file will be reset to 0 bytes.  If value is set to 0, the file will
--- 1599,1605 ----
  in the source code will quickly reveal the reason for the termination.</p>
  
  <p class=MsoNormal>The <i><a
! href="#_Value___: MaxLogSize">MaxLogSize</a></i>
  registry value determines the maximum size of the %WINDIR%\TEMP\afsd_init.log
  file.  If the file is larger than this value when OpenAFS Client Service
  starts, the file will be reset to 0 bytes.  If value is set to 0, the file will
***************
*** 1615,1621 ****
  being performed.  While running the AFS Client Service keeps an in memory log
  of many of its actions.   The default number of actions preserved at any one
  time is 5000.  This can be adjusted with the <a
! href="../../oafw-1-4-release-notes.doc#_Value_:_TraceBufferSize">registry value</a>:</p>
  
  <p class=PreformattedText> 
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</p>
--- 1615,1621 ----
  being performed.  While running the AFS Client Service keeps an in memory log
  of many of its actions.   The default number of actions preserved at any one
  time is 5000.  This can be adjusted with the <a
! href="#_Value_:_TraceBufferSize">registry value</a>:</p>
  
  <p class=PreformattedText> 
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</p>
***************
*** 1634,1640 ****
  to capture internal OpenAFS Client Service events is to use a tool such as
  Sysinternal's DbgView to capture real-time debugging output.  When the OpenAFS
  Client Service starts and Bit 2 of the <a
! href="../../oafw-1-4-release-notes.doc#_Value__:_TraceOption">TraceOption</a>
  value in the registry is set, all trace log events are output using the Windows
  Debug Monitor interface (OutputDebugString).  </p>
  
--- 1634,1640 ----
  to capture internal OpenAFS Client Service events is to use a tool such as
  Sysinternal's DbgView to capture real-time debugging output.  When the OpenAFS
  Client Service starts and Bit 2 of the <a
! href="#_Value__:_TraceOption">TraceOption</a>
  value in the registry is set, all trace log events are output using the Windows
  Debug Monitor interface (OutputDebugString).  </p>
  
***************
*** 1677,1683 ****
  <p class=MsoNormal>If you are having trouble with the Integrated Logon
  operations it is often useful to be able to obtain a log of what it is
  attempting to do.   Setting Bit 0 of the <a
! href="../../oafw-1-4-release-notes.doc#_Value__:_TraceOption">TraceOption</a> registry
  value:</p>
  
  <p class=PreformattedText> 
--- 1677,1683 ----
  <p class=MsoNormal>If you are having trouble with the Integrated Logon
  operations it is often useful to be able to obtain a log of what it is
  attempting to do.   Setting Bit 0 of the <a
! href="#_Value__:_TraceOption">TraceOption</a> registry
  value:</p>
  
  <p class=PreformattedText> 
***************
*** 2066,2072 ****
  
  <p class=MsoNormal>The logic necessary to implement many of the settings
  described in <a
! href="../../oafw-1-4-release-notes.doc#_Appendix_A:_Registry_Values">Appendix A</a>
  are present in the MSI.  Most of these can be controlled by setting the
  corresponding properties to the desired value.  Some settings may require
  modifying existing registry entries (though not recommended) or adding new resources
--- 2066,2072 ----
  
  <p class=MsoNormal>The logic necessary to implement many of the settings
  described in <a
! href="#_Appendix_A:_Registry_Values">Appendix A</a>
  are present in the MSI.  Most of these can be controlled by setting the
  corresponding properties to the desired value.  Some settings may require
  modifying existing registry entries (though not recommended) or adding new resources
***************
*** 2091,2097 ****
  
  <p class=MsoNormal>For each property, the associated registry setting is
  referenced by the same text used in <a
! href="../../oafw-1-4-release-notes.doc#_Appendix_A:_Registry_Values">Appendix A</a>.</p>
  
  <p class=MsoNormal>Strings are quoted using single quotes (e.g. 'a string'). An
  empty string is denoted as ''.  Note that you can't author null values into the
--- 2091,2097 ----
  
  <p class=MsoNormal>For each property, the associated registry setting is
  referenced by the same text used in <a
! href="#_Appendix_A:_Registry_Values">Appendix A</a>.</p>
  
  <p class=MsoNormal>Strings are quoted using single quotes (e.g. 'a string'). An
  empty string is denoted as ''.  Note that you can't author null values into the
***************
*** 2167,2176 ****
    <h6><a name="_Toc139993162"></a><a name="_Toc126872239"></a><a
    name="_Toc115416170">AFSCACHEPATH</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="../../oafw-1-4-release-notes.doc#_(Service_parameters):">(Service
    parameters)</a></p>
    <p class=MsoList>Registry value : <a
!   href="../../oafw-1-4-release-notes.doc#_Value_:_CachePath">CachePath</a></p>
    <p class=MsoList>Valid values    : string .</p>
    </td>
   </tr>
--- 2167,2176 ----
    <h6><a name="_Toc139993162"></a><a name="_Toc126872239"></a><a
    name="_Toc115416170">AFSCACHEPATH</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="#_(Service_parameters):">(Service
    parameters)</a></p>
    <p class=MsoList>Registry value : <a
!   href="#_Value_:_CachePath">CachePath</a></p>
    <p class=MsoList>Valid values    : string .</p>
    </td>
   </tr>
***************
*** 2179,2188 ****
    <h6><a name="_Toc139993163"></a><a name="_Toc126872240"></a><a
    name="_Toc115416171">AFSCACHESIZE</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="../../oafw-1-4-release-notes.doc#_(Service_parameters):">(Service
    parameters)</a></p>
    <p class=MsoList>Registry value : <a
!   href="../../oafw-1-4-release-notes.doc#_Value___: CacheSize">CacheSize</a></p>
    <p class=MsoList>Valid values    : numeric</p>
    </td>
   </tr>
--- 2179,2188 ----
    <h6><a name="_Toc139993163"></a><a name="_Toc126872240"></a><a
    name="_Toc115416171">AFSCACHESIZE</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="#_(Service_parameters):">(Service
    parameters)</a></p>
    <p class=MsoList>Registry value : <a
!   href="#_Value___: CacheSize">CacheSize</a></p>
    <p class=MsoList>Valid values    : numeric</p>
    </td>
   </tr>
***************
*** 2191,2200 ****
    <h6><a name="_Toc139993164"></a><a name="_Toc126872241"></a><a
    name="_Toc115416172">AFSCELLNAME</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="../../oafw-1-4-release-notes.doc#_(Service_parameters):">(Service
    parameters)</a></p>
    <p class=MsoList>Registry value : <a
!   href="../../oafw-1-4-release-notes.doc#_Value_:_Cell">Cell</a></p>
    <p class=MsoList>Valid values    : string</p>
    </td>
   </tr>
--- 2191,2200 ----
    <h6><a name="_Toc139993164"></a><a name="_Toc126872241"></a><a
    name="_Toc115416172">AFSCELLNAME</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="#_(Service_parameters):">(Service
    parameters)</a></p>
    <p class=MsoList>Registry value : <a
!   href="#_Value_:_Cell">Cell</a></p>
    <p class=MsoList>Valid values    : string</p>
    </td>
   </tr>
***************
*** 2203,2212 ****
    <h6><a name="_Toc139993165"></a><a name="_Toc126872242"></a><a
    name="_Toc115416173">FREELANCEMODE</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="../../oafw-1-4-release-notes.doc#_(Service_parameters):">(Service
    parameters)</a></p>
    <p class=MsoList>Registry value : <a
!   href="../../oafw-1-4-release-notes.doc#_Value_:_FreelanceClient">FreelanceClient</a></p>
    <p class=MsoList>Valid values    : '1' or '0'</p>
    </td>
   </tr>
--- 2203,2212 ----
    <h6><a name="_Toc139993165"></a><a name="_Toc126872242"></a><a
    name="_Toc115416173">FREELANCEMODE</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="#_(Service_parameters):">(Service
    parameters)</a></p>
    <p class=MsoList>Registry value : <a
!   href="#_Value_:_FreelanceClient">FreelanceClient</a></p>
    <p class=MsoList>Valid values    : '1' or '0'</p>
    </td>
   </tr>
***************
*** 2215,2224 ****
    <h6><a name="_Toc139993166"></a><a name="_Toc126872243"></a><a
    name="_Toc115416174">HIDEDOTFILES</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="../../oafw-1-4-release-notes.doc#_(Service_parameters):">(Service
    parameters)</a></p>
    <p class=MsoList>Registry value : <a
!   href="../../oafw-1-4-release-notes.doc#_Value_:_HideDotFiles">HideDotFiles</a></p>
    <p class=MsoList>Valid values    : '1' or '0'</p>
    </td>
   </tr>
--- 2215,2224 ----
    <h6><a name="_Toc139993166"></a><a name="_Toc126872243"></a><a
    name="_Toc115416174">HIDEDOTFILES</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="#_(Service_parameters):">(Service
    parameters)</a></p>
    <p class=MsoList>Registry value : <a
!   href="#_Value_:_HideDotFiles">HideDotFiles</a></p>
    <p class=MsoList>Valid values    : '1' or '0'</p>
    </td>
   </tr>
***************
*** 2227,2241 ****
    <h6><a name="_Toc139993167"></a><a name="_Toc126872244"></a><a
    name="_Toc115416175">LOGONOPTIONS</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="../../oafw-1-4-release-notes.doc#_(Network_provider):">(Network
    provider)</a></p>
    <p class=MsoList>Registry value : <a
!   href="../../oafw-1-4-release-notes.doc#_Value___: LogonOptions">LogonOptions</a></p>
    <p class=MsoList>Valid values    : '0', '1' or '3'</p>
    <p class=MsoNormal>See <a
!   href="../../oafw-1-4-release-notes.doc#_Appendix_A:_Registry_Values">Appendix
    A</a> <a
!   href="../../oafw-1-4-release-notes.doc#_A.2.1_Domain_specific_configuration">section
    2.1 (Domain specific configuration keys for Network Provider)</a> for more
    details.</p>
    </td>
--- 2227,2241 ----
    <h6><a name="_Toc139993167"></a><a name="_Toc126872244"></a><a
    name="_Toc115416175">LOGONOPTIONS</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="#_(Network_provider):">(Network
    provider)</a></p>
    <p class=MsoList>Registry value : <a
!   href="#_Value___: LogonOptions">LogonOptions</a></p>
    <p class=MsoList>Valid values    : '0', '1' or '3'</p>
    <p class=MsoNormal>See <a
!   href="#_Appendix_A:_Registry_Values">Appendix
    A</a> <a
!   href="#_A.2.1_Domain_specific_configuration">section
    2.1 (Domain specific configuration keys for Network Provider)</a> for more
    details.</p>
    </td>
***************
*** 2245,2254 ****
    <h6><a name="_Toc139993168"></a><a name="_Toc126872245"></a><a
    name="_Toc115416176">MOUNTROOT</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="../../oafw-1-4-release-notes.doc#_(Service_parameters):">(Service
    parameters)</a></p>
    <p class=MsoList>Registry value : <a
!   href="../../oafw-1-4-release-notes.doc#_Value_:_Mountroot">Mountroot</a></p>
    <p class=MsoList>Valid values    : string</p>
    </td>
   </tr>
--- 2245,2254 ----
    <h6><a name="_Toc139993168"></a><a name="_Toc126872245"></a><a
    name="_Toc115416176">MOUNTROOT</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="#_(Service_parameters):">(Service
    parameters)</a></p>
    <p class=MsoList>Registry value : <a
!   href="#_Value_:_Mountroot">Mountroot</a></p>
    <p class=MsoList>Valid values    : string</p>
    </td>
   </tr>
***************
*** 2257,2266 ****
    <h6><a name="_Toc139993169"></a><a name="_Toc126872246"></a><a
    name="_Toc115416177">NETBIOSNAME</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="../../oafw-1-4-release-notes.doc#_(Service_parameters):">(Service
    parameters)</a></p>
    <p class=MsoList>Registry value : <a
!   href="../../oafw-1-4-release-notes.doc#_Value___: NetbiosName">NetbiosName</a></p>
    <p class=MsoList>Valid values    : string (at most 15 characters)</p>
    </td>
   </tr>
--- 2257,2266 ----
    <h6><a name="_Toc139993169"></a><a name="_Toc126872246"></a><a
    name="_Toc115416177">NETBIOSNAME</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="#_(Service_parameters):">(Service
    parameters)</a></p>
    <p class=MsoList>Registry value : <a
!   href="#_Value___: NetbiosName">NetbiosName</a></p>
    <p class=MsoList>Valid values    : string (at most 15 characters)</p>
    </td>
   </tr>
***************
*** 2269,2278 ****
    <h6><a name="_Toc139993170"></a><a name="_Toc126872247"></a><a
    name="_Toc115416178">NOFINDLANABYNAME</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="../../oafw-1-4-release-notes.doc#_(Service_parameters):">(Service
    parameters)</a></p>
    <p class=MsoList>Registry value : <a
!   href="../../oafw-1-4-release-notes.doc#_Value___: NoFindLanaByName">NoFindLanaByName</a></p>
    <p class=MsoList>Valid values    : '1' or '0'</p>
    </td>
   </tr>
--- 2269,2278 ----
    <h6><a name="_Toc139993170"></a><a name="_Toc126872247"></a><a
    name="_Toc115416178">NOFINDLANABYNAME</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="#_(Service_parameters):">(Service
    parameters)</a></p>
    <p class=MsoList>Registry value : <a
!   href="#_Value___: NoFindLanaByName">NoFindLanaByName</a></p>
    <p class=MsoList>Valid values    : '1' or '0'</p>
    </td>
   </tr>
***************
*** 2281,2290 ****
    <h6><a name="_Toc139993171"></a><a name="_Toc126872248"></a><a
    name="_Toc115416179">RXMAXMTU</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="../../oafw-1-4-release-notes.doc#_(Service_parameters):">(Service
    parameters)</a></p>
    <p class=MsoList>Registry value : <a
!   href="../../oafw-1-4-release-notes.doc#_Value_:_RxMaxMTU">RxMaxMTU</a></p>
    <p class=MsoList>Valid values    : numeric</p>
    </td>
   </tr>
--- 2281,2290 ----
    <h6><a name="_Toc139993171"></a><a name="_Toc126872248"></a><a
    name="_Toc115416179">RXMAXMTU</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="#_(Service_parameters):">(Service
    parameters)</a></p>
    <p class=MsoList>Registry value : <a
!   href="#_Value_:_RxMaxMTU">RxMaxMTU</a></p>
    <p class=MsoList>Valid values    : numeric</p>
    </td>
   </tr>
***************
*** 2293,2302 ****
    <h6><a name="_Toc139993172"></a><a name="_Toc126872249"></a><a
    name="_Toc115416180">SECURITYLEVEL</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="../../oafw-1-4-release-notes.doc#_(Service_parameters):">(Service
    parameters)</a></p>
    <p class=MsoList>Registry value : <a
!   href="../../oafw-1-4-release-notes.doc#_Value_:_SecurityLevel">SecurityLevel</a></p>
    <p class=MsoList>Valid values    : '1' or '0'</p>
    </td>
   </tr>
--- 2293,2302 ----
    <h6><a name="_Toc139993172"></a><a name="_Toc126872249"></a><a
    name="_Toc115416180">SECURITYLEVEL</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="#_(Service_parameters):">(Service
    parameters)</a></p>
    <p class=MsoList>Registry value : <a
!   href="#_Value_:_SecurityLevel">SecurityLevel</a></p>
    <p class=MsoList>Valid values    : '1' or '0'</p>
    </td>
   </tr>
***************
*** 2305,2314 ****
    <h6><a name="_Toc139993173"></a><a name="_Toc126872250"></a><a
    name="_Toc115416181">SMBAUTHTYPE</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="../../oafw-1-4-release-notes.doc#_(Service_parameters):">(Service
    parameters)</a></p>
    <p class=MsoList>Registry value : <a
!   href="../../oafw-1-4-release-notes.doc#_Value___: smbAuthType">SMBAuthType</a></p>
    <p class=MsoList>Valid values    : '0','1' or '2'</p>
    </td>
   </tr>
--- 2305,2314 ----
    <h6><a name="_Toc139993173"></a><a name="_Toc126872250"></a><a
    name="_Toc115416181">SMBAUTHTYPE</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="#_(Service_parameters):">(Service
    parameters)</a></p>
    <p class=MsoList>Registry value : <a
!   href="#_Value___: smbAuthType">SMBAuthType</a></p>
    <p class=MsoList>Valid values    : '0','1' or '2'</p>
    </td>
   </tr>
***************
*** 2317,2325 ****
    <h6><a name="_Toc139993174"></a><a name="_Toc126872251"></a><a
    name="_Toc115416182">STOREANSIFILENAMES</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="../../oafw-1-4-release-notes.doc#_(OpenAFS_Client):">(OpenAFS Client)</a></p>
    <p class=MsoList>Registry value : <a
!   href="../../oafw-1-4-release-notes.doc#_Value___: StoreAnsiFilenames">StoreAnsiFilenames</a></p>
    <p class=MsoList>Valid values    : '0' or '1'</p>
    </td>
   </tr>
--- 2317,2325 ----
    <h6><a name="_Toc139993174"></a><a name="_Toc126872251"></a><a
    name="_Toc115416182">STOREANSIFILENAMES</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="#_(OpenAFS_Client):">(OpenAFS Client)</a></p>
    <p class=MsoList>Registry value : <a
!   href="#_Value___: StoreAnsiFilenames">StoreAnsiFilenames</a></p>
    <p class=MsoList>Valid values    : '0' or '1'</p>
    </td>
   </tr>
***************
*** 2328,2337 ****
    <h6><a name="_Toc139993175"></a><a name="_Toc126872252"></a><a
    name="_Toc115416183">USEDNS</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="../../oafw-1-4-release-notes.doc#_(Service_parameters):">(Service
    parameters)</a></p>
    <p class=MsoList>Registry value : <a
!   href="../../oafw-1-4-release-notes.doc#_Value_:_UseDNS">UseDNS</a></p>
    <p class=MsoList>Valid values    : '1' or '0'</p>
    </td>
   </tr>
--- 2328,2337 ----
    <h6><a name="_Toc139993175"></a><a name="_Toc126872252"></a><a
    name="_Toc115416183">USEDNS</a></h6>
    <p class=MsoList>Registry key    : <a
!   href="#_(Service_parameters):">(Service
    parameters)</a></p>
    <p class=MsoList>Registry value : <a
!   href="#_Value_:_UseDNS">UseDNS</a></p>
    <p class=MsoList>Valid values    : '1' or '0'</p>
    </td>
   </tr>
***************
*** 2446,2452 ****
  margin-left:39.6pt;text-indent:-21.6pt'>1.2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
  </span>In the Component table, locate the component you need to change ( Ctrl-F
  invokes the 'Find' dialog).  The component names are listed below in section <a
! href="../../oafw-1-4-release-notes.doc#_2.3.1_Components_for_Configuration ">7.2.3.1</a>. 
  For this example, the component name is 'elf_CellServDB'.</p>
  
  <p class=MsoNormal style='margin-top:4.3pt;margin-right:0pt;margin-bottom:4.3pt;
--- 2446,2452 ----
  margin-left:39.6pt;text-indent:-21.6pt'>1.2.<span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;
  </span>In the Component table, locate the component you need to change ( Ctrl-F
  invokes the 'Find' dialog).  The component names are listed below in section <a
! href="#_2.3.1_Components_for_Configuration ">7.2.3.1</a>. 
  For this example, the component name is 'elf_CellServDB'.</p>
  
  <p class=MsoNormal style='margin-top:4.3pt;margin-right:0pt;margin-bottom:4.3pt;
***************
*** 2861,2867 ****
  keys.</p>
  
  <p class=MsoNormal>    Refer to <a
! href="../../oafw-1-4-release-notes.doc#_Appendix_A:_Registry_Values">Appendix A</a>
  section 2.1 for more information.</p>
  
  <p class=MsoNormal>    Columns that are unspecified should be left empty.</p>
--- 2861,2867 ----
  keys.</p>
  
  <p class=MsoNormal>    Refer to <a
! href="#_Appendix_A:_Registry_Values">Appendix A</a>
  section 2.1 for more information.</p>
  
  <p class=MsoNormal>    Columns that are unspecified should be left empty.</p>
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.1 openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm:1.2.6.2
*** openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm:1.2.6.1	Wed Jul 19 00:08:46 2006
--- openafs/src/WINNT/doc/install/Documentation/en_US/html/ReleaseNotes/toc.htm	Thu Aug 10 00:07:05 2006
***************
*** 87,794 ****
  <p class=MsoNormal></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993082">1. Installer Options</a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993083">2. System Requirements</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993084">2.1 Supported Operating Systems</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993085">2.1.1 Unsupported Operating Systems</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993086">2.2 Disk Space</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993087">2.3 Additional Software Packages</a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993088">3. Operational Notes</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993089">3.1. Requirements for Kerberos 5
  Authentication</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993090">3.1.1. Active Directory</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993091">3.1.2. Using the krb524 service</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993092">3.2. Use of the Microsoft Loopback Adapter</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993093">3.3. Using Freelance (Dynamic Root) Mode
  to Improve Mobility</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993094">3.4. Locating AFS Volume Database Servers</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993095">3.5. Obtaining AFS Tokens as a Part of
  Windows Logon</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993096">3.6. AFS System Tray Command Line Options</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993097">3.7. The “AFS Client Admins” Authorization
  Group</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993098">3.8. OpenAFS support for UNC paths</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993099">3.9. OpenAFS includes aklog.exe</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993100">3.10. OpenAFS Servers on Windows are
  Unsupported</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993101">3.11. OpenAFS Debugging Symbol files</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993102">3.12. Large Files (64-bit) Supported</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993103">3.13. Encrypted AFS File Access</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993104">3.14. Authenticated Access to the OpenAFS
  Client Service</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993105">3.15. No More INI Files</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993106">3.16. Microsoft Windows Internet
  Connection Firewall</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993107">3.17. Browsing AFS from the Explorer Shell
  and Office</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993108">3.18. Byte Range Locking</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993109">3.19. Automatic Discarding of AFS Tokens
  at Logoff</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993110">3.20. Terminal Server installations</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993111">3.21. Hidden Dot Files</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993112">3.22. Status Cache Limits</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993113">3.23. NETBIOS over TCP/IP must be enabled</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993114">3.24. OpenAFS binaries are digitally
  signed</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993115">3.25. Maximum Size of the AFSCache File</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993116">3.26. Filename Character Sets</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993117">3.27. Known Character Set Issues with
  Roaming Profiles</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993118">3.28. The AFSCache File</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993119">3.29. Restricting OpenAFS Client Service
  Start and Stop</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993120">3.30. The @sys Name List</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993121">3.31. Symlinks to AFS UNC paths</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993122">3.32. Cache Manager Debugging Now
  Supported</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993123">3.33. Windows Logon Caching vs. Kerberos
  Logons</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993124">3.34. Initial Server Preferences</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993125">3.35. File Timestamps</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993126">3.36. Windows RPC client support must be
  installed</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993127">3.37. Generating Minidumps of the OpenAFS
  Client Service</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993128">3.38. AFS Client Universally Unique
  Identifiers</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993129">3.39. Delayed Write Errors with Microsoft
  Office Applications</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993130">3.40. Global Drives (aka Service Drive
  Letters) are no longer supported by Microsoft</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993131">3.41. 64-bit Microsoft Windows
  Installations</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993132">3.42. Known Issues with Microsoft Windows
  Vista</a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993133">4. How to Debug Problems with OpenAFS for
  Windows:</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993134">4.1. pioctl debugging (IoctlDebug registry
  key)</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993135">4.2. afsd_service initialization log
  (%WinDir%\TEMP\afsd_init.log)</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993136">4.3. afsd_service debug logs (fs trace
  {-on, -off, -dump} -&gt;%WinDir%\TEMP\afsd.log)</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993137">4.4. Using SysInternal’s DbgView and
  FileMon Tools</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993138">4.5. Microsoft MiniDumps  (fs minidump
  -&gt; %WinDir%\TEMP\afsd.dmp)</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993139">4.6. Single Sign-on (Integrated Logon)
  debugging</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993140">4.7. RX (AFS RPC) debugging (rxdebug)</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993141">4.8. Cache Manager debugging (cmdebug)</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993142">4.9. Persistent Cache consistency check</a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993143">5. Reporting Bugs:</a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993144">6. How to Contribute to the Development of
  OpenAFS for Windows</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993145">6.1. The USENIX OpenAFS Fund</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993146">6.2. Secure Endpoints Inc.</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993147">6.3. The MIT Kerberos Account</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993148">6.4. Direct contributions of code and/or
  documentation</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993149">6.5. OpenAFS for Windows Mailing Lists</a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993150">7. MSI Deployment Guide</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993151">7.1. Introduction</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993152">7.1.1 Requirements</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993153">7.1.2 Authoring a Transform</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993154">7.2. Configuration Options</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993155">7.2.1 Configurable Properties</a></span></p>
  
  <p class=MsoToc4><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993156">7.2.1.1 Setting Properties</a></span></p>
  
  <p class=MsoToc4><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993157">7.2.1.2 OpenAFS for Windows Properties</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993158">(Service parameters):</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993159">(Network provider):</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993160">(OpenAFS Client):</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993161">7.2.1.2.1 Registry Properties</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993162">AFSCACHEPATH</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993163">AFSCACHESIZE</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993164">AFSCELLNAME</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993165">FREELANCEMODE</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993166">HIDEDOTFILES</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993167">LOGONOPTIONS</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993168">MOUNTROOT</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993169">NETBIOSNAME</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993170">NOFINDLANABYNAME</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993171">RXMAXMTU</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993172">SECURITYLEVEL</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993173">SMBAUTHTYPE</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993174">STOREANSIFILENAMES</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993175">USEDNS</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993176">7.2.1.2.2 AFSCreds.exe Properties</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993177">CREDSSTARTUP</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993178">CREDSAUTOINIT</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993179">CREDSIPCHDET</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993180">CREDSQUIET</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993181">CREDSRENEWDRMAP</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993182">CREDSSHOW</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993183">7.2.2 Existing Registry Entries</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993184">7.2.3 Replacing Configuration Files</a></span></p>
  
  <p class=MsoToc4><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993185">7.2.3.1 Components for Configuration Files</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993186">7.2.4 Adding Domain Specific Registry Keys</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993187">7.2.5 Adding Site Specific Freelance
  Registry Keys</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993188">7.3 Additional Resources</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993189">7.4. Upgrades</a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993190">Appendix A: Registry Values</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993191">A.1. Service parameters</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993192">Regkey:
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993193">Value: LANadapter</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993194">Value: CacheSize</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993195">Value: ChunkSize</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993196">Value: Daemons</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993197">Value: ServerThreads</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993198">Value: Stats</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993199">Value: LogoffPreserveTokens</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993200">Value: RootVolume</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993201">Value: Mountroot</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993202">Value: CachePath</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993203">Value: NonPersistentCaching</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993204">Value: ValidateCache</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993205">Value: TrapOnPanic</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993206">Value: NetbiosName</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993207">Value: IsGateway</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993208">Value: ReportSessionStartups</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993209">Value: TraceBufferSize</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993210">Value: SysName</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993211">Value: SecurityLevel</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993212">Value: UseDNS</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993213">Value: FreelanceClient</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993214">Value: HideDotFiles</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993215">Value: MaxMpxRequests</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993216">Value: MaxVCPerServer</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993217">Value: Cell</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993218">Value: RxNoJumbo</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993219">Value: RxMaxMTU</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993220">Value: ConnDeadTimeout</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993221">Value: HardDeadTimeout</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993222">Value: TraceOption</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993223">Value: AllSubmount</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993224">Value: NoFindLanaByName</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993225">Value: MaxCPUs</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993226">Value: smbAuthType</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993227">Value: MaxLogSize</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993228">Value: FlushOnHibernate</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993229">Regkey:
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters\GlobalAutoMapper]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993230">Value: &lt;Drive Letter:&gt; for example
  &quot;G:&quot;</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993231">Regkey: [HKLM\SOFTWARE\OpenAFS\Client]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993232">Value: CellServDBDir</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993233">Value: VerifyServiceSignature</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993234">Value: IoctlDebug</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993235">Value: MiniDumpType</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993236">Value: StoreAnsiFilenames</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993237">Regkey:
  [HKLM\SOFTWARE\OpenAFS\Client\CSCPolicy]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993238">Value: &quot;smb/cifs share name&quot;</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993239">Regkey:
  [HKLM\SOFTWARE\OpenAFS\Client\Freelance]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993240">Value: &quot;numeric value&quot;</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993241">Regkey:
  [HKLM\SOFTWARE\OpenAFS\Client\Freelance\Symlinks]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993242">Value: &quot;numeric value&quot;</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993243">Regkey:
  [HKLM\SOFTWARE\OpenAFS\Client\Submounts]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993244">Value: &quot;submount name&quot;</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993245">Regkey:
  [HKLM\SOFTWARE\OpenAFS\Client\Server Preferences\VLDB]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993246">Value: &quot;hostname or ip address&quot;</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993247">Regkey: [HKLM\SOFTWARE\OpenAFS\Client\Server
  Preferences\File]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993248">Value: &quot;hostname or ip address&quot;</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993249">A.2. Integrated Logon Network provider
  parameters</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993250">Regkey:
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993251">Value: FailLoginsSilently</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993252">Regkey: [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993253">Value: NoWarnings</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993254">Value: AuthentProviderPath</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993255">Value: Class</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993256">Value: DependOnGroup</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993257">Value: DependOnService</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993258">Value: Name</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993259">Value: ProviderPath</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993260">A.2.1 Domain specific configuration keys
  for the Network Provider</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993261">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993262">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain]</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993263">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain&quot;domain
  name&quot;]</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993264">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST]</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993265">Example:</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993266">A.2.1.1 Domain specific configuration
  values</a></span></p>
  
  <p class=MsoToc4><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993267">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain]
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain&quot;domain
  name&quot;]
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993268">Value: LogonOptions</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993269">Value: FailLoginsSilentl</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993270">Value: LogonScript</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993271">Value: LoginRetryInterval</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993272">Value: LoginSleepInterval</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993273">Value: TheseCells</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993274">A.2.1.2 Selection of effective values for
  domain specific configuration</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993275">A.2.1.3 Exceptions to A.2.1.2</a></span></p>
  
  <p class=MsoToc4><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993276">2.1.3.1 'FailLoginsSilently'</a></span></p>
  
  <p class=MsoToc4><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993277">2.1.3.2 'LogonScript'</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993278">A.3. AFS Credentials System Tray Tool
  parameters</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993279">Regkey: [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993280">Value: Gateway</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993281">Value: Cell</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993282">Regkey: [HKLM\SOFTWARE\OpenAFS\Client]
  [HKCU\SOFTWARE\OpenAFS\Client]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993283">Value: ShowTrayIcon</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993284">Value: EnableKFW</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993285">Value: Use524</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993286">Value: AfscredsShortcutParams</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993287">Regkey: [HKCU\SOFTWARE\OpenAFS\Client]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993288">Value: Authentication Cell</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993289">Regkey:
  [HKCU\SOFTWARE\OpenAFS\Client\Reminders]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993290">Value: &quot;afs cell name&quot;</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993291">Regkey:
  [HKCU\SOFTWARE\OpenAFS\Client\Active Maps]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993292">Value: &quot;upper case drive letter&quot;</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993293">Regkey:
  [HKCU\SOFTWARE\OpenAFS\Client\Mappings]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993294">Value: &quot;upper case drive letter&quot;</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993295">A.4 OpenAFS Client Service Environment
  Variables</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993296">Variable: AFS_RPC_ENCRYPT</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="../relnotes.htm#_Toc139993297">Variable: AFS_RPC_PROTSEQ</a></span></p>
  
  <p class=MsoNormal>&nbsp;</p>
  
--- 87,794 ----
  <p class=MsoNormal></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993082">1. Installer Options</a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993083">2. System Requirements</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993084">2.1 Supported Operating Systems</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993085">2.1.1 Unsupported Operating Systems</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993086">2.2 Disk Space</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993087">2.3 Additional Software Packages</a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993088">3. Operational Notes</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993089">3.1. Requirements for Kerberos 5
  Authentication</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993090">3.1.1. Active Directory</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993091">3.1.2. Using the krb524 service</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993092">3.2. Use of the Microsoft Loopback Adapter</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993093">3.3. Using Freelance (Dynamic Root) Mode
  to Improve Mobility</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993094">3.4. Locating AFS Volume Database Servers</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993095">3.5. Obtaining AFS Tokens as a Part of
  Windows Logon</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993096">3.6. AFS System Tray Command Line Options</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993097">3.7. The “AFS Client Admins” Authorization
  Group</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993098">3.8. OpenAFS support for UNC paths</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993099">3.9. OpenAFS includes aklog.exe</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993100">3.10. OpenAFS Servers on Windows are
  Unsupported</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993101">3.11. OpenAFS Debugging Symbol files</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993102">3.12. Large Files (64-bit) Supported</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993103">3.13. Encrypted AFS File Access</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993104">3.14. Authenticated Access to the OpenAFS
  Client Service</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993105">3.15. No More INI Files</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993106">3.16. Microsoft Windows Internet
  Connection Firewall</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993107">3.17. Browsing AFS from the Explorer Shell
  and Office</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993108">3.18. Byte Range Locking</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993109">3.19. Automatic Discarding of AFS Tokens
  at Logoff</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993110">3.20. Terminal Server installations</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993111">3.21. Hidden Dot Files</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993112">3.22. Status Cache Limits</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993113">3.23. NETBIOS over TCP/IP must be enabled</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993114">3.24. OpenAFS binaries are digitally
  signed</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993115">3.25. Maximum Size of the AFSCache File</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993116">3.26. Filename Character Sets</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993117">3.27. Known Character Set Issues with
  Roaming Profiles</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993118">3.28. The AFSCache File</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993119">3.29. Restricting OpenAFS Client Service
  Start and Stop</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993120">3.30. The @sys Name List</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993121">3.31. Symlinks to AFS UNC paths</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993122">3.32. Cache Manager Debugging Now
  Supported</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993123">3.33. Windows Logon Caching vs. Kerberos
  Logons</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993124">3.34. Initial Server Preferences</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993125">3.35. File Timestamps</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993126">3.36. Windows RPC client support must be
  installed</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993127">3.37. Generating Minidumps of the OpenAFS
  Client Service</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993128">3.38. AFS Client Universally Unique
  Identifiers</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993129">3.39. Delayed Write Errors with Microsoft
  Office Applications</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993130">3.40. Global Drives (aka Service Drive
  Letters) are no longer supported by Microsoft</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993131">3.41. 64-bit Microsoft Windows
  Installations</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993132">3.42. Known Issues with Microsoft Windows
  Vista</a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993133">4. How to Debug Problems with OpenAFS for
  Windows:</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993134">4.1. pioctl debugging (IoctlDebug registry
  key)</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993135">4.2. afsd_service initialization log
  (%WinDir%\TEMP\afsd_init.log)</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993136">4.3. afsd_service debug logs (fs trace
  {-on, -off, -dump} -&gt;%WinDir%\TEMP\afsd.log)</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993137">4.4. Using SysInternal’s DbgView and
  FileMon Tools</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993138">4.5. Microsoft MiniDumps  (fs minidump
  -&gt; %WinDir%\TEMP\afsd.dmp)</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993139">4.6. Single Sign-on (Integrated Logon)
  debugging</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993140">4.7. RX (AFS RPC) debugging (rxdebug)</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993141">4.8. Cache Manager debugging (cmdebug)</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993142">4.9. Persistent Cache consistency check</a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993143">5. Reporting Bugs:</a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993144">6. How to Contribute to the Development of
  OpenAFS for Windows</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993145">6.1. The USENIX OpenAFS Fund</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993146">6.2. Secure Endpoints Inc.</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993147">6.3. The MIT Kerberos Account</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993148">6.4. Direct contributions of code and/or
  documentation</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993149">6.5. OpenAFS for Windows Mailing Lists</a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993150">7. MSI Deployment Guide</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993151">7.1. Introduction</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993152">7.1.1 Requirements</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993153">7.1.2 Authoring a Transform</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993154">7.2. Configuration Options</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993155">7.2.1 Configurable Properties</a></span></p>
  
  <p class=MsoToc4><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993156">7.2.1.1 Setting Properties</a></span></p>
  
  <p class=MsoToc4><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993157">7.2.1.2 OpenAFS for Windows Properties</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993158">(Service parameters):</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993159">(Network provider):</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993160">(OpenAFS Client):</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993161">7.2.1.2.1 Registry Properties</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993162">AFSCACHEPATH</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993163">AFSCACHESIZE</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993164">AFSCELLNAME</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993165">FREELANCEMODE</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993166">HIDEDOTFILES</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993167">LOGONOPTIONS</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993168">MOUNTROOT</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993169">NETBIOSNAME</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993170">NOFINDLANABYNAME</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993171">RXMAXMTU</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993172">SECURITYLEVEL</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993173">SMBAUTHTYPE</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993174">STOREANSIFILENAMES</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993175">USEDNS</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993176">7.2.1.2.2 AFSCreds.exe Properties</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993177">CREDSSTARTUP</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993178">CREDSAUTOINIT</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993179">CREDSIPCHDET</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993180">CREDSQUIET</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993181">CREDSRENEWDRMAP</a></span></p>
  
  <p class=MsoToc6><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993182">CREDSSHOW</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993183">7.2.2 Existing Registry Entries</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993184">7.2.3 Replacing Configuration Files</a></span></p>
  
  <p class=MsoToc4><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993185">7.2.3.1 Components for Configuration Files</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993186">7.2.4 Adding Domain Specific Registry Keys</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993187">7.2.5 Adding Site Specific Freelance
  Registry Keys</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993188">7.3 Additional Resources</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993189">7.4. Upgrades</a></span></p>
  
  <p class=MsoToc1><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993190">Appendix A: Registry Values</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993191">A.1. Service parameters</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993192">Regkey:
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993193">Value: LANadapter</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993194">Value: CacheSize</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993195">Value: ChunkSize</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993196">Value: Daemons</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993197">Value: ServerThreads</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993198">Value: Stats</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993199">Value: LogoffPreserveTokens</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993200">Value: RootVolume</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993201">Value: Mountroot</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993202">Value: CachePath</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993203">Value: NonPersistentCaching</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993204">Value: ValidateCache</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993205">Value: TrapOnPanic</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993206">Value: NetbiosName</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993207">Value: IsGateway</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993208">Value: ReportSessionStartups</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993209">Value: TraceBufferSize</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993210">Value: SysName</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993211">Value: SecurityLevel</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993212">Value: UseDNS</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993213">Value: FreelanceClient</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993214">Value: HideDotFiles</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993215">Value: MaxMpxRequests</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993216">Value: MaxVCPerServer</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993217">Value: Cell</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993218">Value: RxNoJumbo</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993219">Value: RxMaxMTU</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993220">Value: ConnDeadTimeout</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993221">Value: HardDeadTimeout</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993222">Value: TraceOption</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993223">Value: AllSubmount</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993224">Value: NoFindLanaByName</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993225">Value: MaxCPUs</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993226">Value: smbAuthType</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993227">Value: MaxLogSize</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993228">Value: FlushOnHibernate</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993229">Regkey:
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters\GlobalAutoMapper]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993230">Value: &lt;Drive Letter:&gt; for example
  &quot;G:&quot;</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993231">Regkey: [HKLM\SOFTWARE\OpenAFS\Client]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993232">Value: CellServDBDir</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993233">Value: VerifyServiceSignature</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993234">Value: IoctlDebug</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993235">Value: MiniDumpType</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993236">Value: StoreAnsiFilenames</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993237">Regkey:
  [HKLM\SOFTWARE\OpenAFS\Client\CSCPolicy]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993238">Value: &quot;smb/cifs share name&quot;</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993239">Regkey:
  [HKLM\SOFTWARE\OpenAFS\Client\Freelance]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993240">Value: &quot;numeric value&quot;</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993241">Regkey:
  [HKLM\SOFTWARE\OpenAFS\Client\Freelance\Symlinks]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993242">Value: &quot;numeric value&quot;</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993243">Regkey:
  [HKLM\SOFTWARE\OpenAFS\Client\Submounts]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993244">Value: &quot;submount name&quot;</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993245">Regkey:
  [HKLM\SOFTWARE\OpenAFS\Client\Server Preferences\VLDB]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993246">Value: &quot;hostname or ip address&quot;</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993247">Regkey: [HKLM\SOFTWARE\OpenAFS\Client\Server
  Preferences\File]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993248">Value: &quot;hostname or ip address&quot;</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993249">A.2. Integrated Logon Network provider
  parameters</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993250">Regkey:
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993251">Value: FailLoginsSilently</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993252">Regkey: [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993253">Value: NoWarnings</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993254">Value: AuthentProviderPath</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993255">Value: Class</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993256">Value: DependOnGroup</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993257">Value: DependOnService</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993258">Value: Name</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993259">Value: ProviderPath</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993260">A.2.1 Domain specific configuration keys
  for the Network Provider</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993261">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993262">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain]</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993263">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain&quot;domain
  name&quot;]</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993264">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST]</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993265">Example:</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993266">A.2.1.1 Domain specific configuration
  values</a></span></p>
  
  <p class=MsoToc4><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993267">[HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider]
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain]
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain&quot;domain
  name&quot;]
  [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\NetworkProvider\Domain\LOCALHOST]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993268">Value: LogonOptions</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993269">Value: FailLoginsSilentl</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993270">Value: LogonScript</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993271">Value: LoginRetryInterval</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993272">Value: LoginSleepInterval</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993273">Value: TheseCells</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993274">A.2.1.2 Selection of effective values for
  domain specific configuration</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993275">A.2.1.3 Exceptions to A.2.1.2</a></span></p>
  
  <p class=MsoToc4><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993276">2.1.3.1 'FailLoginsSilently'</a></span></p>
  
  <p class=MsoToc4><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993277">2.1.3.2 'LogonScript'</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993278">A.3. AFS Credentials System Tray Tool
  parameters</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993279">Regkey: [HKLM\SYSTEM\CurrentControlSet\Services\TransarcAFSDaemon\Parameters]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993280">Value: Gateway</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993281">Value: Cell</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993282">Regkey: [HKLM\SOFTWARE\OpenAFS\Client]
  [HKCU\SOFTWARE\OpenAFS\Client]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993283">Value: ShowTrayIcon</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993284">Value: EnableKFW</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993285">Value: Use524</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993286">Value: AfscredsShortcutParams</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993287">Regkey: [HKCU\SOFTWARE\OpenAFS\Client]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993288">Value: Authentication Cell</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993289">Regkey:
  [HKCU\SOFTWARE\OpenAFS\Client\Reminders]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993290">Value: &quot;afs cell name&quot;</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993291">Regkey:
  [HKCU\SOFTWARE\OpenAFS\Client\Active Maps]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993292">Value: &quot;upper case drive letter&quot;</a></span></p>
  
  <p class=MsoToc3><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993293">Regkey:
  [HKCU\SOFTWARE\OpenAFS\Client\Mappings]</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993294">Value: &quot;upper case drive letter&quot;</a></span></p>
  
  <p class=MsoToc2><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993295">A.4 OpenAFS Client Service Environment
  Variables</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993296">Variable: AFS_RPC_ENCRYPT</a></span></p>
  
  <p class=MsoToc5><span class=MsoHyperlink><a
! href="relnotes.htm#_Toc139993297">Variable: AFS_RPC_PROTSEQ</a></span></p>
  
  <p class=MsoNormal>&nbsp;</p>
  
Index: openafs/src/afs/afs_osi_pag.c
diff -c openafs/src/afs/afs_osi_pag.c:1.29.4.3 openafs/src/afs/afs_osi_pag.c:1.29.4.4
*** openafs/src/afs/afs_osi_pag.c:1.29.4.3	Mon Jul 31 17:27:38 2006
--- openafs/src/afs/afs_osi_pag.c	Fri Aug  4 11:57:54 2006
***************
*** 23,29 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/afs_osi_pag.c,v 1.29.4.3 2006/07/31 21:27:38 shadow Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #include "afsincludes.h"	/* Afs-based standard headers */
--- 23,29 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/afs_osi_pag.c,v 1.29.4.4 2006/08/04 15:57:54 shadow Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #include "afsincludes.h"	/* Afs-based standard headers */
***************
*** 462,469 ****
  	/* Additional testing */
  	if (((ret >> 24) & 0xff) == 'A')
  	    return ret;
- 	else
- 	    return NOPAG;
  #endif /* UKERNEL && AFS_WEB_ENHANCEMENTS */
      }
      return NOPAG;
--- 462,467 ----
***************
*** 496,502 ****
      gid_t g0, g1;
  
      AFS_STATCNT(PagInCred);
!     if (cred == NULL) {
  	return NOPAG;
      }
  #if defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)
--- 494,500 ----
      gid_t g0, g1;
  
      AFS_STATCNT(PagInCred);
!     if (cred == NULL || cred == afs_osi_credp) {
  	return NOPAG;
      }
  #if defined(AFS_DARWIN_ENV) || defined(AFS_XBSD_ENV)
***************
*** 518,528 ****
  	return NOPAG;
      }
  #elif defined(AFS_LINUX26_ENV)
!     if (cred->cr_group_info->ngroups < 2)
! 	return NOPAG;
  #elif defined(AFS_SGI_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_DUX40_ENV) || defined(AFS_LINUX20_ENV) || defined(AFS_XBSD_ENV)
!     if (cred->cr_ngroups < 2)
! 	return NOPAG;
  #endif
  #if defined(AFS_AIX51_ENV)
      g0 = cred->cr_groupset.gs_union.un_groups[0];
--- 516,530 ----
  	return NOPAG;
      }
  #elif defined(AFS_LINUX26_ENV)
!     if (cred->cr_group_info->ngroups < 2) {
! 	pag = NOPAG;
! 	goto out;
!     }
  #elif defined(AFS_SGI_ENV) || defined(AFS_SUN5_ENV) || defined(AFS_DUX40_ENV) || defined(AFS_LINUX20_ENV) || defined(AFS_XBSD_ENV)
!     if (cred->cr_ngroups < 2) {
! 	pag = NOPAG;
! 	goto out;
!     }
  #endif
  #if defined(AFS_AIX51_ENV)
      g0 = cred->cr_groupset.gs_union.un_groups[0];
***************
*** 536,540 ****
--- 538,560 ----
  #endif
  #endif
      pag = (afs_int32) afs_get_pag_from_groups(g0, g1);
+ out:
+ #ifdef LINUX_KEYRING_SUPPORT
+     if (pag == NOPAG) {
+ 	struct key *key;
+ 	afs_uint32 pag, newpag;
+ 
+ 	key = request_key(&key_type_afs_pag, "_pag", NULL);
+ 	if (!IS_ERR(key)) {
+ 	    if (key_validate(key) == 0 && key->uid == 0) {	/* also verify in the session keyring? */
+ 
+ 		pag = (afs_uint32) key->payload.value;
+ 		if (((pag >> 24) & 0xff) == 'A')
+ 		    __setpag(&cred, pag, &newpag, 0);
+ 	    }
+ 	    key_put(key);
+ 	} 
+     }
+ #endif
      return pag;
  }
Index: openafs/src/afs/afs_syscall.c
diff -c openafs/src/afs/afs_syscall.c:1.1.2.2 openafs/src/afs/afs_syscall.c:1.1.2.3
*** openafs/src/afs/afs_syscall.c:1.1.2.2	Mon Jul 31 17:27:38 2006
--- openafs/src/afs/afs_syscall.c	Fri Aug  4 14:24:43 2006
***************
*** 11,17 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/afs_syscall.c,v 1.1.2.2 2006/07/31 21:27:38 shadow Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #include "afsincludes.h"	/* Afs-based standard headers */
--- 11,17 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/afs_syscall.c,v 1.1.2.3 2006/08/04 18:24:43 shadow Exp $");
  
  #include "afs/sysincludes.h"	/* Standard vendor system headers */
  #include "afsincludes.h"	/* Afs-based standard headers */
***************
*** 582,596 ****
      osi_InitGlock();
  #endif
      if (uap->syscall == AFSCALL_CALL) {
- #ifdef	AFS_SUN5_ENV
- 	code =
- 	    afs_syscall_call(uap->parm1, uap->parm2, uap->parm3, uap->parm4,
- 			     uap->parm5, uap->parm6, rvp, CRED());
- #else
  	code =
  	    afs_syscall_call(uap->parm1, uap->parm2, uap->parm3, uap->parm4,
  			     uap->parm5, uap->parm6);
- #endif
      } else if (uap->syscall == AFSCALL_SETPAG) {
  #ifdef	AFS_SUN5_ENV
  	register proc_t *procp;
--- 582,590 ----
Index: openafs/src/afs/sysincludes.h
diff -c openafs/src/afs/sysincludes.h:1.40 openafs/src/afs/sysincludes.h:1.40.2.1
*** openafs/src/afs/sysincludes.h:1.40	Thu Mar  9 01:05:46 2006
--- openafs/src/afs/sysincludes.h	Fri Aug  4 11:57:54 2006
***************
*** 70,75 ****
--- 70,79 ----
  #include <linux/security.h>
  #endif
  #include <linux/suspend.h>
+ #if defined(LINUX_KEYRING_SUPPORT)
+ #include <linux/rwsem.h>
+ #include <linux/key.h>
+ #endif
  #endif
  /* Avoid conflicts with coda overloading AFS type namespace. Must precede
   * inclusion of uaccess.h.
Index: openafs/src/afs/LINUX/osi_groups.c
diff -c openafs/src/afs/LINUX/osi_groups.c:1.28 openafs/src/afs/LINUX/osi_groups.c:1.28.4.1
*** openafs/src/afs/LINUX/osi_groups.c:1.28	Tue Aug  2 01:15:54 2005
--- openafs/src/afs/LINUX/osi_groups.c	Fri Aug  4 11:57:54 2006
***************
*** 15,23 ****
   */
  #include <afsconfig.h>
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/LINUX/osi_groups.c,v 1.28 2005/08/02 05:15:54 shadow Exp $");
  
  #include "afs/sysincludes.h"
  #include "afsincludes.h"
--- 15,26 ----
   */
  #include <afsconfig.h>
  #include "afs/param.h"
+ #ifdef LINUX_KEYRING_SUPPORT
+ #include <linux/seq_file.h>
+ #endif
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/LINUX/osi_groups.c,v 1.28.4.1 2006/08/04 15:57:54 shadow Exp $");
  
  #include "afs/sysincludes.h"
  #include "afsincludes.h"
***************
*** 148,158 ****
  }
  #endif
  
  int
! setpag(cred_t ** cr, afs_uint32 pagvalue, afs_uint32 * newpag,
!        int change_parent)
  {
- #if defined(AFS_LINUX26_ENV)
      struct group_info *group_info;
      gid_t g0, g1;
      struct group_info *tmp;
--- 151,161 ----
  }
  #endif
  
+ #if defined(AFS_LINUX26_ENV)
  int
! __setpag(cred_t ** cr, afs_uint32 pagvalue, afs_uint32 * newpag,
!          int change_parent)
  {
      struct group_info *group_info;
      gid_t g0, g1;
      struct group_info *tmp;
***************
*** 185,191 ****
--- 188,251 ----
      put_group_info(group_info);
  
      return 0;
+ }
+ 
+ #ifdef LINUX_KEYRING_SUPPORT
+ #include <asm/unistd.h>
+ #include <linux/keyctl.h>
+ 
+ static int errno;
+ static inline _syscall2(long, keyctl, int, option, void*, arg2);
+ 
+ static long
+ __join_session_keyring(char *name)
+ {
+ 	return keyctl(KEYCTL_JOIN_SESSION_KEYRING, name);
+ }
+ #endif /* LINUX_KEYRING_SUPPORT */
+ 
+ int
+ setpag(cred_t ** cr, afs_uint32 pagvalue, afs_uint32 * newpag,
+          int change_parent)
+ {
+     int code;
+ 
+     code = __setpag(cr, pagvalue, newpag, change_parent);
+ 
+ #ifdef LINUX_KEYRING_SUPPORT
+     if (code == 0) {
+ 
+ 	(void) __join_session_keyring(NULL);
+ 
+ 	if (current->signal->session_keyring) {
+ 	    struct key *key;
+ 	    key_perm_t perm;
+ 
+ 	    perm = KEY_POS_VIEW | KEY_POS_SEARCH;
+ 	    perm |= KEY_USR_VIEW | KEY_USR_SEARCH;
+ 
+ #ifdef KEY_ALLOC_NEEDS_STRUCT_TASK
+ 	    key = key_alloc(&key_type_afs_pag, "_pag", 0, 0, current, perm, 1);
+ #else
+ 	    key = key_alloc(&key_type_afs_pag, "_pag", 0, 0, perm, 1);
+ #endif
+ 
+ 	    if (!IS_ERR(key)) {
+ 		key_instantiate_and_link(key, (void *) newpag, sizeof(afs_uint32),
+ 					 current->signal->session_keyring, NULL);
+ 		key_put(key);
+ 	    }
+ 	}
+     }
+ #endif /* LINUX_KEYRING_SUPPORT */
+ 
+     return code;
+ }
  #else
+ int
+ setpag(cred_t ** cr, afs_uint32 pagvalue, afs_uint32 * newpag,
+        int change_parent)
+ {
      gid_t *gidset;
      afs_int32 ngroups, code = 0;
      int j;
***************
*** 219,226 ****
  
      osi_Free((char *)gidset, NGROUPS * sizeof(int));
      return code;
- #endif
  }
  
  
  /* Intercept the standard system call. */
--- 279,286 ----
  
      osi_Free((char *)gidset, NGROUPS * sizeof(int));
      return code;
  }
+ #endif
  
  
  /* Intercept the standard system call. */
***************
*** 396,398 ****
--- 456,541 ----
  #endif
  #endif
  
+ 
+ #ifdef LINUX_KEYRING_SUPPORT
+ static void afs_pag_describe(const struct key *key, struct seq_file *m)
+ {
+     seq_puts(m, key->description);
+ 
+     seq_printf(m, ": %u", key->datalen);
+ }
+ 
+ static int afs_pag_instantiate(struct key *key, const void *data, size_t datalen)
+ {
+     int code;
+     afs_uint32 *userpag, pag = NOPAG;
+     int g0, g1;
+ 
+     if (key->uid != 0 || key->gid != 0)
+ 	return -EPERM;
+ 
+     code = -EINVAL;
+     get_group_info(current->group_info);
+ 
+     if (datalen != sizeof(afs_uint32) || !data)
+ 	goto error;
+ 
+     if (current->group_info->ngroups < 2)
+ 	goto error;
+ 
+     /* ensure key being set matches current pag */
+ 
+     g0 = GROUP_AT(current->group_info, 0);
+     g1 = GROUP_AT(current->group_info, 1);
+ 
+     pag = afs_get_pag_from_groups(g0, g1);
+     if (pag == NOPAG)
+ 	goto error;
+ 
+     userpag = (afs_uint32 *) data;
+     if (*userpag != pag)
+ 	goto error;
+ 
+     key->payload.value = (unsigned long) *userpag;
+     key->datalen = sizeof(afs_uint32);
+     code = 0;
+ 
+ error:
+     put_group_info(current->group_info);
+     return code;
+ }
+ 
+ static int afs_pag_match(const struct key *key, const void *description)
+ {
+ 	return strcmp(key->description, description) == 0;
+ }
+ 
+ struct key_type key_type_afs_pag =
+ {
+     .name        = "afs_pag",
+     .describe    = afs_pag_describe,
+     .instantiate = afs_pag_instantiate,
+     .match       = afs_pag_match,
+ };
+ 
+ void osi_keyring_init(void)
+ {
+     register_key_type(&key_type_afs_pag);
+ }
+ 
+ void osi_keyring_shutdown(void)
+ {
+     unregister_key_type(&key_type_afs_pag);
+ }
+ 
+ #else
+ void osi_keyring_init(void)
+ {
+ 	return;
+ }
+ 
+ void osi_keyring_shutdown(void)
+ {
+ 	return;
+ }
+ #endif
Index: openafs/src/afs/LINUX/osi_module.c
diff -c openafs/src/afs/LINUX/osi_module.c:1.74.2.3 openafs/src/afs/LINUX/osi_module.c:1.74.2.4
*** openafs/src/afs/LINUX/osi_module.c:1.74.2.3	Mon Jul 31 17:27:39 2006
--- openafs/src/afs/LINUX/osi_module.c	Fri Aug  4 11:57:54 2006
***************
*** 15,21 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/LINUX/osi_module.c,v 1.74.2.3 2006/07/31 21:27:39 shadow Exp $");
  
  #include <linux/module.h> /* early to avoid printf->printk mapping */
  #include "afs/sysincludes.h"
--- 15,21 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/LINUX/osi_module.c,v 1.74.2.4 2006/08/04 15:57:54 shadow Exp $");
  
  #include <linux/module.h> /* early to avoid printf->printk mapping */
  #include "afs/sysincludes.h"
***************
*** 86,99 ****
--- 86,104 ----
      osi_linux_nfssrv_init();
  #endif
  
+ #ifndef LINUX_KEYRING_SUPPORT
      err = osi_syscall_init();
      if (err)
  	return err;
+ #endif
      err = afs_init_inodecache();
      if (err)
  	return err;
      register_filesystem(&afs_fs_type);
      osi_sysctl_init();
+ #ifdef LINUX_KEYRING_SUPPORT
+     osi_keyring_init();
+ #endif
  #ifdef AFS_LINUX24_ENV
      osi_proc_init();
      osi_ioctl_init();
***************
*** 110,115 ****
--- 115,121 ----
  cleanup_module(void)
  #endif
  {
+     osi_keyring_shutdown();
      osi_sysctl_clean();
      osi_syscall_clean();
      unregister_filesystem(&afs_fs_type);
Index: openafs/src/afs/LINUX/osi_prototypes.h
diff -c openafs/src/afs/LINUX/osi_prototypes.h:1.13.4.3 openafs/src/afs/LINUX/osi_prototypes.h:1.13.4.4
*** openafs/src/afs/LINUX/osi_prototypes.h:1.13.4.3	Mon Jul 31 17:27:39 2006
--- openafs/src/afs/LINUX/osi_prototypes.h	Fri Aug  4 11:57:54 2006
***************
*** 87,90 ****
--- 87,100 ----
  /* osi_vnodeops.c */
  extern void afs_fill_inode(struct inode *ip, struct vattr *vattr);
  
+ /* osi_groups.c */
+ extern void osi_keyring_init(void);
+ extern void osi_keyring_shutdown(void);
+ extern int __setpag(cred_t **cr, afs_uint32 pagvalue, afs_uint32 *newpag,
+ 		     int change_parent);
+ #ifdef LINUX_KEYRING_SUPPORT
+ extern struct key_type key_type_afs_pag;
+ #endif /* LINUX_KEYRING_SUPPORT */
+ 
+ 
  #endif /* _OSI_PROTO_H_ */
Index: openafs/src/afs/LINUX/osi_vfsops.c
diff -c openafs/src/afs/LINUX/osi_vfsops.c:1.42.4.4 openafs/src/afs/LINUX/osi_vfsops.c:1.42.4.5
*** openafs/src/afs/LINUX/osi_vfsops.c:1.42.4.4	Mon Jul 31 17:27:39 2006
--- openafs/src/afs/LINUX/osi_vfsops.c	Fri Aug  4 11:56:34 2006
***************
*** 16,22 ****
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/LINUX/osi_vfsops.c,v 1.42.4.4 2006/07/31 21:27:39 shadow Exp $");
  
  #define __NO_VERSION__		/* don't define kernel_version in module.h */
  #include <linux/module.h> /* early to avoid printf->printk mapping */
--- 16,22 ----
  #include "afs/param.h"
  
  RCSID
!     ("$Header: /cvs/openafs/src/afs/LINUX/osi_vfsops.c,v 1.42.4.5 2006/08/04 15:56:34 shadow Exp $");
  
  #define __NO_VERSION__		/* don't define kernel_version in module.h */
  #include <linux/module.h> /* early to avoid printf->printk mapping */
***************
*** 52,58 ****
  static int afs_root(struct super_block *afsp);
  struct super_block *afs_read_super(struct super_block *sb, void *data, int silent);
  int afs_fill_super(struct super_block *sb, void *data, int silent);
- static struct super_block *afs_get_sb(struct file_system_type *fs_type, int flags, const char *dev_name, void *data);
  
  /* afs_file_system
   * VFS entry for Linux - installed in init_module
--- 52,57 ----
***************
*** 67,72 ****
--- 66,94 ----
  	.state		= 0,
  };
  
+ 
+ /* afs_read_super
+  * read the "super block" for AFS - roughly eguivalent to struct vfs.
+  * dev, covered, s_rd_only, s_dirt, and s_type will be set by read_super.
+  */
+ #if defined(AFS_LINUX26_ENV)
+ static struct super_block *
+ #ifdef GET_SB_HAS_STRUCT_VFSMOUNT
+ afs_get_sb(struct file_system_type *fs_type, int flags,
+ 	   const char *dev_name, void *data, struct vfsmount *mnt)
+ #else
+ afs_get_sb(struct file_system_type *fs_type, int flags,
+ 	   const char *dev_name, void *data)
+ #endif
+ {
+ #ifdef GET_SB_HAS_STRUCT_VFSMOUNT
+     return get_sb_nodev(fs_type, flags, data, afs_fill_super, mnt);
+ #else
+     return get_sb_nodev(fs_type, flags, data, afs_fill_super);
+ #endif
+ }
+ 
+ 
  struct file_system_type afs_fs_type = {
      .owner = THIS_MODULE,
      .name = "afs",
***************
*** 86,101 ****
  };
  #endif
  
- /* afs_read_super
-  * read the "super block" for AFS - roughly eguivalent to struct vfs.
-  * dev, covered, s_rd_only, s_dirt, and s_type will be set by read_super.
-  */
- #if defined(AFS_LINUX26_ENV)
- static struct super_block *
- afs_get_sb(struct file_system_type *fs_type, int flags, const char *dev_name, void *data)
- {
-     return get_sb_nodev(fs_type, flags, data, afs_fill_super);
- }
  
  int
  afs_fill_super(struct super_block *sb, void *data, int silent)
--- 108,113 ----
Index: openafs/src/cf/linux-test1.m4
diff -c openafs/src/cf/linux-test1.m4:1.6 openafs/src/cf/linux-test1.m4:1.6.4.1
*** openafs/src/cf/linux-test1.m4:1.6	Thu Jan 26 10:56:41 2006
--- openafs/src/cf/linux-test1.m4	Fri Aug  4 11:45:33 2006
***************
*** 1,142 ****
! AC_DEFUN([LINUX_INODE_SETATTR_RETURN_TYPE],[
! AC_MSG_CHECKING(for inode_setattr return type)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_func_inode_setattr_returns_int,
! [
! AC_TRY_COMPILE(
! [#include <linux/fs.h>],
! [struct inode _inode; 
! struct iattr _iattr;
! int i; 
! i = inode_setattr(&_inode, &_iattr);], 
! ac_cv_linux_func_inode_setattr_returns_int=yes,
! ac_cv_linux_func_inode_setattr_returns_int=no)])
! AC_MSG_RESULT($ac_cv_linux_func_inode_setattr_returns_int)
! CPPFLAGS="$save_CPPFLAGS"])
  
! AC_DEFUN([LINUX_WRITE_INODE_RETURN_TYPE],[
! AC_MSG_CHECKING(for write_inode return type)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_func_write_inode_returns_int,
! [
! AC_TRY_COMPILE(
! [#include <linux/fs.h>],
! [struct inode _inode; 
! struct super_operations _sops;
! int i; 
! i = _sops.write_inode(&_inode, 0);], 
! ac_cv_linux_func_write_inode_returns_int=yes,
! ac_cv_linux_func_write_inode_returns_int=no)])
! AC_MSG_RESULT($ac_cv_linux_func_write_inode_returns_int)
! CPPFLAGS="$save_CPPFLAGS"])
  
! AC_DEFUN([LINUX_IOP_NAMEIDATA],[
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_MSG_CHECKING(whether inode_operations.create takes a nameidata)
! AC_CACHE_VAL(ac_cv_linux_func_i_create_takes_nameidata,
! [
! AC_TRY_COMPILE(
! [#include <linux/fs.h>
! #include <linux/namei.h>],
! [struct inode _inode; 
! struct dentry _dentry;
! struct nameidata _nameidata;
! (void)_inode.i_op->create(&_inode, &_dentry, 0, &_nameidata);],
! ac_cv_linux_func_i_create_takes_nameidata=yes,
! ac_cv_linux_func_i_create_takes_nameidata=no)])
! AC_MSG_RESULT($ac_cv_linux_func_i_create_takes_nameidata)
! if test "x$ac_cv_linux_func_i_create_takes_nameidata" = "xyes" ; then
! AC_DEFINE(IOP_CREATE_TAKES_NAMEIDATA, 1, [define if your iops.create takes a nameidata argument])
! fi
! AC_MSG_CHECKING(whether inode_operations.lookup takes a nameidata)
! AC_CACHE_VAL(ac_cv_linux_func_i_lookup_takes_nameidata,
! [
! AC_TRY_COMPILE(
! [#include <linux/fs.h>
! #include <linux/namei.h>],
! [struct inode _inode; 
! struct dentry _dentry;
! struct nameidata _nameidata;
! (void)_inode.i_op->lookup(&_inode, &_dentry, &_nameidata);],
! ac_cv_linux_func_i_lookup_takes_nameidata=yes,
! ac_cv_linux_func_i_lookup_takes_nameidata=no)])
! AC_MSG_RESULT($ac_cv_linux_func_i_lookup_takes_nameidata)
! if test "x$ac_cv_linux_func_i_lookup_takes_nameidata" = "xyes" ; then
! AC_DEFINE(IOP_LOOKUP_TAKES_NAMEIDATA, 1, [define if your iops.lookup takes a nameidata argument])
! fi
! AC_MSG_CHECKING(whether inode_operations.permission takes a nameidata)
! AC_CACHE_VAL(ac_cv_linux_func_i_permission_takes_nameidata,
! [
! AC_TRY_COMPILE(
! [#include <linux/fs.h>
! #include <linux/namei.h>],
! [struct inode _inode; 
! struct nameidata _nameidata;
! (void)_inode.i_op->permission(&_inode, 0, &_nameidata);],
! ac_cv_linux_func_i_permission_takes_nameidata=yes,
! ac_cv_linux_func_i_permission_takes_nameidata=no)])
! AC_MSG_RESULT($ac_cv_linux_func_i_permission_takes_nameidata)
! if test "x$ac_cv_linux_func_i_permission_takes_nameidata" = "xyes" ; then
! AC_DEFINE(IOP_PERMISSION_TAKES_NAMEIDATA, 1, [define if your iops.permission takes a nameidata argument])
! fi
! AC_MSG_CHECKING(whether dentry_operations.d_revalidate takes a nameidata)
! CPPFLAGS="$CPPFLAGS -Werror"
! AC_CACHE_VAL(ac_cv_linux_func_d_revalidate_takes_nameidata,
! [
! AC_TRY_COMPILE(
! [#include <linux/fs.h>
! #include <linux/namei.h>],
! [struct dentry _dentry; 
! struct nameidata _nameidata;
! (void)_dentry.d_op->d_revalidate(&_dentry, &_nameidata);],
! ac_cv_linux_func_d_revalidate_takes_nameidata=yes,
! ac_cv_linux_func_d_revalidate_takes_nameidata=no)])
! AC_MSG_RESULT($ac_cv_linux_func_d_revalidate_takes_nameidata)
! if test "x$ac_cv_linux_func_d_revalidate_takes_nameidata" = "xyes" ; then
!   AC_DEFINE(DOP_REVALIDATE_TAKES_NAMEIDATA, 1, [define if your dops.d_revalidate takes a nameidata argument])
! fi
! CPPFLAGS="$save_CPPFLAGS"])
  
! AC_DEFUN([LINUX_AOP_WRITEBACK_CONTROL],[
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_MSG_CHECKING(whether address_space_operations.writepage takes a writeback_control)
! AC_CACHE_VAL(ac_cv_linux_func_a_writepage_takes_writeback_control,
! [
! AC_TRY_COMPILE(
! [#include <linux/fs.h>
! #include <linux/mm.h>
! #include <linux/writeback.h>],
! [struct address_space_operations _aops; 
! struct page _page;
! struct writeback_control _writeback_control;
! (void)_aops.writepage(&_page, &_writeback_control);],
! ac_cv_linux_func_a_writepage_takes_writeback_control=yes,
! ac_cv_linux_func_a_writepage_takes_writeback_control=no)])
! AC_MSG_RESULT($ac_cv_linux_func_a_writepage_takes_writeback_control)
! if test "x$ac_cv_linux_func_a_writepage_takes_writeback_control" = "xyes" ; then
! AC_DEFINE(AOP_WRITEPAGE_TAKES_WRITEBACK_CONTROL, 1, [define if your aops.writepage takes a struct writeback_control argument])
! fi
! CPPFLAGS="$save_CPPFLAGS"])
  
! AC_DEFUN([LINUX_REFRIGERATOR],[
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_MSG_CHECKING(whether refrigerator takes PF_FREEZE)
! AC_CACHE_VAL(ac_cv_linux_func_refrigerator_takes_pf_freeze,
! [
! AC_TRY_COMPILE(
! [#include <linux/sched.h>],
! [
! refrigerator(PF_FREEZE);
! ],
! ac_cv_linux_func_refrigerator_takes_pf_freeze=yes,
! ac_cv_linux_func_refrigerator_takes_pf_freeze=no)])
! AC_MSG_RESULT($ac_cv_linux_func_refrigerator_takes_pf_freeze)
! if test "x$ac_cv_linux_func_refrigerator_takes_pf_freeze" = "xyes" ; then
! AC_DEFINE(LINUX_REFRIGERATOR_TAKES_PF_FREEZE, 1, [define if your refrigerator takes PF_FREEZE])
! fi
! CPPFLAGS="$save_CPPFLAGS"])
--- 1,46 ----
! # AC_TRY_KBUILD26([INCLUDES], [FUNCTION-BODY],
! #                 [ACTION-IF-SUCCESS], [ACTION-IF-FAILURE])
! #
! AC_DEFUN([AC_TRY_KBUILD26], [
!   rm -fr conftest.dir
!   if mkdir conftest.dir; then
!   cd conftest.dir
!     cat >Makefile <<_ACEOF
! CFLAGS += $CPPFLAGS
  
! obj-m += conftest.o
! _ACEOF
!     cat >conftest.c <<\_ACEOF
! $1
  
! void conftest(void)
! { 
! $2
! } 
! _ACEOF
!     cd ..
!   fi
!   AS_IF(AC_RUN_LOG([make -C $LINUX_KERNEL_PATH M=`pwd`/conftest.dir modules > /dev/null]),
!       [$3], [$4])
!   rm -fr conftest.dir])
  
!   
! # AC_TRY_KBUILD24([INCLUDES], [FUNCTION-BODY],
! #                 [ACTION-IF-SUCCESS], [ACTION-IF-FAILURE])
! #
! AC_DEFUN([AC_TRY_KBUILD24], [
!   ac_save_CPPFLAGS="$CPPFLAGS"
!   CPPFLAGS="-I$LINUX_KERNEL_PATH/include -D__KERNEL__ $CPPFLAGS"
!   AC_TRY_COMPILE([$1], [$2], [$3], [$4])
!   CPPFLAGS="$ac_save_CPPFLAGS"])
  
! 
! # AC_TRY_KBUILD([INCLUDES], [FUNCTION-BODY],
! #               [ACTION-IF-SUCCESS], [ACTION-IF-FAILURE])
! #
! AC_DEFUN([AC_TRY_KBUILD], [
!   if test -f $LINUX_KERNEL_PATH/scripts/Makefile.build; then
!     AC_TRY_KBUILD26([$1], [$2], [$3], [$4])
!   else
!     AC_TRY_KBUILD24([$1], [$2], [$3], [$4])
!   fi])
Index: openafs/src/cf/linux-test2.m4
diff -c openafs/src/cf/linux-test2.m4:1.12 openafs/src/cf/linux-test2.m4:1.12.4.1
*** openafs/src/cf/linux-test2.m4:1.12	Thu Jan 26 10:56:42 2006
--- openafs/src/cf/linux-test2.m4	Fri Aug  4 11:45:33 2006
***************
*** 1,79 ****
- AC_DEFUN([LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_GFP_MASK], [
- AC_MSG_CHECKING(for gfp_mask in struct address_space)
- save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
- AC_CACHE_VAL(ac_cv_linux_fs_struct_address_space_has_gfp_mask, 
- [
- AC_TRY_COMPILE(
- [#include <linux/fs.h>],
- [struct address_space _a;
- printf("%d\n", _a.gfp_mask);], 
- ac_cv_linux_fs_struct_address_space_has_gfp_mask=yes,
- ac_cv_linux_fs_struct_address_space_has_gfp_mask=no)])
- AC_MSG_RESULT($ac_cv_linux_fs_struct_address_space_has_gfp_mask)
- CPPFLAGS="$save_CPPFLAGS"])
- 
- AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_BYTES], [
- AC_MSG_CHECKING(for i_bytes in struct inode)
- save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
- AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_i_bytes, 
- [
- AC_TRY_COMPILE(
- [#include <linux/fs.h>],
- [struct inode _inode;
- printf("%d\n", _inode.i_bytes);], 
- ac_cv_linux_fs_struct_inode_has_i_bytes=yes,
- ac_cv_linux_fs_struct_inode_has_i_bytes=no)])
- AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_bytes)
- CPPFLAGS="$save_CPPFLAGS"])
- 
- AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_ALLOC_SEM], [
- AC_MSG_CHECKING(for i_alloc_sem in struct inode)
- save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
- AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_i_alloc_sem,
- [
- AC_TRY_COMPILE(
- [#include <linux/fs.h>],
- [struct inode _i;
- printf("%x\n", _i.i_alloc_sem);], 
- ac_cv_linux_fs_struct_inode_has_i_alloc_sem=yes,
- ac_cv_linux_fs_struct_inode_has_i_alloc_sem=no)])
- AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_alloc_sem)
- CPPFLAGS="$save_CPPFLAGS"])
- 
- AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_TRUNCATE_SEM], [
- AC_MSG_CHECKING(for i_truncate_sem in struct inode)
- save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
- AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_i_truncate_sem,
- [
- AC_TRY_COMPILE(
- [#include <linux/fs.h>],
- [struct inode _i;
- printf("%x\n", _i.i_truncate_sem);], 
- ac_cv_linux_fs_struct_inode_has_i_truncate_sem=yes,
- ac_cv_linux_fs_struct_inode_has_i_truncate_sem=no)])
- AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_truncate_sem)
- CPPFLAGS="$save_CPPFLAGS"])
- 
- AC_DEFUN([LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK], [
- AC_MSG_CHECKING(for page_lock in struct address_space)
- save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
- AC_CACHE_VAL(ac_cv_linux_fs_struct_address_space_has_page_lock, 
- [
- AC_TRY_COMPILE(
- [#include <linux/fs.h>],
- [struct address_space _a_s;
- printf("%x\n", _a_s.page_lock);], 
- ac_cv_linux_fs_struct_address_space_has_page_lock=yes,
- ac_cv_linux_fs_struct_address_space_has_page_lock=no)])
- AC_MSG_RESULT($ac_cv_linux_fs_struct_address_space_has_page_lock)
- CPPFLAGS="$save_CPPFLAGS"])
- 
- 
  dnl LINUX_BUILD_VNODE_FROM_INODE (configdir, outputdir, tmpldir)
  dnl		defaults: (src/config, src/afs/LINUX, src/afs/linux)
  
--- 1,3 ----
Index: openafs/src/cf/linux-test3.m4
diff -c openafs/src/cf/linux-test3.m4:1.18 openafs/src/cf/linux-test3.m4:1.18.4.1
*** openafs/src/cf/linux-test3.m4:1.18	Thu Jan 26 10:56:42 2006
--- openafs/src/cf/linux-test3.m4	Fri Aug  4 11:45:33 2006
***************
*** 82,119 ****
  AC_MSG_RESULT($ac_cv_linux_kernel_is_selinux)
  CPPFLAGS="$save_CPPFLAGS"])
  
- AC_DEFUN([LINUX_KERNEL_SOCK_CREATE],[
- AC_MSG_CHECKING(for 5th argument in sock_create found in some SELinux kernels)
- save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -D__KERNEL__ -DKBUILD_BASENAME=\\"libafs\\" $CPPFLAGS"
- AC_CACHE_VAL(ac_cv_linux_kernel_sock_create_v,
- [
- AC_TRY_COMPILE(
-   [#include <linux/net.h>],
-   [
-   sock_create(0,0,0,0,0)
-   ],
-   ac_cv_linux_kernel_sock_create_v=yes,
-   ac_cv_linux_kernel_sock_create_v=no)])
- AC_MSG_RESULT($ac_cv_linux_kernel_sock_create_v)
- CPPFLAGS="$save_CPPFLAGS"])
- 
- AC_DEFUN([LINUX_KERNEL_PAGE_FOLLOW_LINK],[
- AC_MSG_CHECKING(for page_follow_link_light vs page_follow_link)
- save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-default -Werror-implicit-function-declaration -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
- AC_CACHE_VAL(ac_cv_linux_kernel_page_follow_link,
- [
- AC_TRY_COMPILE(
-   [#include <linux/fs.h>],
-   [
-   page_follow_link(0,0)
-   ],
-   ac_cv_linux_kernel_page_follow_link=yes,
-   ac_cv_linux_kernel_page_follow_link=no)])
- AC_MSG_RESULT($ac_cv_linux_kernel_page_follow_link)
- CPPFLAGS="$save_CPPFLAGS"])
- 
  AC_DEFUN([LINUX_KERNEL_LINUX_SEQ_FILE_H],[
    AC_MSG_CHECKING(for linux/seq_file.h in kernel)
    if test -f "${LINUX_KERNEL_PATH}/include/linux/seq_file.h"; then
--- 82,87 ----
Index: openafs/src/cf/linux-test4.m4
diff -c openafs/src/cf/linux-test4.m4:1.29 openafs/src/cf/linux-test4.m4:1.29.2.3
*** openafs/src/cf/linux-test4.m4:1.29	Tue Feb 14 19:32:02 2006
--- openafs/src/cf/linux-test4.m4	Fri Aug  4 11:57:54 2006
***************
*** 1,500 ****
  AC_DEFUN([LINUX_COMPLETION_H_EXISTS], [
! AC_MSG_CHECKING(for linux/completion.h existance)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_completion_h_exists,
! [
! AC_TRY_COMPILE(
! [#include <linux/completion.h>
! #include <linux/version.h>],
  [struct completion _c;
  #if LINUX_VERSION_CODE <= KERNEL_VERSION(2,4,8)
  lose
! #endif
! ],
! ac_cv_linux_completion_h_exists=yes,
! ac_cv_linux_completion_h_exists=no)])
! AC_MSG_RESULT($ac_cv_linux_completion_h_exists)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_DEFINES_FOR_EACH_PROCESS], [
! AC_MSG_CHECKING(for defined for_each_process)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_defines_for_each_process,
! [
! AC_TRY_COMPILE(
  [#include <linux/sched.h>],
! [#ifndef for_each_process(p)
  #error for_each_process not defined
  #endif],
! ac_cv_linux_defines_for_each_process=yes,
! ac_cv_linux_defines_for_each_process=no)])
! AC_MSG_RESULT($ac_cv_linux_defines_for_each_process)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_DEFINES_PREV_TASK], [
! AC_MSG_CHECKING(for defined prev_task)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_defines_prev_task,
! [
! AC_TRY_COMPILE(
  [#include <linux/sched.h>],
! [#ifndef prev_task(p)
  #error prev_task not defined
  #endif],
! ac_cv_linux_defines_prev_task=yes,
! ac_cv_linux_defines_prev_task=no)])
! AC_MSG_RESULT($ac_cv_linux_defines_prev_task)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_EXPORTS_INIT_MM], [
! AC_MSG_CHECKING(for exported init_mm)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_exports_init_mm,
! [
! AC_TRY_COMPILE(
  [#include <linux/modversions.h>],
  [#ifndef __ver_init_mm
  #error init_mm not exported
  #endif],
! ac_cv_linux_exports_init_mm=yes,
! ac_cv_linux_exports_init_mm=no)])
! AC_MSG_RESULT($ac_cv_linux_exports_init_mm)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_EXPORTS_KALLSYMS_ADDRESS], [
! AC_MSG_CHECKING(for exported kallsyms_address_to_symbol)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_exports_kallsyms_address,
! [
! AC_TRY_COMPILE(
  [#include <linux/modversions.h>],
  [#ifndef __ver_kallsyms_address_to_symbol
  #error kallsyms_address_to_symbol not exported
  #endif],
! ac_cv_linux_exports_kallsyms_address=yes,
! ac_cv_linux_exports_kallsyms_address=no)])
! AC_MSG_RESULT($ac_cv_linux_exports_kallsyms_address)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_EXPORTS_KALLSYMS_SYMBOL], [
! AC_MSG_CHECKING(for exported kallsyms_symbol_to_address)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_exports_kallsyms_symbol,
! [
! AC_TRY_COMPILE(
  [#include <linux/modversions.h>],
  [#ifndef __ver_kallsyms_symbol_to_address
  #error kallsyms_symbol_to_address not exported
  #endif],
! ac_cv_linux_exports_kallsyms_symbol=yes,
! ac_cv_linux_exports_kallsyms_symbol=no)])
! AC_MSG_RESULT($ac_cv_linux_exports_kallsyms_symbol)
! CPPFLAGS="$save_CPPFLAGS"])
! 
  
  AC_DEFUN([LINUX_EXPORTS_SYS_CALL_TABLE], [
! AC_MSG_CHECKING(for exported sys_call_table)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_exports_sys_call_table,
! [
! AC_TRY_COMPILE(
  [#include <linux/modversions.h>],
  [#ifndef __ver_sys_call_table
  #error sys_call_table not exported
  #endif],
! ac_cv_linux_exports_sys_call_table=yes,
! ac_cv_linux_exports_sys_call_table=no)])
! AC_MSG_RESULT($ac_cv_linux_exports_sys_call_table)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_EXPORTS_IA32_SYS_CALL_TABLE], [
! AC_MSG_CHECKING(for exported ia32_sys_call_table)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_exports_ia32_sys_call_table,
! [
! AC_TRY_COMPILE(
  [#include <linux/modversions.h>],
  [#ifndef __ver_ia32_sys_call_table
  #error ia32_sys_call_table not exported
  #endif],
! ac_cv_linux_exports_ia32_sys_call_table=yes,
! ac_cv_linux_exports_ia32_sys_call_table=no)])
! AC_MSG_RESULT($ac_cv_linux_exports_ia32_sys_call_table)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_EXPORTS_SYS_CHDIR], [
! AC_MSG_CHECKING(for exported sys_chdir)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_exports_sys_chdir,
! [
! AC_TRY_COMPILE(
  [#include <linux/modversions.h>],
  [#ifndef __ver_sys_chdir
  #error sys_chdir not exported
  #endif],
! ac_cv_linux_exports_sys_chdir=yes,
! ac_cv_linux_exports_sys_chdir=no)])
! AC_MSG_RESULT($ac_cv_linux_exports_sys_chdir)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_EXPORTS_SYS_CLOSE], [
! AC_MSG_CHECKING(for exported sys_close)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_exports_sys_close,
! [
! AC_TRY_COMPILE(
  [#include <linux/modversions.h>],
  [#ifndef __ver_sys_close
  #error sys_close not exported
  #endif],
! ac_cv_linux_exports_sys_close=yes,
! ac_cv_linux_exports_sys_close=no)])
! AC_MSG_RESULT($ac_cv_linux_exports_sys_close)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_EXPORTS_SYS_WAIT4], [
! AC_MSG_CHECKING(for exported sys_wait4)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_exports_sys_wait4,
! [
! AC_TRY_COMPILE(
  [#include <linux/modversions.h>],
  [#ifndef __ver_sys_wait4
  #error sys_wait4 not exported
  #endif],
! ac_cv_linux_exports_sys_wait4=yes,
! ac_cv_linux_exports_sys_wait4=no)])
! AC_MSG_RESULT($ac_cv_linux_exports_sys_wait4)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_CDEV], [
! AC_MSG_CHECKING(for i_cdev in struct inode)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_i_cdev, 
! [
! AC_TRY_COMPILE(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printf("%d\n", _inode.i_cdev);], 
! ac_cv_linux_fs_struct_inode_has_i_cdev=yes,
! ac_cv_linux_fs_struct_inode_has_i_cdev=no)])
! AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_cdev)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_DEVICES], [
! AC_MSG_CHECKING(for i_devices in struct inode)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_i_devices, 
! [
! AC_TRY_COMPILE(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printf("%d\n", _inode.i_devices);], 
! ac_cv_linux_fs_struct_inode_has_i_devices=yes,
! ac_cv_linux_fs_struct_inode_has_i_devices=no)])
! AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_devices)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS], [
! AC_MSG_CHECKING(for i_dirty_data_buffers in struct inode)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers, 
! [
! AC_TRY_COMPILE(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printf("%d\n", _inode.i_dirty_data_buffers);], 
! ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers=yes,
! ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers=no)])
! AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_INOTIFY_LOCK], [
! AC_MSG_CHECKING(for inotify_lock in struct inode)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_inotify_lock, 
! [
! AC_TRY_COMPILE(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printf("%d\n", _inode.inotify_lock);], 
! ac_cv_linux_fs_struct_inode_has_inotify_lock=yes,
! ac_cv_linux_fs_struct_inode_has_inotify_lock=no)])
! AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_inotify_lock)
! CPPFLAGS="$save_CPPFLAGS"])
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_INOTIFY_SEM], [
! AC_MSG_CHECKING(for inotify_sem in struct inode)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_inotify_sem, 
! [
! AC_TRY_COMPILE(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printf("%x\n", _inode.inotify_sem);], 
! ac_cv_linux_fs_struct_inode_has_inotify_sem=yes,
! ac_cv_linux_fs_struct_inode_has_inotify_sem=no)])
! AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_inotify_sem)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_MAPPING_OVERLOAD], [
! AC_MSG_CHECKING(for i_mapping_overload in struct inode)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_i_mapping_overload, 
! [
! AC_TRY_COMPILE(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printf("%d\n", _inode.i_mapping_overload);], 
! ac_cv_linux_fs_struct_inode_has_i_mapping_overload=yes,
! ac_cv_linux_fs_struct_inode_has_i_mapping_overload=no)])
! AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_mapping_overload)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_MMAP_SHARED], [
! AC_MSG_CHECKING(for i_mmap_shared in struct inode)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_i_mmap_shared,
! [
! AC_TRY_COMPILE(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printf("%d\n", _inode.i_mmap_shared);],
! ac_cv_linux_fs_struct_inode_has_i_mmap_shared=yes,
! ac_cv_linux_fs_struct_inode_has_i_mmap_shared=no)])
! AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_mmap_shared)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_MUTEX], [
! AC_MSG_CHECKING(for i_mutex in struct inode)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_i_mutex, 
! [
! AC_TRY_COMPILE(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printf("%d\n", _inode.i_mutex);], 
! ac_cv_linux_fs_struct_inode_has_i_mutex=yes,
! ac_cv_linux_fs_struct_inode_has_i_mutex=no)])
! AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_mutex)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_SECURITY], [
! AC_MSG_CHECKING(for i_security in struct inode)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_i_security, 
! [
! AC_TRY_COMPILE(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printf("%d\n", _inode.i_security);], 
! ac_cv_linux_fs_struct_inode_has_i_security=yes,
! ac_cv_linux_fs_struct_inode_has_i_security=no)])
! AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_security)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_SB_LIST], [
! AC_MSG_CHECKING(for i_sb_list in struct inode)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_fs_struct_inode_has_i_sb_list, 
! [
! AC_TRY_COMPILE(
! [#include <linux/fs.h>],
! [struct inode _inode;
! printf("%d\n", _inode.i_sb_list);], 
! ac_cv_linux_fs_struct_inode_has_i_sb_list=yes,
! ac_cv_linux_fs_struct_inode_has_i_sb_list=no)])
! AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_sb_list)
! CPPFLAGS="$save_CPPFLAGS"])
! 
! 
! AC_DEFUN([LINUX_RECALC_SIGPENDING_ARG_TYPE],[
! AC_MSG_CHECKING(for recalc_sigpending arg type)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_func_recalc_sigpending_takes_void,
! [
! AC_TRY_COMPILE(
  [#include <linux/sched.h>],
  [recalc_sigpending();],
! ac_cv_linux_func_recalc_sigpending_takes_void=yes,
! ac_cv_linux_func_recalc_sigpending_takes_void=no)])
! AC_MSG_RESULT($ac_cv_linux_func_recalc_sigpending_takes_void)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_PARENT], [
! AC_MSG_CHECKING(for parent in struct task_struct)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_sched_struct_task_struct_has_parent,
! [
! AC_TRY_COMPILE(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printf("%d\n", _tsk.parent);],
! ac_cv_linux_sched_struct_task_struct_has_parent=yes,
! ac_cv_linux_sched_struct_task_struct_has_parent=no)])
! AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_parent)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_REAL_PARENT], [
! AC_MSG_CHECKING(for real_parent in struct task_struct)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_sched_struct_task_struct_has_real_parent,
! [
! AC_TRY_COMPILE(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printf("%d\n", _tsk.real_parent);],
! ac_cv_linux_sched_struct_task_struct_has_real_parent=yes,
! ac_cv_linux_sched_struct_task_struct_has_real_parent=no)])
! AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_real_parent)
! CPPFLAGS="$save_CPPFLAGS"])
  
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIG], [
! AC_MSG_CHECKING(for sig in struct task_struct)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_sched_struct_task_struct_has_sig,
! [
! AC_TRY_COMPILE(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printf("%d\n", _tsk.sig);],
! ac_cv_linux_sched_struct_task_struct_has_sig=yes,
! ac_cv_linux_sched_struct_task_struct_has_sig=no)])
! AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_sig)
! CPPFLAGS="$save_CPPFLAGS"])
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGMASK_LOCK], [
! AC_MSG_CHECKING(for sigmask_lock in struct task_struct)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_sched_struct_task_struct_has_sigmask_lock,
! [
! AC_TRY_COMPILE(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printf("%d\n", _tsk.sigmask_lock);],
! ac_cv_linux_sched_struct_task_struct_has_sigmask_lock=yes,
! ac_cv_linux_sched_struct_task_struct_has_sigmask_lock=no)])
! AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_sigmask_lock)
! CPPFLAGS="$save_CPPFLAGS"])
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGHAND], [
! AC_MSG_CHECKING(for sighand in struct task_struct)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_sched_struct_task_struct_has_sighand,
! [
! AC_TRY_COMPILE(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printf("%d\n", _tsk.sighand);],
! ac_cv_linux_sched_struct_task_struct_has_sighand=yes,
! ac_cv_linux_sched_struct_task_struct_has_sighand=no)])
! AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_sighand)
! CPPFLAGS="$save_CPPFLAGS"])
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_RLIM], [
! AC_MSG_CHECKING(for rlim in struct task_struct)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_sched_struct_task_struct_has_rlim,
! [
! AC_TRY_COMPILE(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printf("%d\n", _tsk.rlim);],
! ac_cv_linux_sched_struct_task_struct_has_rlim=yes,
! ac_cv_linux_sched_struct_task_struct_has_rlim=no)])
! AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_rlim)
! CPPFLAGS="$save_CPPFLAGS"])
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGNAL_RLIM], [
! AC_MSG_CHECKING(for signal->rlim in struct task_struct)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_sched_struct_task_struct_has_signal_rlim,
! [
! AC_TRY_COMPILE(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printf("%d\n", _tsk.signal->rlim);],
! ac_cv_linux_sched_struct_task_struct_has_signal_rlim=yes,
! ac_cv_linux_sched_struct_task_struct_has_signal_rlim=no)])
! AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_signal_rlim)
! CPPFLAGS="$save_CPPFLAGS"])
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_EXIT_STATE], [
! AC_MSG_CHECKING(for exit_state in struct task_struct)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_sched_struct_task_struct_has_exit_state,
! [
! AC_TRY_COMPILE(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printf("%d\n", _tsk.exit_state);],
! ac_cv_linux_sched_struct_task_struct_has_exit_state=yes,
! ac_cv_linux_sched_struct_task_struct_has_exit_state=no)])
! AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_exit_state)
! CPPFLAGS="$save_CPPFLAGS"])
  
  AC_DEFUN([LINUX_FS_STRUCT_SUPER_HAS_ALLOC_INODE], [
! AC_MSG_CHECKING(for alloc_inode in struct super_operations)
! save_CPPFLAGS="$CPPFLAGS"
! CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -DKBUILD_BASENAME=\"libafs\" -D__KERNEL__ $CPPFLAGS"
! AC_CACHE_VAL(ac_cv_linux_fs_struct_super_has_alloc_inode, 
! [
! AC_TRY_COMPILE(
  [#include <linux/fs.h>],
  [struct super_operations _super;
! printf("%p\n", _super.alloc_inode);], 
! ac_cv_linux_fs_struct_super_has_alloc_inode=yes,
! ac_cv_linux_fs_struct_super_has_alloc_inode=no)])
! AC_MSG_RESULT($ac_cv_linux_fs_struct_super_has_alloc_inode)
! CPPFLAGS="$save_CPPFLAGS"])
--- 1,627 ----
  AC_DEFUN([LINUX_COMPLETION_H_EXISTS], [
!   AC_MSG_CHECKING([for linux/completion.h existance])
!   AC_CACHE_VAL([ac_cv_linux_completion_h_exists], [
!     AC_TRY_KBUILD(
! [#include <linux/version.h>
! #include <linux/completion.h>],
  [struct completion _c;
  #if LINUX_VERSION_CODE <= KERNEL_VERSION(2,4,8)
  lose
! #endif],
!       ac_cv_linux_completion_h_exists=yes,
!       ac_cv_linux_completion_h_exists=no)])
!   AC_MSG_RESULT($ac_cv_linux_completion_h_exists)])
  
  
  AC_DEFUN([LINUX_DEFINES_FOR_EACH_PROCESS], [
!   AC_MSG_CHECKING([for defined for_each_process])
!   AC_CACHE_VAL([ac_cv_linux_defines_for_each_process], [
!     AC_TRY_KBUILD(
  [#include <linux/sched.h>],
! [#ifndef for_each_process
  #error for_each_process not defined
  #endif],
!       ac_cv_linux_defines_for_each_process=yes,
!       ac_cv_linux_defines_for_each_process=no)])
!   AC_MSG_RESULT($ac_cv_linux_defines_for_each_process)])
  
  
  AC_DEFUN([LINUX_DEFINES_PREV_TASK], [
!   AC_MSG_CHECKING([for defined prev_task])
!   AC_CACHE_VAL([ac_cv_linux_defines_prev_task], [
!     AC_TRY_KBUILD(
  [#include <linux/sched.h>],
! [#ifndef prev_task
  #error prev_task not defined
  #endif],
!       ac_cv_linux_defines_prev_task=yes,
!       ac_cv_linux_defines_prev_task=no)])
!   AC_MSG_RESULT($ac_cv_linux_defines_prev_task)])
  
  
  AC_DEFUN([LINUX_EXPORTS_INIT_MM], [
!   AC_MSG_CHECKING([for exported init_mm])
!   AC_CACHE_VAL([ac_cv_linux_exports_init_mm], [
!     AC_TRY_KBUILD(
  [#include <linux/modversions.h>],
  [#ifndef __ver_init_mm
  #error init_mm not exported
  #endif],
!       ac_cv_linux_exports_init_mm=yes,
!       ac_cv_linux_exports_init_mm=no)])
!   AC_MSG_RESULT($ac_cv_linux_exports_init_mm)])
  
  
  AC_DEFUN([LINUX_EXPORTS_KALLSYMS_ADDRESS], [
!   AC_MSG_CHECKING([for exported kallsyms_address_to_symbol])
!   AC_CACHE_VAL([ac_cv_linux_exports_kallsyms_address], [
!     AC_TRY_KBUILD(
  [#include <linux/modversions.h>],
  [#ifndef __ver_kallsyms_address_to_symbol
  #error kallsyms_address_to_symbol not exported
  #endif],
!       ac_cv_linux_exports_kallsyms_address=yes,
!       ac_cv_linux_exports_kallsyms_address=no)])
!   AC_MSG_RESULT($ac_cv_linux_exports_kallsyms_address)])
  
  
  AC_DEFUN([LINUX_EXPORTS_KALLSYMS_SYMBOL], [
!   AC_MSG_CHECKING([for exported kallsyms_symbol_to_address])
!   AC_CACHE_VAL([ac_cv_linux_exports_kallsyms_symbol], [
!     AC_TRY_KBUILD(
  [#include <linux/modversions.h>],
  [#ifndef __ver_kallsyms_symbol_to_address
  #error kallsyms_symbol_to_address not exported
  #endif],
!       ac_cv_linux_exports_kallsyms_symbol=yes,
!       ac_cv_linux_exports_kallsyms_symbol=no)])
!   AC_MSG_RESULT($ac_cv_linux_exports_kallsyms_symbol)])
  
  AC_DEFUN([LINUX_EXPORTS_SYS_CALL_TABLE], [
!   AC_MSG_CHECKING([for exported sys_call_table])
!   AC_CACHE_VAL([ac_cv_linux_exports_sys_call_table], [
!     AC_TRY_KBUILD(
  [#include <linux/modversions.h>],
  [#ifndef __ver_sys_call_table
  #error sys_call_table not exported
  #endif],
!       ac_cv_linux_exports_sys_call_table=yes,
!       ac_cv_linux_exports_sys_call_table=no)])
!   AC_MSG_RESULT($ac_cv_linux_exports_sys_call_table)])
  
  
  AC_DEFUN([LINUX_EXPORTS_IA32_SYS_CALL_TABLE], [
!   AC_MSG_CHECKING([for exported ia32_sys_call_table])
!   AC_CACHE_VAL([ac_cv_linux_exports_ia32_sys_call_table], [
!     AC_TRY_KBUILD(
  [#include <linux/modversions.h>],
  [#ifndef __ver_ia32_sys_call_table
  #error ia32_sys_call_table not exported
  #endif],
!       ac_cv_linux_exports_ia32_sys_call_table=yes,
!       ac_cv_linux_exports_ia32_sys_call_table=no)])
!   AC_MSG_RESULT($ac_cv_linux_exports_ia32_sys_call_table)])
  
  
  AC_DEFUN([LINUX_EXPORTS_SYS_CHDIR], [
!   AC_MSG_CHECKING([for exported sys_chdir])
!   AC_CACHE_VAL([ac_cv_linux_exports_sys_chdir], [
!     AC_TRY_KBUILD(
  [#include <linux/modversions.h>],
  [#ifndef __ver_sys_chdir
  #error sys_chdir not exported
  #endif],
!       ac_cv_linux_exports_sys_chdir=yes,
!       ac_cv_linux_exports_sys_chdir=no)])
!   AC_MSG_RESULT($ac_cv_linux_exports_sys_chdir)])
  
  
  AC_DEFUN([LINUX_EXPORTS_SYS_CLOSE], [
!   AC_MSG_CHECKING([for exported sys_close])
!   AC_CACHE_VAL([ac_cv_linux_exports_sys_close], [
!     AC_TRY_KBUILD(
  [#include <linux/modversions.h>],
  [#ifndef __ver_sys_close
  #error sys_close not exported
  #endif],
!       ac_cv_linux_exports_sys_close=yes,
!       ac_cv_linux_exports_sys_close=no)])
!   AC_MSG_RESULT($ac_cv_linux_exports_sys_close)])
  
  
  AC_DEFUN([LINUX_EXPORTS_SYS_WAIT4], [
!   AC_MSG_CHECKING([for exported sys_wait4])
!   AC_CACHE_VAL([ac_cv_linux_exports_sys_wait4], [
!     AC_TRY_KBUILD(
  [#include <linux/modversions.h>],
  [#ifndef __ver_sys_wait4
  #error sys_wait4 not exported
  #endif],
!       ac_cv_linux_exports_sys_wait4=yes,
!       ac_cv_linux_exports_sys_wait4=no)])
!   AC_MSG_RESULT($ac_cv_linux_exports_sys_wait4)])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_CDEV], [
!   AC_MSG_CHECKING([for i_cdev in struct inode])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_cdev], [
!     AC_TRY_KBUILD(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printk("%d\n", _inode.i_cdev);],
!       ac_cv_linux_fs_struct_inode_has_i_cdev=yes,
!       ac_cv_linux_fs_struct_inode_has_i_cdev=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_cdev)])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_DEVICES], [
!   AC_MSG_CHECKING([for i_devices in struct inode])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_devices], [
!     AC_TRY_KBUILD(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printk("%d\n", _inode.i_devices);],
!       ac_cv_linux_fs_struct_inode_has_i_devices=yes,
!       ac_cv_linux_fs_struct_inode_has_i_devices=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_devices)])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_DIRTY_DATA_BUFFERS], [
!   AC_MSG_CHECKING([for i_dirty_data_buffers in struct inode])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers], [
!     AC_TRY_KBUILD(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printk("%d\n", _inode.i_dirty_data_buffers);],
!       ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers=yes,
!       ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_dirty_data_buffers)])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_INOTIFY_LOCK], [
!   AC_MSG_CHECKING([for inotify_lock in struct inode])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_inotify_lock], [
!     AC_TRY_KBUILD(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printk("%d\n", _inode.inotify_lock);],
!       ac_cv_linux_fs_struct_inode_has_inotify_lock=yes,
!       ac_cv_linux_fs_struct_inode_has_inotify_lock=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_inotify_lock)])
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_INOTIFY_SEM], [
!   AC_MSG_CHECKING([for inotify_sem in struct inode])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_inotify_sem], [
!     AC_TRY_KBUILD(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printk("%x\n", _inode.inotify_sem);],
!       ac_cv_linux_fs_struct_inode_has_inotify_sem=yes,
!       ac_cv_linux_fs_struct_inode_has_inotify_sem=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_inotify_sem)])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_MAPPING_OVERLOAD], [
!   AC_MSG_CHECKING([for i_mapping_overload in struct inode])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_mapping_overload], [
!     AC_TRY_KBUILD(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printk("%d\n", _inode.i_mapping_overload);],
!       ac_cv_linux_fs_struct_inode_has_i_mapping_overload=yes,
!       ac_cv_linux_fs_struct_inode_has_i_mapping_overload=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_mapping_overload)])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_MMAP_SHARED], [
!   AC_MSG_CHECKING([for i_mmap_shared in struct inode])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_mmap_shared], [
!     AC_TRY_KBUILD(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printk("%d\n", _inode.i_mmap_shared);],
!       ac_cv_linux_fs_struct_inode_has_i_mmap_shared=yes,
!       ac_cv_linux_fs_struct_inode_has_i_mmap_shared=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_mmap_shared)])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_MUTEX], [
!   AC_MSG_CHECKING([for i_mutex in struct inode])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_mutex], [
!     AC_TRY_KBUILD(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printk("%d\n", _inode.i_mutex);],
!       ac_cv_linux_fs_struct_inode_has_i_mutex=yes,
!       ac_cv_linux_fs_struct_inode_has_i_mutex=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_mutex)])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_SECURITY], [
!   AC_MSG_CHECKING([for i_security in struct inode])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_security], [
!     AC_TRY_KBUILD(
  [#include <linux/fs.h>],
  [struct inode _inode;
! printk("%d\n", _inode.i_security);],
!       ac_cv_linux_fs_struct_inode_has_i_security=yes,
!       ac_cv_linux_fs_struct_inode_has_i_security=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_security)])
  
  
  AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_SB_LIST], [
!   AC_MSG_CHECKING([for i_sb_list in struct inode])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_sb_list], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>],
! [struct inode _inode;
! printk("%d\n", _inode.i_sb_list);],
!       ac_cv_linux_fs_struct_inode_has_i_sb_list=yes,
!       ac_cv_linux_fs_struct_inode_has_i_sb_list=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_sb_list)])
! 
! 
! AC_DEFUN([LINUX_RECALC_SIGPENDING_ARG_TYPE], [
!   AC_MSG_CHECKING([for recalc_sigpending arg type])
!   AC_CACHE_VAL([ac_cv_linux_func_recalc_sigpending_takes_void], [
!     AC_TRY_KBUILD(
  [#include <linux/sched.h>],
  [recalc_sigpending();],
!       ac_cv_linux_func_recalc_sigpending_takes_void=yes,
!       ac_cv_linux_func_recalc_sigpending_takes_void=no)])
!   AC_MSG_RESULT($ac_cv_linux_func_recalc_sigpending_takes_void)])
  
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_PARENT], [
!   AC_MSG_CHECKING([for parent in struct task_struct])
!   AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_parent], [
!     AC_TRY_KBUILD(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printk("%d\n", _tsk.parent);],
!       ac_cv_linux_sched_struct_task_struct_has_parent=yes,
!       ac_cv_linux_sched_struct_task_struct_has_parent=no)])
!   AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_parent)])
  
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_REAL_PARENT], [
!   AC_MSG_CHECKING([for real_parent in struct task_struct])
!   AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_real_parent], [
!     AC_TRY_KBUILD(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printk("%d\n", _tsk.real_parent);],
!       ac_cv_linux_sched_struct_task_struct_has_real_parent=yes,
!       ac_cv_linux_sched_struct_task_struct_has_real_parent=no)])
!   AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_real_parent)])
  
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIG], [
!   AC_MSG_CHECKING([for sig in struct task_struct])
!   AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_sig], [
!     AC_TRY_KBUILD(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printk("%d\n", _tsk.sig);],
!       ac_cv_linux_sched_struct_task_struct_has_sig=yes,
!       ac_cv_linux_sched_struct_task_struct_has_sig=no)])
!   AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_sig)])
! 
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGMASK_LOCK], [
!   AC_MSG_CHECKING([for sigmask_lock in struct task_struct])
!   AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_sigmask_lock], [
!     AC_TRY_KBUILD(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printk("%d\n", _tsk.sigmask_lock);],
!       ac_cv_linux_sched_struct_task_struct_has_sigmask_lock=yes,
!       ac_cv_linux_sched_struct_task_struct_has_sigmask_lock=no)])
!   AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_sigmask_lock)])
! 
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGHAND], [
!   AC_MSG_CHECKING([for sighand in struct task_struct])
!   AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_sighand], [
!     AC_TRY_KBUILD(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printk("%d\n", _tsk.sighand);],
!       ac_cv_linux_sched_struct_task_struct_has_sighand=yes,
!       ac_cv_linux_sched_struct_task_struct_has_sighand=no)])
!   AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_sighand)])
! 
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_RLIM], [
!   AC_MSG_CHECKING([for rlim in struct task_struct])
!   AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_rlim], [
!     AC_TRY_KBUILD(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printk("%d\n", _tsk.rlim);],
!       ac_cv_linux_sched_struct_task_struct_has_rlim=yes,
!       ac_cv_linux_sched_struct_task_struct_has_rlim=no)])
!   AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_rlim)])
! 
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_SIGNAL_RLIM], [
!   AC_MSG_CHECKING([for signal->rlim in struct task_struct])
!   AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_signal_rlim], [
!     AC_TRY_KBUILD(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printk("%d\n", _tsk.signal->rlim);],
!       ac_cv_linux_sched_struct_task_struct_has_signal_rlim=yes,
!       ac_cv_linux_sched_struct_task_struct_has_signal_rlim=no)])
!   AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_signal_rlim)])
! 
  
  AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_EXIT_STATE], [
!   AC_MSG_CHECKING([for exit_state in struct task_struct])
!   AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_exit_state], [
!     AC_TRY_KBUILD(
  [#include <linux/sched.h>],
  [struct task_struct _tsk;
! printk("%d\n", _tsk.exit_state);],
!       ac_cv_linux_sched_struct_task_struct_has_exit_state=yes,
!       ac_cv_linux_sched_struct_task_struct_has_exit_state=no)])
!   AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_exit_state)])
! 
  
  AC_DEFUN([LINUX_FS_STRUCT_SUPER_HAS_ALLOC_INODE], [
!   AC_MSG_CHECKING([for alloc_inode in struct super_operations])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_super_has_alloc_inode], [
!     AC_TRY_KBUILD(
  [#include <linux/fs.h>],
  [struct super_operations _super;
! printk("%p\n", _super.alloc_inode);],
!       ac_cv_linux_fs_struct_super_has_alloc_inode=yes,
!       ac_cv_linux_fs_struct_super_has_alloc_inode=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_super_has_alloc_inode)])
! 
! 
! AC_DEFUN([LINUX_KERNEL_SOCK_CREATE], [
!   AC_MSG_CHECKING([for 5th argument in sock_create found in some SELinux kernels])
!   AC_CACHE_VAL([ac_cv_linux_kernel_sock_create_v], [
!     AC_TRY_KBUILD(
! [#include <linux/net.h>],
! [sock_create(0,0,0,0,0);],
!       ac_cv_linux_kernel_sock_create_v=yes,
!       ac_cv_linux_kernel_sock_create_v=no)])
!   AC_MSG_RESULT($ac_cv_linux_kernel_sock_create_v)])
! 
! 
! AC_DEFUN([LINUX_KERNEL_PAGE_FOLLOW_LINK], [
!   AC_MSG_CHECKING([for page_follow_link_light vs page_follow_link])
!   AC_CACHE_VAL([ac_cv_linux_kernel_page_follow_link], [
!     save_CPPFLAGS="$CPPFLAGS"
!     CPPFLAGS="$CPPFLAGS -Werror-implicit-function-declaration"
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>],
! [page_follow_link(0,0);],
!       ac_cv_linux_kernel_page_follow_link=yes,
!       ac_cv_linux_kernel_page_follow_link=no)
!     CPPFLAGS="$save_CPPFLAGS"])
!   AC_MSG_RESULT($ac_cv_linux_kernel_page_follow_link)])
! 
! 
! AC_DEFUN([LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_GFP_MASK], [
!   AC_MSG_CHECKING([for gfp_mask in struct address_space])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_address_space_has_gfp_mask], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>],
! [struct address_space _a;
! printk("%d\n", _a.gfp_mask);],
!       ac_cv_linux_fs_struct_address_space_has_gfp_mask=yes,
!       ac_cv_linux_fs_struct_address_space_has_gfp_mask=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_address_space_has_gfp_mask)])
! 
! 
! AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_BYTES], [
!   AC_MSG_CHECKING([for i_bytes in struct inode])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_bytes], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>],
! [struct inode _inode;
! printk("%d\n", _inode.i_bytes);],
!       ac_cv_linux_fs_struct_inode_has_i_bytes=yes,
!       ac_cv_linux_fs_struct_inode_has_i_bytes=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_bytes)])
! 
! 
! AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_ALLOC_SEM], [
!   AC_MSG_CHECKING([for i_alloc_sem in struct inode])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_alloc_sem], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>],
! [struct inode _i;
! printk("%x\n", _i.i_alloc_sem);],
!       ac_cv_linux_fs_struct_inode_has_i_alloc_sem=yes,
!       ac_cv_linux_fs_struct_inode_has_i_alloc_sem=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_alloc_sem)])
! 
! 
! AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_TRUNCATE_SEM], [
!   AC_MSG_CHECKING([for i_truncate_sem in struct inode])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_inode_has_i_truncate_sem], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>],
! [struct inode _i;
! printk("%x\n", _i.i_truncate_sem);],
!       ac_cv_linux_fs_struct_inode_has_i_truncate_sem=yes,
!       ac_cv_linux_fs_struct_inode_has_i_truncate_sem=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_inode_has_i_truncate_sem)])
! 
! 
! AC_DEFUN([LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK], [
!   AC_MSG_CHECKING([for page_lock in struct address_space])
!   AC_CACHE_VAL([ac_cv_linux_fs_struct_address_space_has_page_lock], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>],
! [struct address_space _a_s;
! printk("%x\n", _a_s.page_lock);],
!       ac_cv_linux_fs_struct_address_space_has_page_lock=yes,
!       ac_cv_linux_fs_struct_address_space_has_page_lock=no)])
!   AC_MSG_RESULT($ac_cv_linux_fs_struct_address_space_has_page_lock)])
! 
! 
! AC_DEFUN([LINUX_INODE_SETATTR_RETURN_TYPE], [
!   AC_MSG_CHECKING([for inode_setattr return type])
!   AC_CACHE_VAL([ac_cv_linux_func_inode_setattr_returns_int], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>],
! [struct inode _inode;
! struct iattr _iattr;
! int i;
! i = inode_setattr(&_inode, &_iattr);],
!       ac_cv_linux_func_inode_setattr_returns_int=yes,
!       ac_cv_linux_func_inode_setattr_returns_int=no)])
!   AC_MSG_RESULT($ac_cv_linux_func_inode_setattr_returns_int)])
! 
! 
! AC_DEFUN([LINUX_WRITE_INODE_RETURN_TYPE], [
!   AC_MSG_CHECKING([for write_inode return type])
!   AC_CACHE_VAL([ac_cv_linux_func_write_inode_returns_int], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>],
! [struct inode _inode;
! struct super_operations _sops;
! int i;
! i = _sops.write_inode(&_inode, 0);],
!       ac_cv_linux_func_write_inode_returns_int=yes,
!       ac_cv_linux_func_write_inode_returns_int=no)])
!   AC_MSG_RESULT($ac_cv_linux_func_write_inode_returns_int)])
! 
! 
! AC_DEFUN([LINUX_AOP_WRITEBACK_CONTROL], [
!   AC_MSG_CHECKING([whether address_space_operations.writepage takes a writeback_control])
!   AC_CACHE_VAL([ac_cv_linux_func_a_writepage_takes_writeback_control], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>
! #include <linux/mm.h>
! #include <linux/writeback.h>],
! [struct address_space_operations _aops;
! struct page _page;
! struct writeback_control _writeback_control;
! (void)_aops.writepage(&_page, &_writeback_control);],
!       ac_cv_linux_func_a_writepage_takes_writeback_control=yes,
!       ac_cv_linux_func_a_writepage_takes_writeback_control=no)])
!   AC_MSG_RESULT($ac_cv_linux_func_a_writepage_takes_writeback_control)])
! 
! 
! AC_DEFUN([LINUX_REFRIGERATOR], [
!   AC_MSG_CHECKING([whether refrigerator takes PF_FREEZE])
!   AC_CACHE_VAL([ac_cv_linux_func_refrigerator_takes_pf_freeze], [
!     AC_TRY_KBUILD(
! [#include <linux/sched.h>],
! [refrigerator(PF_FREEZE);],
!       ac_cv_linux_func_refrigerator_takes_pf_freeze=yes,
!       ac_cv_linux_func_refrigerator_takes_pf_freeze=no)])
!   AC_MSG_RESULT($ac_cv_linux_func_refrigerator_takes_pf_freeze)])
! 
! 
! AC_DEFUN([LINUX_IOP_I_CREATE_TAKES_NAMEIDATA], [
!   AC_MSG_CHECKING([whether inode_operations.create takes a nameidata])
!   AC_CACHE_VAL([ac_cv_linux_func_i_create_takes_nameidata], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>
! #include <linux/namei.h>],
! [struct inode _inode;
! struct dentry _dentry;
! struct nameidata _nameidata;
! (void)_inode.i_op->create(&_inode, &_dentry, 0, &_nameidata);],
!       ac_cv_linux_func_i_create_takes_nameidata=yes,
!       ac_cv_linux_func_i_create_takes_nameidata=no)])
!   AC_MSG_RESULT($ac_cv_linux_func_i_create_takes_nameidata)])
! 
! 
! AC_DEFUN([LINUX_IOP_I_LOOKUP_TAKES_NAMEIDATA], [
!   AC_MSG_CHECKING([whether inode_operations.lookup takes a nameidata])
!   AC_CACHE_VAL([ac_cv_linux_func_i_lookup_takes_nameidata], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>
! #include <linux/namei.h>],
! [struct inode _inode;
! struct dentry _dentry;
! struct nameidata _nameidata;
! (void)_inode.i_op->lookup(&_inode, &_dentry, &_nameidata);],
!       ac_cv_linux_func_i_lookup_takes_nameidata=yes,
!       ac_cv_linux_func_i_lookup_takes_nameidata=no)])
!   AC_MSG_RESULT($ac_cv_linux_func_i_lookup_takes_nameidata)])
! 
! 
! AC_DEFUN([LINUX_IOP_I_PERMISSION_TAKES_NAMEIDATA], [
!   AC_MSG_CHECKING([whether inode_operations.permission takes a nameidata])
!   AC_CACHE_VAL([ac_cv_linux_func_i_permission_takes_nameidata], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>
! #include <linux/namei.h>],
! [struct inode _inode;
! struct dentry _dentry;
! struct nameidata _nameidata;
! (void)_inode.i_op->permission(&_inode, 0, &_nameidata);],
!       ac_cv_linux_func_i_permission_takes_nameidata=yes,
!       ac_cv_linux_func_i_permission_takes_nameidata=no)])
!   AC_MSG_RESULT($ac_cv_linux_func_i_permission_takes_nameidata)])
! 
! 
! AC_DEFUN([LINUX_DOP_D_REVALIDATE_TAKES_NAMEIDATA], [
!   AC_MSG_CHECKING([whether dentry_operations.d_revalidate takes a nameidata])
!   AC_CACHE_VAL([ac_cv_linux_func_d_revalidate_takes_nameidata], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>
! #include <linux/namei.h>],
! [struct dentry _dentry;
! struct nameidata _nameidata;
! (void)_dentry.d_op->d_revalidate(&_dentry, &_nameidata);],
!       ac_cv_linux_func_d_revalidate_takes_nameidata=yes,
!       ac_cv_linux_func_d_revalidate_takes_nameidata=no)])
!   AC_MSG_RESULT($ac_cv_linux_func_d_revalidate_takes_nameidata)])
! 
! AC_DEFUN([LINUX_GET_SB_HAS_STRUCT_VFSMOUNT], [
!   AC_MSG_CHECKING([for struct vfsmount * in get_sb_nodev()])
!   AC_CACHE_VAL([ac_cv_linux_get_sb_has_struct_vfsmount], [
!     AC_TRY_KBUILD(
! [#include <linux/fs.h>],
! [get_sb_nodev(0,0,0,0,0);],
!       ac_cv_linux_get_sb_has_struct_vfsmount=yes,
!       ac_cv_linux_get_sb_has_struct_vfsmount=no)])
!   AC_MSG_RESULT($ac_cv_linux_get_sb_has_struct_vfsmount)])
! 
! AC_DEFUN([LINUX_LINUX_KEYRING_SUPPORT], [
!   AC_MSG_CHECKING([for linux kernel keyring support])
!   AC_CACHE_VAL([ac_cv_linux_keyring_support], [
!     AC_TRY_KBUILD(
! [#include <linux/rwsem.h>
! #include <linux/key.h>
! #include <linux/keyctl.h>
! #include <asm/unistd.h>
! static int errno;
! static inline _syscall2(long, keyctl, int, option, void*, arg2);],
! [#ifdef CONFIG_KEYS
! keyctl(KEYCTL_JOIN_SESSION_KEYRING, NULL);
! request_key(NULL, NULL, NULL);
! #else
! #error rebuild your kernel with CONFIG_KEYS
! #endif],
!       ac_cv_linux_keyring_support=yes,
!       ac_cv_linux_keyring_support=no)])
!   AC_MSG_RESULT($ac_cv_linux_keyring_support)
!   if test "x$ac_cv_linux_keyring_support" = "xyes"; then
!     AC_DEFINE([LINUX_KEYRING_SUPPORT], 1, [define if your kernel has keyring support])
!   fi])
! 
! AC_DEFUN([LINUX_KEY_ALLOC_NEEDS_STRUCT_TASK], [
!   AC_MSG_CHECKING([if key_alloc() takes a struct task *])
!   AC_CACHE_VAL([ac_cv_key_alloc_needs_struct_task], [
!     AC_TRY_KBUILD(
! [#include <linux/rwsem.h>
! #include <linux/key.h>
! ],
! [(void) key_alloc(NULL, NULL, 0, 0, NULL, 0, 0);],
!       ac_cv_key_alloc_needs_struct_task=yes,
!       ac_cv_key_alloc_needs_struct_task=no)])
!   AC_MSG_RESULT($ac_cv_key_alloc_needs_struct_task)
!   if test "x$ac_cv_key_alloc_needs_struct_task" = "xyes"; then
!     AC_DEFINE([KEY_ALLOC_NEEDS_STRUCT_TASK], 1, [define if key_alloc takes a struct task *])
!   fi])
Index: openafs/src/config/NTMakefile.amd64_w2k
diff -c openafs/src/config/NTMakefile.amd64_w2k:1.24.2.4 openafs/src/config/NTMakefile.amd64_w2k:1.24.2.5
*** openafs/src/config/NTMakefile.amd64_w2k:1.24.2.4	Mon Jul 31 11:48:43 2006
--- openafs/src/config/NTMakefile.amd64_w2k	Wed Aug  9 22:49:22 2006
***************
*** 84,90 ****
  #define used in WinNT/2000 installation and program version display
  AFSPRODUCT_VER_MAJOR=1
  AFSPRODUCT_VER_MINOR=5
! AFSPRODUCT_VER_PATCH=0500
  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=0600
  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.4 openafs/src/config/NTMakefile.i386_nt40:1.84.2.5
*** openafs/src/config/NTMakefile.i386_nt40:1.84.2.4	Mon Jul 31 11:48:43 2006
--- openafs/src/config/NTMakefile.i386_nt40	Wed Aug  9 22:49:22 2006
***************
*** 84,90 ****
  #define used in WinNT/2000 installation and program version display
  AFSPRODUCT_VER_MAJOR=1
  AFSPRODUCT_VER_MINOR=5
! AFSPRODUCT_VER_PATCH=0500
  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=0600
  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.4 openafs/src/config/NTMakefile.i386_w2k:1.23.2.5
*** openafs/src/config/NTMakefile.i386_w2k:1.23.2.4	Mon Jul 31 11:48:44 2006
--- openafs/src/config/NTMakefile.i386_w2k	Wed Aug  9 22:49:22 2006
***************
*** 84,90 ****
  #define used in WinNT/2000 installation and program version display
  AFSPRODUCT_VER_MAJOR=1
  AFSPRODUCT_VER_MINOR=5
! AFSPRODUCT_VER_PATCH=0500
  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=0600
  AFSPRODUCT_VER_BUILD=0
  
  AFSPRODUCT_VERSION=$(AFSPRODUCT_VER_MAJOR).$(AFSPRODUCT_VER_MINOR).$(AFSPRODUCT_VER_PATCH)
Index: openafs/src/libafs/afs.ppc_darwin_70.plist.in
diff -c openafs/src/libafs/afs.ppc_darwin_70.plist.in:1.2.10.3 openafs/src/libafs/afs.ppc_darwin_70.plist.in:1.2.10.4
*** openafs/src/libafs/afs.ppc_darwin_70.plist.in:1.2.10.3	Mon Jul 31 18:04:28 2006
--- openafs/src/libafs/afs.ppc_darwin_70.plist.in	Thu Aug 10 13:00:33 2006
***************
*** 15,25 ****
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.5.5</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.5.5</string>
  	<key>OSBundleLibraries</key>
  	<dict>
  		<key>com.apple.kernel.bsd</key>
--- 15,25 ----
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.5.6</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.5.6</string>
  	<key>OSBundleLibraries</key>
  	<dict>
  		<key>com.apple.kernel.bsd</key>
Index: openafs/src/libafs/afs.ppc_darwin_80.plist.in
diff -c openafs/src/libafs/afs.ppc_darwin_80.plist.in:1.2.4.3 openafs/src/libafs/afs.ppc_darwin_80.plist.in:1.2.4.4
*** openafs/src/libafs/afs.ppc_darwin_80.plist.in:1.2.4.3	Mon Jul 31 18:04:28 2006
--- openafs/src/libafs/afs.ppc_darwin_80.plist.in	Thu Aug 10 13:00:33 2006
***************
*** 15,25 ****
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.5.5</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.5.5</string>
  	<key>OSBundleLibraries</key>
  	<dict>
  		<key>com.apple.kpi.bsd</key>
--- 15,25 ----
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.5.6</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.5.6</string>
  	<key>OSBundleLibraries</key>
  	<dict>
  		<key>com.apple.kpi.bsd</key>
Index: openafs/src/libafs/afs.ppc_darwin_90.plist.in
diff -c openafs/src/libafs/afs.ppc_darwin_90.plist.in:1.1.6.3 openafs/src/libafs/afs.ppc_darwin_90.plist.in:1.1.6.4
*** openafs/src/libafs/afs.ppc_darwin_90.plist.in:1.1.6.3	Mon Jul 31 18:04:28 2006
--- openafs/src/libafs/afs.ppc_darwin_90.plist.in	Thu Aug 10 13:00:33 2006
***************
*** 15,25 ****
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.5.5</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.5.5</string>
  	<key>OSBundleLibraries</key>
  	<dict>
  		<key>com.apple.kpi.bsd</key>
--- 15,25 ----
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.5.6</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.5.6</string>
  	<key>OSBundleLibraries</key>
  	<dict>
  		<key>com.apple.kpi.bsd</key>
Index: openafs/src/libafs/afs.x86_darwin_80.plist.in
diff -c openafs/src/libafs/afs.x86_darwin_80.plist.in:1.1.6.3 openafs/src/libafs/afs.x86_darwin_80.plist.in:1.1.6.4
*** openafs/src/libafs/afs.x86_darwin_80.plist.in:1.1.6.3	Mon Jul 31 18:04:28 2006
--- openafs/src/libafs/afs.x86_darwin_80.plist.in	Thu Aug 10 13:00:34 2006
***************
*** 15,25 ****
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.5.5</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.5.5</string>
  	<key>OSBundleLibraries</key>
  	<dict>
  		<key>com.apple.kpi.bsd</key>
--- 15,25 ----
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.5.6</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.5.6</string>
  	<key>OSBundleLibraries</key>
  	<dict>
  		<key>com.apple.kpi.bsd</key>
Index: openafs/src/libafs/afs.x86_darwin_90.plist.in
diff -c openafs/src/libafs/afs.x86_darwin_90.plist.in:1.1.6.3 openafs/src/libafs/afs.x86_darwin_90.plist.in:1.1.6.4
*** openafs/src/libafs/afs.x86_darwin_90.plist.in:1.1.6.3	Mon Jul 31 18:04:28 2006
--- openafs/src/libafs/afs.x86_darwin_90.plist.in	Thu Aug 10 13:00:34 2006
***************
*** 15,25 ****
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.5.5</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.5.5</string>
  	<key>OSBundleLibraries</key>
  	<dict>
  		<key>com.apple.kpi.bsd</key>
--- 15,25 ----
  	<key>CFBundlePackageType</key>
  	<string>KEXT</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.5.6</string>
  	<key>CFBundleSignature</key>
  	<string>????</string>
  	<key>CFBundleVersion</key>
! 	<string>1.5.6</string>
  	<key>OSBundleLibraries</key>
  	<dict>
  		<key>com.apple.kpi.bsd</key>
Index: openafs/src/packaging/MacOS/OpenAFS.Info.plist
diff -c openafs/src/packaging/MacOS/OpenAFS.Info.plist:1.2.10.4 openafs/src/packaging/MacOS/OpenAFS.Info.plist:1.2.10.5
*** openafs/src/packaging/MacOS/OpenAFS.Info.plist:1.2.10.4	Tue Aug  1 17:59:52 2006
--- openafs/src/packaging/MacOS/OpenAFS.Info.plist	Thu Aug 10 13:00:34 2006
***************
*** 3,15 ****
  <plist version="1.0">
  <dict>
  	<key>CFBundleGetInfoString</key>
! 	<string>OpenAFS 1.5.5</string>
  	<key>CFBundleIdentifier</key>
  	<string>org.openafs.OpenAFS.pkg</string>
  	<key>CFBundleName</key>
  	<string>OpenAFS</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.5.5</string>
  	<key>IFMajorVersion</key>
  	<integer>1</integer>
  	<key>IFMinorVersion</key>
--- 3,15 ----
  <plist version="1.0">
  <dict>
  	<key>CFBundleGetInfoString</key>
! 	<string>OpenAFS 1.5.6</string>
  	<key>CFBundleIdentifier</key>
  	<string>org.openafs.OpenAFS.pkg</string>
  	<key>CFBundleName</key>
  	<string>OpenAFS</string>
  	<key>CFBundleShortVersionString</key>
! 	<string>1.5.6</string>
  	<key>IFMajorVersion</key>
  	<integer>1</integer>
  	<key>IFMinorVersion</key>
Index: openafs/src/packaging/MacOS/OpenAFS.info
diff -c openafs/src/packaging/MacOS/OpenAFS.info:1.1.12.3 openafs/src/packaging/MacOS/OpenAFS.info:1.1.12.4
*** openafs/src/packaging/MacOS/OpenAFS.info:1.1.12.3	Mon Jul 31 18:04:29 2006
--- openafs/src/packaging/MacOS/OpenAFS.info	Thu Aug 10 13:00:34 2006
***************
*** 1,5 ****
  Title OpenAFS
! Version 1.5.5
  Description The OpenAFS distributed filesystem. This package installs an almost-ready-to-run client for OpenAFS. see http://www.openafs.org for more information.
  DefaultLocation /
  Diskname (null)
--- 1,5 ----
  Title OpenAFS
! Version 1.5.6
  Description The OpenAFS distributed filesystem. This package installs an almost-ready-to-run client for OpenAFS. see http://www.openafs.org for more information.
  DefaultLocation /
  Diskname (null)
Index: openafs/src/packaging/MacOS/buildpkg.sh
diff -c openafs/src/packaging/MacOS/buildpkg.sh:1.13.2.4 openafs/src/packaging/MacOS/buildpkg.sh:1.13.2.5
*** openafs/src/packaging/MacOS/buildpkg.sh:1.13.2.4	Wed Aug  2 00:02:55 2006
--- openafs/src/packaging/MacOS/buildpkg.sh	Thu Aug 10 13:09:02 2006
***************
*** 136,149 ****
      mkdir -p $PKGROOT/usr/bin $PKGROOT/usr/sbin
  
      BINLIST="fs klog klog.krb pagsh pagsh.krb pts sys tokens tokens.krb unlog unlog.krb aklog"
  
  # Should these be linked into /usr too?
      OTHER_BINLIST="bos cmdebug rxgen translate_et udebug xstat_cm_test xstat_fs_test"
!     OTHER_ETCLIST="vos rxdebug"
  
      for f in $BINLIST; do
         ln -s ../../Library/OpenAFS/Tools/bin/$f $PKGROOT/usr/bin/$f
      done
      ln -s ../../Library/OpenAFS/Tools/bin/kpasswd $PKGROOT/usr/bin/kpasswd.afs
  
      ln -s ../../Library/OpenAFS/Tools/root.client/usr/vice/etc/afsd $PKGROOT/usr/sbin/afsd
--- 136,154 ----
      mkdir -p $PKGROOT/usr/bin $PKGROOT/usr/sbin
  
      BINLIST="fs klog klog.krb pagsh pagsh.krb pts sys tokens tokens.krb unlog unlog.krb aklog"
+     ETCLIST="vos"
  
  # Should these be linked into /usr too?
      OTHER_BINLIST="bos cmdebug rxgen translate_et udebug xstat_cm_test xstat_fs_test"
!     OTHER_ETCLIST="rxdebug"
  
      for f in $BINLIST; do
         ln -s ../../Library/OpenAFS/Tools/bin/$f $PKGROOT/usr/bin/$f
      done
+     for f in $ETCLIST; do
+        ln -s ../../Library/OpenAFS/Tools/etc/$f $PKGROOT/usr/sbin/$f
+     done
+ 
      ln -s ../../Library/OpenAFS/Tools/bin/kpasswd $PKGROOT/usr/bin/kpasswd.afs
  
      ln -s ../../Library/OpenAFS/Tools/root.client/usr/vice/etc/afsd $PKGROOT/usr/sbin/afsd
