[OpenAFS-devel] appears that cvs trunk has a deadlock problem of some sort for linux24
   
    Srikanth Vishwanathan
     
    vsrikanth@in.ibm.com
       
    Thu, 4 Apr 2002 15:48:25 -0500
    
    
  
Hi -
This part of the code is needlessly complicated. The first
for loop is not at all required. We could get rid of the first
for loop and directly call TryFlush..() in the second for loop.
Something like:
#endif /* AFS_FBSD_ENV */
+#if defined(AFS_LINUX22_ENV)
+          if (tvc !=3D afs_globalVp && tvc->vrefCount && tvc->opens =3D=
=3D 0)
+              afs_TryFlushDcacheChildren(tvc);
+#endif
 =A0 =A0 =A0 =A0 =A0 if (VREFCOUNT(tvc) =3D=3D 0 && tvc->opens =3D=3D 0=
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 && (tvc->states & CUnlinkedDel) =3D=3D 0) =
{
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0code =3D afs_FlushVCache(tvc, &fv_slept=
);
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (code =3D=3D 0) {
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0anumber--;
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0}
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0if (fv_slept) {
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0uq =3D VLRU.prev;
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0i =3D 0;
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0continue; =A0/* start over - may ha=
ve raced. */
 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0}
 =A0 =A0 =A0 =A0 =A0 }
 =A0 =A0 =A0 =A0 =A0 if (tq =3D=3D uq ) break;
 =A0 =A0 =A0 =A0}
We also need to change TryFlushDcacheChildren to take a struct vcache *=
and traverse all its dentries (and their children).
I sent the previous post to "openafs-devel-admin@openafs.org" by mistak=
e.
Sorry about that.
Thanks,
Srikanth.
=