[Lustre-discuss] Looping in __d_lookup

Jakob Goldbach jakob at goldbach.dk
Wed Jun 4 02:25:34 PDT 2008


On Wed, 2008-06-04 at 12:10 +0300, Alex Lyashkov wrote:
> > > 
> > > --- ./lustre/llite/dcache.c.xxx	2007-09-27 16:04:08.000000000 +0400
> > > +++ ./lustre/llite/dcache.c	2008-05-29 11:53:07.000000000 +0400
> > > @@ -470,8 +470,8 @@ revalidate_finish:
> > >          spin_lock(&dcache_lock);
> > >          lock_dentry(de);
> > >          __d_drop(de);
> > > +        _d_rehash(de);
> > >          unlock_dentry(de);
> > > -        __d_rehash(de, 0);
> > >          spin_unlock(&dcache_lock);
> this will be deadlock with RHEL4 kernel.
> 
> cut from rhel4:
> 
> void __d_rehash(struct dentry * entry, int lock)
> {


But Im not calling __d_rehash. Im calling _d_rehash which Andres suggest
to be defined in lustre_pathcless_compat.h. Your cut is from kernel
pathces anyway. My race happens on _patchless_ client.


/Jakob




More information about the lustre-discuss mailing list