curChunk = 13;
// stick the first 2 entries "." and ".." in
- fakeEntry.fid.unique = htonl(1);
fakeEntry.fid.vnode = htonl(1);
strcpy(fakeEntry.name, ".");
currentPos = cm_FakeRootDir + curPage * CM_DIR_PAGESIZE + curChunk * CM_DIR_CHUNKSIZE;
osi_Log0(afsd_logp,"Invalidating local mount point scp... ");
- cm_SetFid(&aFid, AFS_FAKE_ROOT_CELL_ID, AFS_FAKE_ROOT_VOL_ID, 1, 2);
+ cm_SetFid(&aFid, AFS_FAKE_ROOT_CELL_ID, AFS_FAKE_ROOT_VOL_ID, 1, 1);
lock_ObtainWrite(&cm_scacheLock);
lock_ObtainMutex(&cm_Freelance_Lock); /* always scache then freelance lock */
for (i=0; i<cm_noLocalMountPoints; i++) {
hash = CM_SCACHE_HASH(&aFid);
for (scp=cm_data.scacheHashTablep[hash]; scp; scp=scp->nextp) {
- if (scp->fid.volume == aFid.volume &&
- scp->fid.vnode == aFid.vnode &&
- scp->fid.unique == aFid.unique
- ) {
-
+ if (cm_FidCmp(&scp->fid, &aFid) == 0) {
// mark the scp to be reused
cm_HoldSCacheNoLock(scp);
lock_ReleaseWrite(&cm_scacheLock);
}
}
}
- cm_SetFid(&aFid, AFS_FAKE_ROOT_CELL_ID, AFS_FAKE_ROOT_VOL_ID, aFid.vnode + 1, 2);
+ cm_SetFid(&aFid, AFS_FAKE_ROOT_CELL_ID, AFS_FAKE_ROOT_VOL_ID, aFid.vnode + 1, 1);
}
lock_ReleaseWrite(&cm_scacheLock);
osi_Log0(afsd_logp,"\tall old scp cleared!");
/* cm_reInitLocalMountPoints(); */
if (fidp)
- cm_SetFid(fidp, fidp->cell, fidp->volume, cm_noLocalMountPoints + 1, 1);
+ cm_SetFid(fidp, fidp->cell, fidp->volume, ++cm_noLocalMountPoints, 1);
cm_noteLocalMountPointChange();
return 0;
}
if (!strcmp(shortname, toremove)) {
RegDeleteValue( hkFreelance, szValueName );
+ found = 1;
break;
}
}
fclose(fp1);
fclose(fp2);
- if (!found)
- return CM_ERROR_NOSUCHFILE;
-
- unlink(hfile);
- rename(hfile2, hfile);
+ if (found) {
+ unlink(hfile);
+ rename(hfile2, hfile);
+ }
}
lock_ReleaseMutex(&cm_Freelance_Lock);
- cm_noteLocalMountPointChange();
- return 0;
+ if (found) {
+ cm_noteLocalMountPointChange();
+ return 0;
+ } else
+ return CM_ERROR_NOSUCHFILE;
}
long cm_FreelanceAddSymlink(char *filename, char *destination, cm_fid_t *fidp)
/* cm_reInitLocalMountPoints(); */
if (fidp)
- cm_SetFid(fidp, fidp->cell, fidp->volume, cm_noLocalMountPoints + 1, 1);
+ cm_SetFid(fidp, fidp->cell, fidp->volume, ++cm_noLocalMountPoints, 1);
cm_noteLocalMountPointChange();
return 0;
}
if (!strcmp(shortname, toremove)) {
RegDeleteValue( hkFreelanceSymlinks, szValueName );
+ found = 1;
break;
}
}
}
lock_ReleaseMutex(&cm_Freelance_Lock);
- cm_noteLocalMountPointChange();
- return 0;
+ if (found) {
+ cm_noteLocalMountPointChange();
+ return 0;
+ } else
+ return CM_ERROR_NOSUCHFILE;
}
#endif /* AFS_FREELANCE_CLIENT */