Your question assumes that there is a module called namei() which is probably false. Back when there was a namei(), it took a pathname and returned a (in-core) inode or it returned an error. namei, by its very name, cannot handle a modern kernel's needs. Today a kernel would want a vnode, not an inode. And the change was made to support the concept of several types of filesystems. You can't return an inode for fat-32 or nfs.
I am guessing that your motivation for asking this question comes from looking at the output of sar which can tell you how often namei was called. Today that counter in incremented in a function called lookupname() (or something like that). And iget() is no longer around either. It is now VFS_LOOKUP() (a macro) (and again, the name may be a little different).
Even the old namei() was a rough algorithm. Look at the system call lstat().... that tells you that sometimes namei needs to not follow a symbolic link. And at some point a name cache appeared. Since I must go back in time, I'm going back far enough that there are no symlinks nor a name cache.
namei() is called by a system call and namei needs to access the uarea of the process that is making the system call. If a pathname starts with a /, namei must get the process root. That's how a chroot is enforced. Otherwise it must get the process CWD. Now it knows where to start. At each point it will also verify that the process has permission to access each component.
Now it needs to lookup the first name. So it reads the current directory and obtains a directory entry. Then it calls geti() to obtain an in-core inode. geti will notice if the inode is a mount point by checking the mount table.... if so, it will seek the inode in the mount table instead. It will also notice if the inode is in core, if not iget will read it.
This continues until the pathname is resolved or the procedure fails.
The only other problem is a path like /usr/local/../lib where /usr/local is a mounted filesystem. Here namei() must cross a mount point backwards and there is special code for that.
Nice first question of the day! I'm awake now!