From 17b45bb8dee9ac53ff22effa472c9c246b792198 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Fri, 16 Aug 2013 11:58:18 -0400 Subject: [PATCH] Windows: buf_CleanLocked no callback for deleted file If the cm_scache flags indicate the object is CM_SCACHEFLAG_DELETED, do not request a callback. Simply invalidate the data in the buffer and move on. Change-Id: Id461dc20dda53c93eb87f2648f6279877e4a34d6 Reviewed-on: http://gerrit.openafs.org/10139 Tested-by: BuildBot Reviewed-by: Jeffrey Altman --- src/WINNT/afsd/cm_buf.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/WINNT/afsd/cm_buf.c b/src/WINNT/afsd/cm_buf.c index 184ced36e..e6b38720e 100644 --- a/src/WINNT/afsd/cm_buf.c +++ b/src/WINNT/afsd/cm_buf.c @@ -859,13 +859,17 @@ afs_uint32 buf_CleanLocked(cm_scache_t *scp, cm_buf_t *bp, cm_req_t *reqp, { release_scp = 1; - lock_ObtainWrite(&scp->rw); - code = cm_SyncOp(scp, NULL, bp->userp ? bp->userp : cm_rootUserp, reqp, 0, - CM_SCACHESYNC_NEEDCALLBACK | CM_SCACHESYNC_GETSTATUS); - if (code == 0) { - cm_SyncOpDone(scp, NULL, CM_SCACHESYNC_NEEDCALLBACK | CM_SCACHESYNC_GETSTATUS); + if (scp->flags & CM_SCACHEFLAG_DELETED) { + code = CM_ERROR_NOSUCHFILE; + } else { + lock_ObtainWrite(&scp->rw); + code = cm_SyncOp(scp, NULL, bp->userp ? bp->userp : cm_rootUserp, reqp, 0, + CM_SCACHESYNC_NEEDCALLBACK | CM_SCACHESYNC_GETSTATUS); + if (code == 0) { + cm_SyncOpDone(scp, NULL, CM_SCACHESYNC_NEEDCALLBACK | CM_SCACHESYNC_GETSTATUS); + } + lock_ReleaseWrite(&scp->rw); } - lock_ReleaseWrite(&scp->rw); } if (scp && (scp->flags & CM_SCACHEFLAG_DELETED)) { -- 2.39.5