From: Jeffrey Altman Date: Thu, 29 Dec 2011 23:31:11 +0000 (-0500) Subject: Windows: STATUS_OBJECT_PATH_INVALID == invalid parent directory X-Git-Tag: openafs-stable-1_8_0pre1~2874 X-Git-Url: https://git.openafs.org/?p=openafs.git;a=commitdiff_plain;h=9115c437c4113a554f3c3b97c4eaeafea6949600 Windows: STATUS_OBJECT_PATH_INVALID == invalid parent directory Modify evaluation of nodes by name and id to consistently return STATUS_OBJECT_PATH_INVALID if the parent FID no longer exists. Change-Id: I94f56e5b525a35279152f6f7848654a56bbfa235 Reviewed-on: http://gerrit.openafs.org/6446 Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- diff --git a/src/WINNT/afsrdr/user/RDRFunction.c b/src/WINNT/afsrdr/user/RDRFunction.c index 0c24fe0..c304802 100644 --- a/src/WINNT/afsrdr/user/RDRFunction.c +++ b/src/WINNT/afsrdr/user/RDRFunction.c @@ -996,6 +996,8 @@ RDR_EvaluateNodeByName( IN cm_user_t *userp, if (code) { smb_MapNTError(cm_MapRPCError(code, &req), &status, TRUE); (*ResultCB)->ResultStatus = status; + if ( status == STATUS_INVALID_HANDLE) + status = STATUS_OBJECT_PATH_INVALID; osi_Log2(afsd_logp, "RDR_EvaluateNodeByName cm_GetSCache parentFID failure code=0x%x status=0x%x", code, status); free(wszName); @@ -1168,6 +1170,8 @@ RDR_EvaluateNodeByID( IN cm_user_t *userp, if (code) { cm_ReleaseSCache(scp); smb_MapNTError(cm_MapRPCError(code, &req), &status, TRUE); + if ( status == STATUS_INVALID_HANDLE) + status = STATUS_OBJECT_PATH_INVALID; (*ResultCB)->ResultStatus = status; osi_Log2(afsd_logp, "RDR_EvaluateNodeByID cm_GetSCache parentFID failure code=0x%x status=0x%x", code, status); @@ -1182,6 +1186,8 @@ RDR_EvaluateNodeByID( IN cm_user_t *userp, if (code) { cm_ReleaseSCache(scp); smb_MapNTError(cm_MapRPCError(code, &req), &status, TRUE); + if ( status == STATUS_INVALID_HANDLE) + status = STATUS_OBJECT_PATH_INVALID; (*ResultCB)->ResultStatus = status; osi_Log2(afsd_logp, "RDR_EvaluateNodeByID cm_GetSCache parentFID failure code=0x%x status=0x%x", code, status); @@ -1297,6 +1303,8 @@ RDR_CreateFileEntry( IN cm_user_t *userp, if (code) { smb_MapNTError(cm_MapRPCError(code, &req), &status, TRUE); (*ResultCB)->ResultStatus = status; + if ( status == STATUS_INVALID_HANDLE) + status = STATUS_OBJECT_PATH_INVALID; osi_Log2(afsd_logp, "RDR_CreateFileEntry cm_GetSCache ParentFID failure code=0x%x status=0x%x", code, status); return; @@ -1470,6 +1478,8 @@ RDR_UpdateFileEntry( IN cm_user_t *userp, if (code) { smb_MapNTError(cm_MapRPCError(code, &req), &status, TRUE); (*ResultCB)->ResultStatus = status; + if ( status == STATUS_INVALID_HANDLE) + status = STATUS_OBJECT_PATH_INVALID; osi_Log2(afsd_logp, "RDR_UpdateFileEntry cm_GetSCache ParentFID failure code=0x%x status=0x%x", code, status); return; @@ -1681,6 +1691,8 @@ RDR_CleanupFileEntry( IN cm_user_t *userp, code = cm_GetSCache(&parentFid, &dscp, userp, &req); if (code) { smb_MapNTError(cm_MapRPCError(code, &req), &status, TRUE); + if ( status == STATUS_INVALID_HANDLE) + status = STATUS_OBJECT_PATH_INVALID; (*ResultCB)->ResultStatus = status; osi_Log2(afsd_logp, "RDR_CleanupFileEntry cm_GetSCache ParentFID failure code=0x%x status=0x%x", code, status); @@ -2032,6 +2044,8 @@ RDR_DeleteFileEntry( IN cm_user_t *userp, code = cm_GetSCache(&parentFid, &dscp, userp, &req); if (code) { smb_MapNTError(cm_MapRPCError(code, &req), &status, TRUE); + if ( status == STATUS_INVALID_HANDLE) + status = STATUS_OBJECT_PATH_INVALID; (*ResultCB)->ResultStatus = status; osi_Log2(afsd_logp, "RDR_DeleteFileEntry cm_GetSCache ParentFID failure code=0x%x status=0x%x", code, status); @@ -2225,6 +2239,8 @@ RDR_RenameFileEntry( IN cm_user_t *userp, if (code) { osi_Log1(afsd_logp, "RDR_RenameFileEntry cm_GetSCache source parent failed code 0x%x", code); smb_MapNTError(cm_MapRPCError(code, &req), &status, TRUE); + if ( status == STATUS_INVALID_HANDLE) + status = STATUS_OBJECT_PATH_INVALID; (*ResultCB)->ResultStatus = status; return; } @@ -2235,6 +2251,8 @@ RDR_RenameFileEntry( IN cm_user_t *userp, if (code) { osi_Log2(afsd_logp, "RDR_RenameFileEntry cm_SyncOp oldDscp 0x%p failed code 0x%x", oldDscp, code); smb_MapNTError(cm_MapRPCError(code, &req), &status, TRUE); + if ( status == STATUS_INVALID_HANDLE) + status = STATUS_OBJECT_PATH_INVALID; (*ResultCB)->ResultStatus = status; lock_ReleaseWrite(&oldDscp->rw); cm_ReleaseSCache(oldDscp);