[lustre-devel] Do we need LOOKUP_CONTINUE in ll_revalidate_dentry()

Andreas Dilger adilger at whamcloud.com
Mon Nov 26 12:53:17 PST 2018


On Nov 26, 2018, at 12:51, James Simmons <jsimmons at infradead.org> wrote:
> 
> 
>> On Mon, Nov 26 2018, James Simmons wrote:
>> 
>>> Doing a compare to the OpenSFS branch I noticed this difference:
>>> 
>>> diff --git a/drivers/staging/lustre/lustre/llite/dcache.c 
>>> b/drivers/staging/lustre/lustre/llite/dcache.c
>>> index 11b82c63..6ee0ec9 100644
>>> --- a/drivers/staging/lustre/lustre/llite/dcache.c
>>> +++ b/drivers/staging/lustre/lustre/llite/dcache.c
>>> @@ -254,7 +254,7 @@ static int ll_revalidate_dentry(struct dentry *dentry,
>>>         * to this dentry, then its lock has not been revoked and the
>>>         * path component is valid.
>>>         */
>>> -       if (lookup_flags & LOOKUP_PARENT)
>>> +       if (lookup_flags & (LOOKUP_CONTINUE | LOOKUP_PARENT))
>>>                return 1;
>>> 
>>>        /* Symlink - always valid as long as the dentry was found */
>>> 
>>> Is that needed for newer kernels?
>> 
>> LOOKUP_CONTINUE disappeared in 2011
>> 
>> Commit: 49084c3bb205 ("kill LOOKUP_CONTINUE")
>> 
>> LOOKUP_PARENT is the new LOOKUP_CONTINUE.
> 
> So its really
> 
> if (lookup_flags & (LOOKUP_PARENT | LOOKUP_PARENT))
> 	return  1;
> 
> in OpenSFS branch :-/

/* Kernel 3.1 kills LOOKUP_CONTINUE, LOOKUP_PARENT is equivalent to it.
 * seem kernel commit 49084c3bb2055c401f3493c13edae14d49128ca0 */
#ifndef LOOKUP_CONTINUE
#define LOOKUP_CONTINUE LOOKUP_PARENT
#endif

That commit is in the 3.0 release, so LOOKUP_CONTINUE is needed for older
kernels.  Having the same value specified twice for newer kernels is not harmful, but this isn't needed for the upstream client.

Cheers, Andreas
---
Andreas Dilger
CTO Whamcloud






More information about the lustre-devel mailing list