diff mbox series

Do we need LOOKUP_CONTINUE in ll_revalidate_dentry()

Message ID alpine.LFD.2.21.1811260404040.32255@casper.infradead.org (mailing list archive)
State New, archived
Headers show
Series Do we need LOOKUP_CONTINUE in ll_revalidate_dentry() | expand

Commit Message

James Simmons Nov. 26, 2018, 4:52 a.m. UTC
Doing a compare to the OpenSFS branch I noticed this difference:


Is that needed for newer kernels?

Comments

NeilBrown Nov. 26, 2018, 7:25 a.m. UTC | #1
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.

NeilBrown
James Simmons Nov. 26, 2018, 7:51 p.m. UTC | #2
> 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 :-/
Andreas Dilger Nov. 26, 2018, 8:53 p.m. UTC | #3
On Nov 26, 2018, at 12:51, James Simmons <jsimmons@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
diff mbox series

Patch

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 */