From 9ed02a628afd700a0e3c47ac92fa9c89d0827301 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Tue, 27 Nov 2012 00:16:58 -0500 Subject: [PATCH] Windows: cm_LookupInternal obtain type of target cm_LookupInternal needs to return the target of a mount point if the matching directory entry is a mount point. Therefore, if the target type is unknown the status information must be queried. Change-Id: Ifc37897531766f59e2517650ed7050cba50d6819 Reviewed-on: http://gerrit.openafs.org/8528 Tested-by: BuildBot Reviewed-by: Jeffrey Altman Tested-by: Jeffrey Altman --- src/WINNT/afsd/cm_vnodeops.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/WINNT/afsd/cm_vnodeops.c b/src/WINNT/afsd/cm_vnodeops.c index a5c3d6e..509d5f1 100644 --- a/src/WINNT/afsd/cm_vnodeops.c +++ b/src/WINNT/afsd/cm_vnodeops.c @@ -1148,7 +1148,7 @@ retry_lookup: * that we stopped early, probably because we found the entry we're * looking for. Any other non-zero code is an error. */ - if (code && code != CM_ERROR_STOPNOW && code != CM_ERROR_BPLUS_NOMATCH) { + if (code && code != CM_ERROR_STOPNOW) { /* if the cm_scache_t we are searching in is not a directory * we must return path not found because the error * is to describe the final component not an intermediary @@ -1289,7 +1289,7 @@ notfound: lock_ObtainWrite(&tscp->rw); /* - * Do not get status if we do not already have a callback. + * Do not get status if we do not already have a callback or know the type. * The process of reading the mount point string will obtain status information * in a single RPC. No reason to add a second round trip. * @@ -1297,7 +1297,7 @@ notfound: * current cm_user_t is not the same as the one that obtained the * mount point string contents. */ - if (cm_HaveCallback(tscp)) { + if (cm_HaveCallback(tscp) || tscp->fileType == CM_SCACHETYPE_UNKNOWN) { code = cm_SyncOp(tscp, NULL, userp, reqp, 0, CM_SCACHESYNC_GETSTATUS | CM_SCACHESYNC_NEEDCALLBACK); if (code) { -- 1.9.4