"afs_xcbhash", (char *)&afs_xcbhash}, {
"afs_xaxs", (char *)&afs_xaxs}, {
"afs_xinterface", (char *)&afs_xinterface},
-#ifndef UKERNEL
- {
- "afs_xosi", (char *)&afs_xosi},
-#endif
{
"afs_xsrvAddr", (char *)&afs_xsrvAddr},
{
{ "afs_discon_lock", (char *)&afs_discon_lock},
{ "afs_disconDirtyLock", (char *)&afs_disconDirtyLock},
{ "afs_discon_vc_dirty", (char *)&afs_xvcdirty},
+ { "afs_dynrootDirLock", (char *)&afs_dynrootDirLock},
+ { "afs_dynSymlinkLock", (char *)&afs_dynSymlinkLock},
};
unsigned long lastCallBack_vnode;
unsigned int lastCallBack_dv;
XSTATS_START_CMTIME(AFS_STATS_CM_RPCIDX_GETLOCK);
AFS_STATCNT(SRXAFSCB_GetLock);
+ memset(a_result, 0, sizeof(*a_result));
nentries = sizeof(ltable) / sizeof(struct ltable);
if (a_index < 0 || a_index >= nentries+afs_cellindex) {
/*
#endif
#endif
ReleaseReadLock(&afs_xvcache);
- ObtainWriteLock(&afs_xcbhash, 449);
- afs_DequeueCallback(tvc);
- tvc->f.states &= ~(CStatd | CUnique | CBulkFetching);
+ afs_StaleVCacheFlags(tvc, 0, CUnique | CBulkFetching);
afs_allCBs++;
if (tvc->f.fid.Fid.Vnode & 1)
afs_oddCBs++;
else
afs_evenCBs++;
- ReleaseWriteLock(&afs_xcbhash);
- if ((tvc->f.fid.Fid.Vnode & 1 || (vType(tvc) == VDIR)))
- osi_dnlc_purgedp(tvc);
afs_Trace3(afs_iclSetp, CM_TRACE_CALLBACK,
ICL_TYPE_POINTER, tvc, ICL_TYPE_INT32,
tvc->f.states, ICL_TYPE_INT32,
uq = QPrev(tq);
AFS_FAST_RELE(tvc);
} else if ((tvc->f.states & CMValid)
- && (tvc->mvid->Fid.Volume == a_fid->Volume)) {
+ && (tvc->mvid.target_root->Fid.Volume == a_fid->Volume)) {
tvc->f.states &= ~CMValid;
if (!localFid.Cell)
- localFid.Cell = tvc->mvid->Cell;
+ localFid.Cell = tvc->mvid.target_root->Cell;
}
}
ReleaseReadLock(&afs_xvcache);
#endif
#endif
ReleaseReadLock(&afs_xvcache);
- ObtainWriteLock(&afs_xcbhash, 450);
- afs_DequeueCallback(tvc);
- tvc->f.states &= ~(CStatd | CUnique | CBulkFetching);
- ReleaseWriteLock(&afs_xcbhash);
- if ((tvc->f.fid.Fid.Vnode & 1 || (vType(tvc) == VDIR)))
- osi_dnlc_purgedp(tvc);
+ afs_StaleVCacheFlags(tvc, 0, CUnique | CBulkFetching);
afs_Trace3(afs_iclSetp, CM_TRACE_CALLBACK,
ICL_TYPE_POINTER, tvc, ICL_TYPE_INT32,
tvc->f.states, ICL_TYPE_LONG, 0);
for (i = 0; i < VCSIZE; i++)
for (tvc = afs_vhashT[i]; tvc; tvc = tvc->hnext) {
if (tvc->callback == ts) {
- ObtainWriteLock(&afs_xcbhash, 451);
- afs_DequeueCallback(tvc);
- tvc->callback = NULL;
- tvc->f.states &= ~(CStatd | CUnique | CBulkFetching);
- ReleaseWriteLock(&afs_xcbhash);
+ afs_StaleVCacheFlags(tvc, AFS_STALEVC_NODNLC |
+ AFS_STALEVC_CLEARCB,
+ CUnique | CBulkFetching);
}
}
ObtainReadLock(&afs_xinterface);
/* return all network interface addresses */
+ memset(addr, 0, sizeof(*addr));
addr->numberOfInterfaces = afs_cb_interface.numberOfInterfaces;
addr->uuid = afs_cb_interface.uuid;
for (i = 0; i < afs_cb_interface.numberOfInterfaces; i++) {