misc-windows-20040731
authorJeffrey Altman <jaltman@mit.edu>
Sun, 1 Aug 2004 01:16:37 +0000 (01:16 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Sun, 1 Aug 2004 01:16:37 +0000 (01:16 +0000)
Move most log entries to the osi trace log from the afsd_init.log

Add log entries to help diagnose the lost callback problem

Fix a variety of type errors in header files and casts

More fixes for cm_Analyze.  Do not allow a retry to be performed
if the timeLeft on the call has expired.  Forcing a retry resets the
timeout period causing the call to never expire.  The side effect is
that the SMB sessions never close.  When the Windows SMB client times
out it will create a new session at a rate of one per 66 seconds.  This
causes the SMB session limit to be exceeded and we panic.

Modify the SMB Session limit to be four less then the number of SMB
NCBs.  This is because the server itself uses 4 NCBs which are not associated
with sessions.

src/WINNT/afsd/cm_callback.c
src/WINNT/afsd/cm_cell.h
src/WINNT/afsd/cm_conn.c
src/WINNT/afsd/cm_conn.h
src/WINNT/afsd/cm_freelance.h
src/WINNT/afsd/cm_scache.h
src/WINNT/afsd/smb.c
src/WINNT/afsd/smb3.c

index b9bcaef..0f9b5eb 100644 (file)
@@ -73,6 +73,10 @@ void cm_RecordRacingRevoke(cm_fid_t *fidp, long cancelFlags)
        cm_racingRevokes_t *rp;
 
        lock_ObtainWrite(&cm_callbackLock);
+
+    osi_Log3(afsd_logp, "RecordRacingRevoke Volume %d Flags %lX activeCalls %d",
+             fidp->volume, cancelFlags, cm_activeCallbackGrantingCalls);
+
        if (cm_activeCallbackGrantingCalls > 0) {
                rp = malloc(sizeof(*rp));
                memset(rp, 0, sizeof(*rp));
@@ -89,6 +93,9 @@ void cm_RecordRacingRevoke(cm_fid_t *fidp, long cancelFlags)
  */
 void cm_CallbackNotifyChange(cm_scache_t *scp)
 {
+    osi_Log2(afsd_logp, "CallbackNotifyChange FileType %d Flags %lX",
+              scp->fileType, scp->flags);
+
        if (scp->fileType == CM_SCACHETYPE_DIRECTORY) {
                if (scp->flags & CM_SCACHEFLAG_ANYWATCH)
                        smb_NotifyChange(0,
@@ -134,7 +141,7 @@ void cm_RevokeCallback(struct rx_call *callp, AFSFid *fidp)
         tfid.unique = fidp->Unique;
         hash = CM_SCACHE_HASH(&tfid);
 
-       osi_Log3(afsd_logp, "Revoke callback vol %d vn %d un %d",
+    osi_Log3(afsd_logp, "RevokeCallback vol %d vn %d un %d",
                 fidp->Volume, fidp->Vnode, fidp->Unique);
         
        /* do this first, so that if we're executing a callback granting call
@@ -154,7 +161,7 @@ void cm_RevokeCallback(struct rx_call *callp, AFSFid *fidp)
                         scp->fid.unique == tfid.unique) {
                        scp->refCount++;
                        lock_ReleaseWrite(&cm_scacheLock);
-                       osi_Log1(afsd_logp, "Revoke scp %x", scp);
+            osi_Log1(afsd_logp, "Discarding SCache scp %x", scp);
                         lock_ObtainMutex(&scp->mx);
                        cm_DiscardSCache(scp);
                         lock_ReleaseMutex(&scp->mx);
@@ -177,6 +184,8 @@ void cm_RevokeVolumeCallback(struct rx_call *callp, AFSFid *fidp)
         cm_scache_t *scp;
         cm_fid_t tfid;
 
+    osi_Log1(afsd_logp, "RevokeVolumeCallback %d", fidp->Volume);
+
        /* do this first, so that if we're executing a callback granting call
          * at this moment, we kill it before it can be merged in.  Otherwise,
          * it could complete while we're doing the scan below, and get missed
@@ -186,7 +195,6 @@ void cm_RevokeVolumeCallback(struct rx_call *callp, AFSFid *fidp)
         tfid.volume = fidp->Volume;
         cm_RecordRacingRevoke(&tfid, CM_RACINGFLAG_CANCELVOL);
 
-       osi_Log1(afsd_logp, "Revoke Volume %d", fidp->Volume);
 
         lock_ObtainWrite(&cm_scacheLock);
        for(hash = 0; hash < cm_hashTableSize; hash++) {
@@ -195,6 +203,7 @@ void cm_RevokeVolumeCallback(struct rx_call *callp, AFSFid *fidp)
                                scp->refCount++;
                                lock_ReleaseWrite(&cm_scacheLock);
                                lock_ObtainMutex(&scp->mx);
+                osi_Log1(afsd_logp, "Discarding SCache scp %x", scp);
                                cm_DiscardSCache(scp);
                                lock_ReleaseMutex(&scp->mx);
                                cm_CallbackNotifyChange(scp);
@@ -215,13 +224,17 @@ SRXAFSCB_CallBack(struct rx_call *callp, AFSCBFids *fidsArrayp, AFSCBs *cbsArray
         int i;
         AFSFid *tfidp;
         
+    osi_Log0(afsd_logp, "SRXAFSCB_CallBack");
+
         for(i=0; i < (long) fidsArrayp->AFSCBFids_len; i++) {
                tfidp = &fidsArrayp->AFSCBFids_val[i];
                 
-                if (tfidp->Volume == 0) continue;      /* means don't do anything */
+        if (tfidp->Volume == 0)
+            continue;   /* means don't do anything */
                 else if (tfidp->Vnode == 0)
                        cm_RevokeVolumeCallback(callp, tfidp);
-               else cm_RevokeCallback(callp, tfidp);
+        else
+            cm_RevokeCallback(callp, tfidp);
         }
 
        return 0;
@@ -239,6 +252,8 @@ SRXAFSCB_InitCallBackState(struct rx_call *callp)
     int hash;
     int discarded;
 
+    osi_Log0(afsd_logp, "SRXAFSCB_InitCallBackState");
+
     if ((rx_ConnectionOf(callp)) && (rx_PeerOf(rx_ConnectionOf(callp)))) {
        taddr.sin_family = AF_INET;
        taddr.sin_addr.s_addr = rx_HostOf(rx_PeerOf(rx_ConnectionOf(callp)));
@@ -281,6 +296,7 @@ SRXAFSCB_InitCallBackState(struct rx_call *callp)
                        if (scp->cbServerp != NULL) {
                                /* we have a callback, now decide if we should clear it */
                                if (scp->cbServerp == tsp || tsp == NULL) {
+                        osi_Log1(afsd_logp, "Discarding SCache scp %x", scp);
                                        cm_DiscardSCache(scp);
                                        discarded = 1;
                                }
@@ -305,6 +321,7 @@ SRXAFSCB_InitCallBackState(struct rx_call *callp)
 /* just returns if we're up */
 SRXAFSCB_Probe(struct rx_call *callp)
 {
+    osi_Log0(afsd_logp, "SRXAFSCB_Probe - not implemented");
        return 0;
 }
 
@@ -312,6 +329,7 @@ SRXAFSCB_Probe(struct rx_call *callp)
 SRXAFSCB_GetCE64(struct rx_call *callp, long index, AFSDBCacheEntry *cep)
 {
     /* XXXX */
+    osi_Log0(afsd_logp, "SRXAFSCB_GetCE64 - not implemented");
     return RXGEN_OPCODE;
 }
 
@@ -319,6 +337,7 @@ SRXAFSCB_GetCE64(struct rx_call *callp, long index, AFSDBCacheEntry *cep)
 SRXAFSCB_GetLock(struct rx_call *callp, long index, AFSDBLock *lockp)
 {
        /* XXXX */
+    osi_Log0(afsd_logp, "SRXAFSCB_GetLock - not implemented");
        return RXGEN_OPCODE;
 }
 
@@ -326,6 +345,7 @@ SRXAFSCB_GetLock(struct rx_call *callp, long index, AFSDBLock *lockp)
 SRXAFSCB_GetCE(struct rx_call *callp, long index, AFSDBCacheEntry *cep)
 {
        /* XXXX */
+    osi_Log0(afsd_logp, "SRXAFSCB_GetCE - not implemented");
        return RXGEN_OPCODE;
 }
 
@@ -333,6 +353,7 @@ SRXAFSCB_GetCE(struct rx_call *callp, long index, AFSDBCacheEntry *cep)
 SRXAFSCB_XStatsVersion(struct rx_call *callp, long *vp)
 {
        /* XXXX */
+    osi_Log0(afsd_logp, "SRXAFSCB_XStatsVersion - not implemented");
        *vp = -1;
        return RXGEN_OPCODE;
 }
@@ -342,6 +363,7 @@ SRXAFSCB_GetXStats(struct rx_call *callp, long cvn, long coln, long *srvp, long
        AFSCB_CollData *datap)
 {
        /* XXXX */
+    osi_Log0(afsd_logp, "SRXAFSCB_GetXStats - not implemented");
        return RXGEN_OPCODE;
 }
 
@@ -349,6 +371,7 @@ SRXAFSCB_GetXStats(struct rx_call *callp, long cvn, long coln, long *srvp, long
 SRXAFSCB_InitCallBackState2(struct rx_call *callp, struct interfaceAddr* addr)
 {
        /* XXXX */
+    osi_Log0(afsd_logp, "SRXAFSCB_InitCallBackState2 - not implemented");
        return RXGEN_OPCODE;
 }
 
@@ -356,6 +379,7 @@ SRXAFSCB_InitCallBackState2(struct rx_call *callp, struct interfaceAddr* addr)
 SRXAFSCB_WhoAreYou(struct rx_call *callp, struct interfaceAddr* addr)
 {
        /* XXXX */
+    osi_Log0(afsd_logp, "SRXAFSCB_WhoAreYou - not implemented");
        return RXGEN_OPCODE;
 }
 
@@ -363,6 +387,7 @@ SRXAFSCB_WhoAreYou(struct rx_call *callp, struct interfaceAddr* addr)
 SRXAFSCB_InitCallBackState3(struct rx_call *callp, afsUUID* serverUuid)
 {
        /* XXXX */
+    osi_Log0(afsd_logp, "SRXAFSCB_InitCallBackState3 - not implemented");
        return RXGEN_OPCODE;
 }
 
@@ -370,6 +395,7 @@ SRXAFSCB_InitCallBackState3(struct rx_call *callp, afsUUID* serverUuid)
 SRXAFSCB_ProbeUuid(struct rx_call *callp, afsUUID* clientUuid)
 {
        /* XXXX */
+    osi_Log0(afsd_logp, "SRXAFSCB_ProbeUuid - not implemented");
        return RXGEN_OPCODE;
 }
 
@@ -401,6 +427,8 @@ int SRXAFSCB_GetServerPrefs(
     afs_int32 *a_srvr_addr,
     afs_int32 *a_srvr_rank)
 {
+    osi_Log0(afsd_logp, "SRXAFSCB_GetServerPrefs - not implemented");
+
     *a_srvr_addr = 0xffffffff;
     *a_srvr_rank = 0xffffffff;
     return 0;
@@ -436,6 +464,8 @@ int SRXAFSCB_GetCellServDB(
 {
     char *t_name;
 
+    osi_Log0(afsd_logp, "SRXAFSCB_GetCellServDB - not implemented");
+
     t_name = (char *)malloc(AFSNAMEMAX);
     t_name[0] = '\0';
     *a_name = t_name;
@@ -469,6 +499,8 @@ int SRXAFSCB_GetLocalCell(
 {
     char *t_name;
 
+    osi_Log0(afsd_logp, "SRXAFSCB_GetLocalCell");
+
     if (cm_rootCellp) {
        t_name = (char *)malloc(strlen(cm_rootCellp->namep)+1);
         strcpy(t_name, cm_rootCellp->namep);
@@ -554,6 +586,8 @@ cacheConfig *config;
     size_t allocsize;
     extern cm_initparams_v1 cm_initParams;
 
+    osi_Log0(afsd_logp, "SRXAFSCB_GetCacheConfig - version 1 only");
+
     /*
      * Currently only support version 1
      */
@@ -703,8 +737,7 @@ void cm_EndCallbackGrantingCall(cm_scache_t *scp, cm_callbackRequest_t *cbrp,
                  */
                 if (scp && cbrp->callbackCount != cm_callbackCount
                                && revp->callbackCount > cbrp->callbackCount
-                               && (
-                               (scp->fid.volume == revp->fid.volume &&
+             && (( scp->fid.volume == revp->fid.volume &&
                                  scp->fid.vnode == revp->fid.vnode &&
                                  scp->fid.unique == revp->fid.unique)
                             ||
@@ -753,6 +786,8 @@ long cm_GetCallback(cm_scache_t *scp, struct cm_user *userp,
     long sflags;
     cm_fid_t sfid;
 
+    osi_Log2(afsd_logp, "GetCallback scp %x flags %lX", scp, flags);
+
 #ifdef AFS_FREELANCE_CLIENT
        // yj
        // The case where a callback is needed on /afs is handled
@@ -783,7 +818,7 @@ long cm_GetCallback(cm_scache_t *scp, struct cm_user *userp,
                return 0;
        }
 
-       if (scp->fid.cell==0x1 && scp->fid.volume==AFS_FAKE_ROOT_VOL_ID) {
+        if (scp->fid.cell==AFS_FAKE_ROOT_CELL_ID && scp->fid.volume==AFS_FAKE_ROOT_VOL_ID) {
                osi_Log0(afsd_logp,"cm_getcallback should NEVER EVER get here... ");
        }
        // yj: end of getcallback modifications  ---------------
@@ -840,6 +875,8 @@ void cm_CheckCBExpiration(void)
         cm_scache_t *scp;
         long now;
         
+    osi_Log0(afsd_logp, "CheckCBExpiration");
+
        now = osi_Time();
        lock_ObtainWrite(&cm_scacheLock);
         for(i=0; i<cm_hashTableSize; i++) {
@@ -848,6 +885,7 @@ void cm_CheckCBExpiration(void)
                        lock_ReleaseWrite(&cm_scacheLock);
                        lock_ObtainMutex(&scp->mx);
                        if (scp->cbServerp && now > scp->cbExpires) {
+                osi_Log1(afsd_logp, "Discarding SCache scp %x", scp);
                                cm_DiscardSCache(scp);
                         }
                        lock_ReleaseMutex(&scp->mx);
@@ -863,6 +901,7 @@ int SRXAFSCB_GetCellByNum(struct rx_call *a_call, afs_int32 a_cellnum,
                          char **a_name, serverList *a_hosts)
 {
     /* XXXX */
+    osi_Log0(afsd_logp, "SRXAFSCB_GetCellByNum - not implemented");
     return RXGEN_OPCODE;
 }
 
@@ -871,5 +910,6 @@ int SRXAFSCB_TellMeAboutYourself(struct rx_call *a_call, afs_int32 a_cellnum,
                           char **a_name, serverList *a_hosts)
 {
     /* XXXX */
+    osi_Log0(afsd_logp, "SRXAFSCB_TellMeAboutYourself - not implemented");
     return RXGEN_OPCODE;
 }
index e462a7f..f681966 100644 (file)
@@ -17,7 +17,7 @@ typedef struct cm_cell {
        long cellID;                    /* cell ID */
        struct cm_cell *nextp;          /* locked by cm_cellLock */
         char *namep;                   /* cell name; never changes */
-        struct cm_serverRef *vlServersp;       /* locked by cm_serverLock */
+        cm_serverRef_t *vlServersp;     /* locked by cm_serverLock */
         osi_mutex_t mx;                        /* mutex locking fields (flags) */
         long flags;                    /* locked by mx */
         long timeout;                   /* if dns, time at which the server addrs expire */
index ae68422..fdb285e 100644 (file)
@@ -150,6 +150,7 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp,
     int retry = 0;
     int free_svr_list = 0;
        int dead_session;
+    long timeUsed, timeLeft;
         
        osi_Log2(afsd_logp, "cm_Analyze connp 0x%x, code %d",
                 (long) connp, errorCode);
@@ -169,10 +170,8 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp,
                goto out;
 
        /* if timeout - check that it did not exceed the SMB timeout
-          and retry */
-       if (errorCode == CM_ERROR_TIMEDOUT)
-    {
-           long timeUsed, timeLeft;
+     * and retry */
+    
            /* timeleft - get if from reqp the same way as cmXonnByMServers does */
 #ifndef DJGPP
            timeUsed = (GetCurrentTime() - reqp->startTime) / 1000;
@@ -183,16 +182,15 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp,
            
            /* leave 5 seconds margin for sleep */
            timeLeft = RDRtimeout - timeUsed;
-           if (timeLeft > 5)
-        {
+
+    if (errorCode == CM_ERROR_TIMEDOUT && timeLeft > 5 ) {
             thrd_Sleep(3000);
             cm_CheckServers(CM_FLAG_CHECKDOWNSERVERS, NULL);
             retry = 1;
         } 
-    }
 
     /* if all servers are offline, mark them non-busy and start over */
-       if (errorCode == CM_ERROR_ALLOFFLINE) {
+    if (errorCode == CM_ERROR_ALLOFFLINE && timeLeft > 7) {
            osi_Log0(afsd_logp, "cm_Analyze passed CM_ERROR_ALLOFFLINE.");
            thrd_Sleep(5000);
            /* cm_ForceUpdateVolume marks all servers as non_busy */
@@ -222,7 +220,8 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp,
        }
 
        /* if all servers are busy, mark them non-busy and start over */
-       if (errorCode == CM_ERROR_ALLBUSY) {
+    if (errorCode == CM_ERROR_ALLBUSY && timeLeft > 7) {
+        thrd_Sleep(5000);
         if (!serversp) {
             cm_GetServerList(fidp, userp, reqp, &serversp);
             free_svr_list = 1;
@@ -235,7 +234,6 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp,
         lock_ReleaseWrite(&cm_serverLock);
         if (free_svr_list)
             cm_FreeServerList(&serversp);
-               thrd_Sleep(5000);
                retry = 1;
        }
 
@@ -297,6 +295,7 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp,
                }
         if (free_svr_list)
             cm_FreeServerList(&serversp);
+        if ( timeLeft > 2 )
                retry = 1;
        }
 
@@ -327,6 +326,7 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp,
                lock_ObtainMutex(&serverp->mx);
         serverp->flags |= CM_SERVERFLAG_DOWN;
                lock_ReleaseMutex(&serverp->mx);
+            if ( timeLeft > 2 )
         retry = 1;
     }
 
@@ -340,6 +340,7 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp,
                ucellp->flags &= ~CM_UCELLFLAG_RXKAD;
                ucellp->gen++;
                lock_ReleaseMutex(&userp->mx);
+            if ( timeLeft > 2 )
                retry = 1;
        }
 
@@ -405,10 +406,8 @@ long cm_ConnByMServers(cm_serverRef_t *serversp, cm_user_t *usersp,
                         hardTimeLeft = HardDeadtimeout;
 
                     lock_ObtainMutex(&(*connpp)->mx);
-                    rx_SetConnDeadTime((*connpp)->callp,
-                                        timeLeft);
-                    rx_SetConnHardDeadTime((*connpp)->callp, 
-                                            (u_short) hardTimeLeft);
+                    rx_SetConnDeadTime((*connpp)->callp, timeLeft);
+                    rx_SetConnHardDeadTime((*connpp)->callp, (u_short) hardTimeLeft);
                     lock_ReleaseMutex(&(*connpp)->mx);
 
                     return 0;
@@ -432,6 +431,7 @@ long cm_ConnByMServers(cm_serverRef_t *serversp, cm_user_t *usersp,
                else
                        firstError = CM_ERROR_TIMEDOUT;
        }
+
        osi_Log1(afsd_logp, "cm_ConnByMServers returning %x", firstError);
     return firstError;
 }
index 9404be8..6f2f2e3 100644 (file)
@@ -91,7 +91,7 @@ extern void cm_InitReq(cm_req_t *reqp);
 extern int cm_Analyze(cm_conn_t *connp, struct cm_user *up, struct cm_req *reqp,
        struct cm_fid *fidp,
        struct AFSVolSync *volInfop,
-    struct cm_serverRef_t * serversp,
+        cm_serverRef_t * serversp,
        struct cm_callbackRequest *cbrp, long code);
 
 extern long cm_ConnByMServers(struct cm_serverRef *, struct cm_user *,
index 2554d40..ddef113 100644 (file)
@@ -16,6 +16,8 @@ extern cm_localMountPoint_t* cm_getLocalMountPoint(int vnode);
 extern void cm_InitFreelance();
 extern long cm_FreelanceRemoveMount(char *toremove);
 extern long cm_FreelanceAddMount(char *filename, char *cellname, char *volume, int rw, cm_fid_t *fidp);
+extern int cm_clearLocalMountPointChange();
+
 
 #define AFS_FREELANCE_INI "afs_freelance.ini"
 #define AFS_FAKE_ROOT_CELL_ID 0xFFFFFFFF
index aec2f97..d259dc1 100644 (file)
@@ -136,10 +136,10 @@ typedef struct cm_scache {
 #define CM_SCACHETYPE_MOUNTPOINT       4       /* a mount point */
 
 /* flag bits */
-#define CM_SCACHEFLAG_STATD            1       /* status info is valid */
-#define CM_SCACHEFLAG_DELETED          2       /* file has been deleted */
-#define CM_SCACHEFLAG_CALLBACK         4       /* have a valid callback */
-#define CM_SCACHEFLAG_STORING          8       /* status being stored back */
+#define CM_SCACHEFLAG_STATD                 0x01        /* status info is valid */
+#define CM_SCACHEFLAG_DELETED           0x02    /* file has been deleted */
+#define CM_SCACHEFLAG_CALLBACK          0x04    /* have a valid callback */
+#define CM_SCACHEFLAG_STORING           0x08    /* status being stored back */
 #define CM_SCACHEFLAG_FETCHING         0x10    /* status being fetched */
 #define CM_SCACHEFLAG_SIZESTORING      0x20    /* status being stored that
                                                 * changes the data; typically,
@@ -171,10 +171,10 @@ typedef struct cm_scache {
  * These flags correspond to individual RPCs that we may be making, and at most
  * one can be set in any one call to SyncOp.
  */
-#define CM_SCACHESYNC_FETCHSTATUS      1       /* fetching status info */
-#define CM_SCACHESYNC_STORESTATUS      2       /* storing status info */
-#define CM_SCACHESYNC_FETCHDATA                4       /* fetch data */
-#define CM_SCACHESYNC_STOREDATA                8       /* store data */
+#define CM_SCACHESYNC_FETCHSTATUS           0x01        /* fetching status info */
+#define CM_SCACHESYNC_STORESTATUS           0x02        /* storing status info */
+#define CM_SCACHESYNC_FETCHDATA             0x04        /* fetch data */
+#define CM_SCACHESYNC_STOREDATA             0x08        /* store data */
 #define CM_SCACHESYNC_STORESIZE                0x10    /* store new file size */
 #define CM_SCACHESYNC_GETCALLBACK      0x20    /* fetching a callback */
 #define CM_SCACHESYNC_STOREDATA_EXCL   0x40    /* store data */
index 0809864..98404e9 100644 (file)
@@ -98,7 +98,7 @@ DWORD NCBsessions[NCBmax];
 NCB *NCBs[NCBmax];
 struct smb_packet *bufs[NCBmax];
 
-#define Sessionmax MAXIMUM_WAIT_OBJECTS
+#define Sessionmax MAXIMUM_WAIT_OBJECTS - 4
 EVENT_HANDLE SessionEvents[Sessionmax];
 unsigned short LSNs[Sessionmax];
 int lanas[Sessionmax];
@@ -896,7 +896,9 @@ smb_user_t *smb_FindUID(smb_vc_t *vcp, unsigned short uid, int flags)
        for(uidp = vcp->usersp; uidp; uidp = uidp->nextp) {
                if (uid == uidp->userID) {
                        uidp->refCount++;
-                       osi_LogEvent("AFS smb_FindUID (Find by UID)",NULL," VCP[%x] found-uid[%d] name[%s]",(int)vcp,uidp->userID,(uidp->unp) ? uidp->unp->name : "");
+                        osi_LogEvent("AFS smb_FindUID (Find by UID)",NULL," VCP[%x] found-uid[%d] name[%s]",
+                                      (int)vcp, uidp->userID, 
+                                      osi_LogSaveString(smb_logp, (uidp->unp) ? uidp->unp->name : ""));
                break;
                }
        }
@@ -1101,7 +1103,7 @@ retry:
         sprintf(eventName,"fid_t event vcp=%d fid=%d", vcp->vcID, fid);
         event = thrd_CreateEvent(NULL, FALSE, TRUE, eventName);
         if ( GetLastError() == ERROR_ALREADY_EXISTS ) {
-            afsi_log("Event Object Already Exists: %s", eventName);
+            osi_Log1(smb_logp, "Event Object Already Exists: %s", osi_LogSaveString(smb_logp, eventName));
             thrd_CloseHandle(event);
             fid++;
             if (fid == 0)
@@ -1736,12 +1738,12 @@ static smb_packet_t *GetPacket(void)
             signed int retval =
                 __dpmi_allocate_dos_memory(npar, &tb_sel); /* DOS segment */
             if (retval == -1) {
-                afsi_log("Cannot allocate %d paragraphs of DOS memory",
+                osi_Log1(smb_logp, "Cannot allocate %d paragraphs of DOS memory",
                           npar);
                 osi_panic("",__FILE__,__LINE__);
             }
             else {
-                afsi_log("Allocated %d paragraphs of DOS mem at 0x%X",
+                osi_Log2(smb_logp, "Allocated %d paragraphs of DOS mem at 0x%X",
                           npar, retval);
                 seg = retval;
             }
@@ -1787,11 +1789,11 @@ static NCB *GetNCB(void)
             signed int retval =
                 __dpmi_allocate_dos_memory(npar, &tb_sel); /* DOS segment */
             if (retval == -1) {
-                afsi_log("Cannot allocate %d paragraphs of DOS mem in GetNCB",
+                osi_Log1(smb_logp, "Cannot allocate %d paragraphs of DOS mem in GetNCB",
                           npar);
                 osi_panic("",__FILE__,__LINE__);
             } else {
-                afsi_log("Allocated %d paragraphs of DOS mem at 0x%X in GetNCB",
+                osi_Log2(smb_logp, "Allocated %d paragraphs of DOS mem at 0x%X in GetNCB",
                           npar, retval);
                 seg = retval;
             }
@@ -1904,7 +1906,7 @@ unsigned int smb_GetSMBParm(smb_packet_t *smbp, int parm)
 
                sprintf(s, "Bad SMB param %d out of %d, ncb len %d",
                                parm, parmCount, smbp->ncb_length);
-               osi_Log0(smb_logp, s);
+                osi_Log0(smb_logp, osi_LogSaveString(smb_logp, s));
 #endif /* !DJGPP */
                osi_panic(s, __FILE__, __LINE__);
        }
@@ -1939,7 +1941,7 @@ unsigned int smb_GetSMBOffsetParm(smb_packet_t *smbp, int parm, int offset)
                sprintf(s, "Bad SMB param %d offset %d out of %d, "
                                "ncb len %d",
                                 parm, offset, parmCount, smbp->ncb_length);
-               osi_Log0(smb_logp, s);
+                osi_Log0(smb_logp, osi_LogSaveString(smb_logp, s));
 #endif /* !DJGPP */
 
                osi_panic(s, __FILE__, __LINE__);
@@ -3596,7 +3598,7 @@ long smb_ReceiveCoreSearchDir(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *ou
                                fid.unique = ntohl(dep->fid.unique);
                                fileType = cm_FindFileType(&fid);
                                osi_Log2(smb_logp, "smb_ReceiveCoreSearchDir: file %s "
-                                                 "has filetype %d", dep->name,
+                                                  "has filetype %d", osi_LogSaveString(smb_logp, dep->name),
                                                  fileType);
                                if (fileType == CM_SCACHETYPE_DIRECTORY)
                                        goto nextEntry;
@@ -4467,7 +4469,7 @@ long smb_ReceiveCoreRename(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp)
     /* Check if the file already exists; if so return error */
        code = cm_Lookup(newDscp,newLastNamep,CM_FLAG_CHECKPATH,userp,&req,&tmpscp);
        if ((code != CM_ERROR_NOSUCHFILE) && (code != CM_ERROR_NOSUCHPATH) && (code != CM_ERROR_NOSUCHVOLUME) ) {
-        osi_Log2(afsd_logp, "  lookup returns %ld for [%s]", code,
+        osi_Log2(smb_logp, "  lookup returns %ld for [%s]", code,
                  osi_LogSaveString(afsd_logp, newLastNamep));
  
         /* Check if the old and the new names differ only in case. If so return
@@ -4489,7 +4491,7 @@ long smb_ReceiveCoreRename(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *outp)
             }
         } else {
             /* file exist, do not rename, also fixes move */
-            osi_Log0(afsd_logp, "Can't rename.  Target already exists");
+            osi_Log0(smb_logp, "Can't rename.  Target already exists");
             code = CM_ERROR_EXISTS;
         }
 
@@ -6241,23 +6243,23 @@ void smb_ClientWaiter(void *parmp)
         if (code >= WAIT_ABANDONED_0 && code < (WAIT_ABANDONED_0 + numNCBs))
         {
             int abandonIdx = code - WAIT_ABANDONED_0;
-            afsi_log("Error: smb_ClientWaiter event %d abandoned, errno %d\n", abandonIdx, GetLastError());
+            osi_Log2(smb_logp, "Error: smb_ClientWaiter event %d abandoned, errno %d\n", abandonIdx, GetLastError());
         }
 
         if (code == WAIT_IO_COMPLETION)
         {
-            afsi_log("Error: smb_ClientWaiter WAIT_IO_COMPLETION\n");
+            osi_Log0(smb_logp, "Error: smb_ClientWaiter WAIT_IO_COMPLETION\n");
             continue;
         }
         
         if (code == WAIT_TIMEOUT)
         {
-            afsi_log("Error: smb_ClientWaiter WAIT_TIMEOUT, errno %d\n", GetLastError());
+            osi_Log1(smb_logp, "Error: smb_ClientWaiter WAIT_TIMEOUT, errno %d\n", GetLastError());
         }
 
         if (code == WAIT_FAILED)
         {
-            afsi_log("Error: smb_ClientWaiter WAIT_FAILED, errno %d\n", GetLastError());
+            osi_Log1(smb_logp, "Error: smb_ClientWaiter WAIT_FAILED, errno %d\n", GetLastError());
         }
 
         idx = code - WAIT_OBJECT_0;
@@ -6266,7 +6268,7 @@ void smb_ClientWaiter(void *parmp)
         if (idx < 0 || idx > (sizeof(NCBevents) / sizeof(NCBevents[0])))
         {
             /* this is fatal - log as much as possible */
-            afsi_log("Fatal: NCBevents idx [ %d ] out of range.\n", idx);
+            osi_Log1(smb_logp, "Fatal: NCBevents idx [ %d ] out of range.\n", idx);
             osi_assert(0);
         }
         
@@ -6299,23 +6301,23 @@ void smb_ServerWaiter(void *parmp)
         if (code >= WAIT_ABANDONED_0 && code < (WAIT_ABANDONED_0 + numSessions))
         {
             int abandonIdx = code - WAIT_ABANDONED_0;
-            afsi_log("Error: smb_ServerWaiter (SessionEvents) event %d abandoned, errno %d\n", abandonIdx, GetLastError());
+            osi_Log2(smb_logp, "Error: smb_ServerWaiter (SessionEvents) event %d abandoned, errno %d\n", abandonIdx, GetLastError());
         }
        
         if (code == WAIT_IO_COMPLETION)
         {
-            afsi_log("Error: smb_ServerWaiter (SessionEvents) WAIT_IO_COMPLETION\n");
+            osi_Log0(smb_logp, "Error: smb_ServerWaiter (SessionEvents) WAIT_IO_COMPLETION\n");
             continue;
         }
        
         if (code == WAIT_TIMEOUT)
         {
-            afsi_log("Error: smb_ServerWaiter (SessionEvents) WAIT_TIMEOUT, errno %d\n", GetLastError());
+            osi_Log1(smb_logp, "Error: smb_ServerWaiter (SessionEvents) WAIT_TIMEOUT, errno %d\n", GetLastError());
         }
        
         if (code == WAIT_FAILED)
         {
-            afsi_log("Error: smb_ServerWaiter (SessionEvents) WAIT_FAILED, errno %d\n", GetLastError());
+            osi_Log1(smb_logp, "Error: smb_ServerWaiter (SessionEvents) WAIT_FAILED, errno %d\n", GetLastError());
         }
        
         idx_session = code - WAIT_OBJECT_0;
@@ -6324,7 +6326,7 @@ void smb_ServerWaiter(void *parmp)
         if (idx_session < 0 || idx_session > (sizeof(SessionEvents) / sizeof(SessionEvents[0])))
         {
             /* this is fatal - log as much as possible */
-            afsi_log("Fatal: session idx [ %d ] out of range.\n", idx_session);
+            osi_Log1(smb_logp, "Fatal: session idx [ %d ] out of range.\n", idx_session);
             osi_assert(0);
         }
 
@@ -6339,23 +6341,23 @@ void smb_ServerWaiter(void *parmp)
         if (code >= WAIT_ABANDONED_0 && code < (WAIT_ABANDONED_0 + numNCBs))
         {
             int abandonIdx = code - WAIT_ABANDONED_0;
-            afsi_log("Error: smb_ClientWaiter (NCBavails) event %d abandoned, errno %d\n", abandonIdx, GetLastError());
+            osi_Log2(smb_logp, "Error: smb_ClientWaiter (NCBavails) event %d abandoned, errno %d\n", abandonIdx, GetLastError());
         }
        
         if (code == WAIT_IO_COMPLETION)
         {
-            afsi_log("Error: smb_ClientWaiter (NCBavails) WAIT_IO_COMPLETION\n");
+            osi_Log0(smb_logp, "Error: smb_ClientWaiter (NCBavails) WAIT_IO_COMPLETION\n");
             continue;
         }
        
         if (code == WAIT_TIMEOUT)
         {
-            afsi_log("Error: smb_ClientWaiter (NCBavails) WAIT_TIMEOUT, errno %d\n", GetLastError());
+            osi_Log1(smb_logp, "Error: smb_ClientWaiter (NCBavails) WAIT_TIMEOUT, errno %d\n", GetLastError());
         }
        
         if (code == WAIT_FAILED)
         {
-            afsi_log("Error: smb_ClientWaiter (NCBavails) WAIT_FAILED, errno %d\n", GetLastError());
+            osi_Log1(smb_logp, "Error: smb_ClientWaiter (NCBavails) WAIT_FAILED, errno %d\n", GetLastError());
         }
                
         idx_NCB = code - WAIT_OBJECT_0;
@@ -6364,7 +6366,7 @@ void smb_ServerWaiter(void *parmp)
         if (idx_NCB < 0 || idx_NCB > (sizeof(NCBsessions) / sizeof(NCBsessions[0])))
         {
             /* this is fatal - log as much as possible */
-            afsi_log("Fatal: idx_NCB [ %d ] out of range.\n", idx_NCB);
+            osi_Log1(smb_logp, "Fatal: idx_NCB [ %d ] out of range.\n", idx_NCB);
             osi_assert(0);
         }
 
@@ -6448,23 +6450,23 @@ void smb_Server(VOID *parmp)
         if (code >= WAIT_ABANDONED_0 && code < (WAIT_ABANDONED_0 + numNCBs))
         {
             int abandonIdx = code - WAIT_ABANDONED_0;
-            afsi_log("Error: smb_Server ( NCBreturns[%d] ) event %d abandoned, errno %d\n", myIdx, abandonIdx, GetLastError());
+            osi_Log3(smb_logp, "Error: smb_Server ( NCBreturns[%d] ) event %d abandoned, errno %d\n", myIdx, abandonIdx, GetLastError());
         }
        
         if (code == WAIT_IO_COMPLETION)
         {
-            afsi_log("Error: smb_Server ( NCBreturns[%d] ) WAIT_IO_COMPLETION\n", myIdx);
+            osi_Log1(smb_logp, "Error: smb_Server ( NCBreturns[%d] ) WAIT_IO_COMPLETION\n", myIdx);
             continue;
         }
        
         if (code == WAIT_TIMEOUT)
         {
-            afsi_log("Error: smb_Server ( NCBreturns[%d] ) WAIT_TIMEOUT, errno %d\n", myIdx, GetLastError());
+            osi_Log2(smb_logp, "Error: smb_Server ( NCBreturns[%d] ) WAIT_TIMEOUT, errno %d\n", myIdx, GetLastError());
         }
        
         if (code == WAIT_FAILED)
         {
-            afsi_log("Error: smb_Server ( NCBreturns[%d] ) WAIT_FAILED, errno %d\n", myIdx, GetLastError());
+            osi_Log2(smb_logp, "Error: smb_Server ( NCBreturns[%d] ) WAIT_FAILED, errno %d\n", myIdx, GetLastError());
         }
 
         idx_NCB = code - WAIT_OBJECT_0;
@@ -6473,7 +6475,7 @@ void smb_Server(VOID *parmp)
         if (idx_NCB < 0 || idx_NCB > (sizeof(NCBs) / sizeof(NCBs[0])))
         {
             /* this is fatal - log as much as possible */
-            afsi_log("Fatal: idx_NCB [ %d ] out of range.\n", idx_NCB);
+            osi_Log1(smb_logp, "Fatal: idx_NCB [ %d ] out of range.\n", idx_NCB);
             osi_assert(0);
         }
 
@@ -6501,7 +6503,7 @@ void smb_Server(VOID *parmp)
                                /* Client closed session */
                 if (reportSessionStartups) 
                 {
-                    afsi_log("session [ %d ] closed", idx_session);
+                    osi_Log1(smb_logp, "session [ %d ] closed", idx_session);
                 }
                                dead_sessions[idx_session] = TRUE;
                 if (vcp)
@@ -6581,7 +6583,7 @@ void smb_Server(VOID *parmp)
                                /* A weird error code.  Log it, sleep, and
                                 * continue. */
                                if (vcp && vcp->errorCount++ > 3) {
-                    afsi_log("session [ %d ] closed, vcp->errorCount = %d", idx_session, vcp->errorCount);
+                    osi_Log2(smb_logp, "session [ %d ] closed, vcp->errorCount = %d", idx_session, vcp->errorCount);
                                        dead_sessions[idx_session] = TRUE;
                 }
                                else {
@@ -6681,7 +6683,7 @@ void smb_Server(VOID *parmp)
                        if (rwc.code == 0) {
                                rwevent = thrd_CreateEvent(NULL, FALSE, FALSE, TEXT("smb_Server() rwevent"));
                 if ( GetLastError() == ERROR_ALREADY_EXISTS )
-                    afsi_log("Event Object Already Exists: %s", eventName);
+                    osi_Log1(smb_logp, "Event Object Already Exists: %s", osi_LogSaveString(smb_logp, eventName));
                                ncbp->ncb_command = NCBRECV | ASYNCH;
                                ncbp->ncb_lsn = (unsigned char) vcp->lsn;
                                ncbp->ncb_lana_num = vcp->lana;
@@ -6773,17 +6775,17 @@ void InitNCBslot(int idx)
     sprintf(eventName,"NCBavails[%d]", idx);
        NCBavails[idx] = thrd_CreateEvent(NULL, FALSE, TRUE, eventName);
     if ( GetLastError() == ERROR_ALREADY_EXISTS )
-        afsi_log("Event Object Already Exists: %s", eventName);
+        osi_Log1(smb_logp, "Event Object Already Exists: %s", osi_LogSaveString(smb_logp, eventName));
 #ifndef DJGPP
     sprintf(eventName,"NCBevents[%d]", idx);
        NCBevents[idx] = thrd_CreateEvent(NULL, TRUE, FALSE, eventName);
     if ( GetLastError() == ERROR_ALREADY_EXISTS )
-        afsi_log("Event Object Already Exists: %s", eventName);
+        osi_Log1(smb_logp, "Event Object Already Exists: %s", osi_LogSaveString(smb_logp, eventName));
 #endif /* !DJGPP */
     sprintf(eventName,"NCBReturns[0<=i<smb_NumServerThreads][%d]", idx);
        retHandle = thrd_CreateEvent(NULL, FALSE, FALSE, eventName);
     if ( GetLastError() == ERROR_ALREADY_EXISTS )
-        afsi_log("Event Object Already Exists: %s", eventName);
+        osi_Log1(smb_logp, "Event Object Already Exists: %s", osi_LogSaveString(smb_logp, eventName));
        for (i=0; i<smb_NumServerThreads; i++)
                NCBreturns[i][idx] = retHandle;
        bufp = GetPacket();
@@ -6928,8 +6930,8 @@ void smb_Listener(void *parmp)
                                "%s\n",
                 ncbp->ncb_lsn,ncbp->ncb_lana_num, rname);
 #endif
-        afsi_log("New session(ncb_lsn,ncb_lana_num) (%d,%d) starting from host %s, %d ongoing ops",
-                  ncbp->ncb_lsn,ncbp->ncb_lana_num, rname, ongoingOps);
+        osi_Log4(smb_logp, "New session(ncb_lsn,ncb_lana_num) (%d,%d) starting from host %s, %d ongoing ops",
+                  ncbp->ncb_lsn,ncbp->ncb_lana_num, osi_LogSaveString(smb_logp, rname), ongoingOps);
 
         if (reportSessionStartups) {
 #ifndef DJGPP
@@ -6944,15 +6946,15 @@ void smb_Listener(void *parmp)
                         1, 0, ptbuf, NULL);
                        DeregisterEventSource(h);
 #else /* DJGPP */
-            afsi_log("NCBLISTEN completed, call from %s",rname);
-            osi_Log1(smb_logp, "SMB session startup, %d ongoing ops",
-                     ongoingOps);
             time(&now);
             fprintf(stderr, "%s: New session %d starting from host %s\n",
                     asctime(localtime(&now)), ncbp->ncb_lsn, rname);
             fflush(stderr);
 #endif /* !DJGPP */
                }
+            osi_Log1(smb_logp, "NCBLISTEN completed, call from %s", osi_LogSaveString(smb_logp, rname));
+            osi_Log1(smb_logp, "SMB session startup, %d ongoing ops",
+                     ongoingOps);
 
         /* now ncbp->ncb_lsn is the connection ID */
         vcp = smb_FindVC(ncbp->ncb_lsn, SMB_FLAG_CREATE, ncbp->ncb_lana_num);
@@ -6964,7 +6966,7 @@ void smb_Listener(void *parmp)
         /* But don't look at session[0], it is reserved */
                for (i = 1; i < numSessions; i++) {
                        if (dead_sessions[i]) {
-                afsi_log("connecting to dead session [ %d ]", i);
+                osi_Log1(smb_logp, "connecting to dead session [ %d ]", i);
                                dead_sessions[i] = FALSE;
                                break;
                        }
@@ -6997,9 +6999,9 @@ void smb_Listener(void *parmp)
             sprintf(eventName, "SessionEvents[%d]", i);
             SessionEvents[i] = thrd_CreateEvent(NULL, FALSE, TRUE, eventName);
             if ( GetLastError() == ERROR_ALREADY_EXISTS )
-                afsi_log("Event Object Already Exists: %s", eventName);
+                osi_Log1(smb_logp, "Event Object Already Exists: %s", osi_LogSaveString(smb_logp, eventName));
                        numSessions++;
-            afsi_log("increasing numNCBs [ %d ] numSessions [ %d ]", numNCBs, numSessions);
+            osi_Log2(smb_logp, "increasing numNCBs [ %d ] numSessions [ %d ]", numNCBs, numSessions);
                        thrd_SetEvent(SessionEvents[0]);
                } else {
                        thrd_SetEvent(SessionEvents[i]);
@@ -7047,7 +7049,7 @@ void smb_NetbiosInit()
         code = Netbios(ncbp);
         if (code != 0) {
             sprintf(s, "Netbios NCBENUM error code %d", code);
-            afsi_log(s);
+            osi_Log0(smb_logp, osi_LogSaveString(smb_logp, s));
             osi_panic(s, __FILE__, __LINE__);
         }
     }
@@ -7069,11 +7071,11 @@ void smb_NetbiosInit()
             code = ncbp->ncb_retcode;
         if (code != 0) {
             sprintf(s, "Netbios NCBRESET lana %d error code %d", lana_list.lana[i], code);
-            afsi_log(s);
+            osi_Log0(smb_logp, osi_LogSaveString(smb_logp, s));
             lana_list.lana[i] = 255;  /* invalid lana */
         } else {
             sprintf(s, "Netbios NCBRESET lana %d succeeded", lana_list.lana[i]);
-            afsi_log(s);
+            osi_Log0(smb_logp, osi_LogSaveString(smb_logp, s));
         }
     }
 #else
@@ -7096,7 +7098,7 @@ void smb_NetbiosInit()
     memset(smb_sharename,' ',NCBNAMSZ);
     memcpy(smb_sharename,smb_localNamep,len);
     sprintf(s, "lana_list.length %d", lana_list.length);
-    afsi_log(s);
+    osi_Log0(smb_logp, osi_LogSaveString(smb_logp, s));
 
     /* Keep the name so we can unregister it later */
     for (l = 0; l < lana_list.length; l++) {
@@ -7111,18 +7113,18 @@ void smb_NetbiosInit()
         code = Netbios(ncbp, dos_ncb);
 #endif /* !DJGPP */
           
-        afsi_log("Netbios NCBADDNAME lana=%d code=%d retcode=%d complete=%d",
+        osi_Log3(smb_logp, "Netbios NCBADDNAME lana=%d code=%d retcode=%d complete=%d",
                  lana, code, ncbp->ncb_retcode,ncbp->ncb_cmd_cplt);
         {
             char name[NCBNAMSZ+1];
             name[NCBNAMSZ]=0;
             memcpy(name,ncbp->ncb_name,NCBNAMSZ);
-            afsi_log("Netbios NCBADDNAME added new name >%s<",name);
+            osi_Log1(smb_logp, "Netbios NCBADDNAME added new name >%s<",osi_LogSaveString(smb_logp, name));
         }
 
         if (code == 0) code = ncbp->ncb_retcode;
         if (code == 0) {
-            afsi_log("Netbios NCBADDNAME succeeded on lana %d\n", lana);
+            osi_Log1(smb_logp, "Netbios NCBADDNAME succeeded on lana %d\n", lana);
 #ifdef DJGPP
             /* we only use one LANA with djgpp */
             lana_list.lana[0] = lana;
@@ -7131,13 +7133,13 @@ void smb_NetbiosInit()
         }
         else {
             sprintf(s, "Netbios NCBADDNAME lana %d error code %d", lana, code);
-            afsi_log(s);
+            osi_Log0(smb_logp, osi_LogSaveString(smb_logp, s));
             if (code == NRC_BRIDGE) {    /* invalid LANA num */
                 lana_list.lana[l] = 255;
                 continue;
             }
             else if (code == NRC_DUPNAME) {
-                afsi_log("Name already exists; try to delete it");
+                osi_Log0(smb_logp, "Name already exists; try to delete it");
                 memset(ncbp, 0, sizeof(*ncbp));
                 ncbp->ncb_command = NCBDELNAME;
                 memcpy(ncbp->ncb_name,smb_sharename,NCBNAMSZ);
@@ -7150,7 +7152,7 @@ void smb_NetbiosInit()
                 if (code == 0) code = ncbp->ncb_retcode;
                 else {
                     sprintf(s, "Netbios NCBDELNAME lana %d error code %d\n", lana, code);
-                    afsi_log(s);
+                    osi_Log0(smb_logp, s);
                 }
                 if (code != 0 || delname_tried) {
                     lana_list.lana[l] = 255;
@@ -7165,7 +7167,7 @@ void smb_NetbiosInit()
             }
             else {
                 sprintf(s, "Netbios NCBADDNAME lana %d error code %d", lana, code);
-                afsi_log(s);
+                osi_Log0(smb_logp, osi_LogSaveString(smb_logp, s));
                 lana_list.lana[l] = 255;  /* invalid lana */
                 osi_panic(s, __FILE__, __LINE__);
             }
index 0963f75..1c0bd26 100644 (file)
@@ -122,6 +122,7 @@ void OutputDebugF(char * format, ...) {
                                + 3; // terminating '\0' + '\n'
     buffer = malloc( len * sizeof(char) );
     vsprintf( buffer, format, args );
+    osi_Log0(smb_logp, osi_LogSaveString(smb_logp, buffer));
     strcat(buffer, "\n");
     OutputDebugString(buffer);
     free( buffer );
@@ -136,12 +137,14 @@ void OutputDebugHexDump(unsigned char * buffer, int len) {
 
     for(i=0;i<len;i++) {
         if(!(i%16)) {
-            if(i)
+            if(i) {
+                osi_Log0(smb_logp, osi_LogSaveString(smb_logp, buf));
+                strcat(buf,"\n");
                 OutputDebugString(buf);
+            }
             sprintf(buf,"%5x",i);
             memset(buf+5,' ',80);
             buf[85] = 0;
-            strcat(buf,"\n");
         }
 
         j = (i%16);
@@ -155,9 +158,12 @@ void OutputDebugHexDump(unsigned char * buffer, int len) {
 
         buf[j] = (k>32 && k<127)?k:'.';
     }    
-    if(i)
+    if(i) {
+        osi_Log0(smb_logp, osi_LogSaveString(smb_logp, buf));
+        strcat(buf,"\n");
         OutputDebugString(buf);
 }   
+}
 /**/
 
 #define SMB_EXT_SEC_PACKAGE_NAME "Negotiate"
@@ -794,7 +800,7 @@ long smb_ReceiveV3SessionSetupX(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *
         unp = uidp->unp;
         userp = unp->userp;
         newUid = (unsigned short)uidp->userID;  /* For some reason these are different types!*/
-               osi_LogEvent("AFS smb_ReceiveV3SessionSetupX",NULL,"FindUserByName:Lana[%d],lsn[%d],userid[%d],name[%s]",vcp->lana,vcp->lsn,newUid,usern);
+                osi_LogEvent("AFS smb_ReceiveV3SessionSetupX",NULL,"FindUserByName:Lana[%d],lsn[%d],userid[%d],name[%s]",vcp->lana,vcp->lsn,newUid,osi_LogSaveString(smb_logp, usern));
                osi_Log3(smb_logp,"smb_ReceiveV3SessionSetupX FindUserByName:Lana[%d],lsn[%d],userid[%d]",vcp->lana,vcp->lsn,newUid);
         smb_ReleaseUID(uidp);
     }
@@ -820,7 +826,7 @@ long smb_ReceiveV3SessionSetupX(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *
         uidp = smb_FindUID(vcp, newUid, SMB_FLAG_CREATE);
         lock_ObtainMutex(&uidp->mx);
         uidp->unp = unp;
-               osi_LogEvent("AFS smb_ReceiveV3SessionSetupX",NULL,"MakeNewUser:VCP[%x],Lana[%d],lsn[%d],userid[%d],TicketKTCName[%s]",(int)vcp,vcp->lana,vcp->lsn,newUid,usern);
+                osi_LogEvent("AFS smb_ReceiveV3SessionSetupX",NULL,"MakeNewUser:VCP[%x],Lana[%d],lsn[%d],userid[%d],TicketKTCName[%s]",(int)vcp,vcp->lana,vcp->lsn,newUid,osi_LogSaveString(smb_logp, usern));
                osi_Log4(smb_logp,"smb_ReceiveV3SessionSetupX MakeNewUser:VCP[%x],Lana[%d],lsn[%d],userid[%d]",vcp,vcp->lana,vcp->lsn,newUid);
         lock_ReleaseMutex(&uidp->mx);
         smb_ReleaseUID(uidp);
@@ -1814,11 +1820,11 @@ long smb_ReceiveRAPNetServerGetInfo(smb_vc_t *vcp, smb_tran2Packet_t *p, smb_pac
        memset(outp->datap,0,totalData);
 
     if(infoLevel == 0) {
-        info0 = (smb_rap_share_info_0_t *) outp->datap;
+        info0 = (smb_rap_server_info_0_t *) outp->datap;
         cstrp = (char *) (info0 + 1);
         strcpy(info0->sv0_name, "AFS");
     } else { /* infoLevel == 1 */
-        info1 = (smb_rap_share_info_1_t *) outp->datap;
+        info1 = (smb_rap_server_info_1_t *) outp->datap;
         cstrp = (char *) (info1 + 1);
         strcpy(info1->sv1_name, "AFS");
 
@@ -1829,7 +1835,7 @@ long smb_ReceiveRAPNetServerGetInfo(smb_vc_t *vcp, smb_tran2Packet_t *p, smb_pac
 
         info1->sv1_version_major = 5;
         info1->sv1_version_minor = 1;
-        info1->sv1_comment_or_master_browser = (DWORD) (cstrp - outp->datap);
+        info1->sv1_comment_or_master_browser = (DWORD *) (cstrp - outp->datap);
 
         strcpy(cstrp, smb_ServerComment);