On 12/15/20 5:24 AM, Matthew Wilcox wrote: > On Mon, Dec 14, 2020 at 12:13:22PM -0700, Jens Axboe wrote: >> +++ b/fs/namei.c >> @@ -686,6 +686,8 @@ static bool try_to_unlazy(struct nameidata *nd) >> BUG_ON(!(nd->flags & LOOKUP_RCU)); >> >> nd->flags &= ~LOOKUP_RCU; >> + if (nd->flags & LOOKUP_NONBLOCK) >> + goto out1; > > If we try a walk in a non-blocking context, it fails, then we punt to > a thread, do we want to prohibit that thread trying an RCU walk first? > I can see arguments both ways -- this may only be a temporary RCU walk > failure, or we may never be able to RCU walk this path. In my opinion, it's not worth it trying to over complicate matters by handling the retry side differently. Better to just keep them the same. We'd need a lookup anyway to avoid aliasing. -- Jens Axboe