From 99fbb09394312995f8db3ec7777021f9bbe428a2 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Wed, 23 Jul 2008 22:26:42 +0000 Subject: [PATCH] DEVEL15-windows-cm-rename-debugging-20080723 LICENSE MIT Add some trace log statements to cm_Rename() that can be used for debugging. (cherry picked from commit 8f75470349f4e9ce4b861bac10e2816edb69f15d) --- src/WINNT/afsd/cm_vnodeops.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/WINNT/afsd/cm_vnodeops.c b/src/WINNT/afsd/cm_vnodeops.c index d6b6883c6..189c1af76 100644 --- a/src/WINNT/afsd/cm_vnodeops.c +++ b/src/WINNT/afsd/cm_vnodeops.c @@ -3270,6 +3270,11 @@ long cm_Rename(cm_scache_t *oldDscp, fschar_t *oldNamep, clientchar_t *cOldNamep fschar_t * newNamep = NULL; int free_oldNamep = FALSE; + if (cOldNamep == NULL || cNewNamep == NULL || + cm_ClientStrLen(cOldNamep) == 0 || + cm_ClientStrLen(cNewNamep) == 0) + return CM_ERROR_INVAL; + if (oldNamep == NULL) { code = -1; #ifdef USE_BPLUS @@ -3281,8 +3286,11 @@ long cm_Rename(cm_scache_t *oldDscp, fschar_t *oldNamep, clientchar_t *cOldNamep cm_EndDirOp(&oldDirOp); } #endif - if (code) + if (code) { + osi_Log2(afsd_logp, "cm_Rename oldDscp 0x%p cOldName %S Original Name lookup failed", + oldDscp, osi_LogSaveStringW(afsd_logp, cOldNamep)); goto done; + } } @@ -3294,6 +3302,8 @@ long cm_Rename(cm_scache_t *oldDscp, fschar_t *oldNamep, clientchar_t *cOldNamep if (oldDscp == newDscp) { /* check for identical names */ if (cm_ClientStrCmp(cOldNamep, cNewNamep) == 0) { + osi_Log2(afsd_logp, "cm_Rename oldDscp 0x%p newDscp 0x%p CM_ERROR_RENAME_IDENTICAL", + oldDscp, newDscp); code = CM_ERROR_RENAME_IDENTICAL; goto done; } @@ -3315,6 +3325,8 @@ long cm_Rename(cm_scache_t *oldDscp, fschar_t *oldNamep, clientchar_t *cOldNamep oneDir = 0; if (oldDscp->fid.cell != newDscp->fid.cell || oldDscp->fid.volume != newDscp->fid.volume) { + osi_Log2(afsd_logp, "cm_Rename oldDscp 0x%p newDscp 0x%p CM_ERROR_CROSSDEVLINK", + oldDscp, newDscp); code = CM_ERROR_CROSSDEVLINK; goto done; } @@ -3324,6 +3336,8 @@ long cm_Rename(cm_scache_t *oldDscp, fschar_t *oldNamep, clientchar_t *cOldNamep * stale info. Avoid deadlocks and quit now. */ if (oldDscp->fid.vnode == newDscp->fid.vnode) { + osi_Log2(afsd_logp, "cm_Rename oldDscp 0x%p newDscp 0x%p vnode collision", + oldDscp, newDscp); code = CM_ERROR_CROSSDEVLINK; goto done; } -- 2.39.5