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.