Inner workings are explained in the comment above cache_fplookup.
In case of trouble (symlinks,Capabilities and fd-relative lookups are not supported and will result in immediate fallback to regular code.
Symlinks, ".." in the path, mount points without support for lockless lookup and mismatched counters will rsult in an attempt to get a reference to the directory vnode and continue in regular lookup. If this fails, the entire operation is aborted and regular lookup starts from scratch. mount points which don't support lockless lookup or mismatched counters) an attempt is made to get a reference on the last validated vnode and to continue from that point in the regular lookup.However, If all fails the code aborts entirely and regular lookup startscare is made that data is not copied again from scratchuserspace.