On Mon, Dec 14, 2020 at 12:13:22PM -0700, Jens Axboe wrote: > @@ -3140,6 +3149,12 @@ static const char *open_last_lookups(struct nameidata *nd, > return ERR_CAST(dentry); > if (likely(dentry)) > goto finish_lookup; > + /* > + * We can't guarantee nonblocking semantics beyond this, if > + * the fast lookup fails. > + */ > + if (nd->flags & LOOKUP_NONBLOCK) > + return ERR_PTR(-EAGAIN); > > BUG_ON(nd->flags & LOOKUP_RCU); That can't be right - we already must have removed LOOKUP_RCU here (see BUG_ON() right after that point). What is that test supposed to catch? What am I missing here?