inode_hashtable: this is a hash table which allows lookups on sb and hash. iget5_locked, in addition, allows an arbitrary match function (and init function) to be passed in so that a filesystem can allow non-unique inode numbers. How does nfsd do lookups? It calls sb->s_export_op->decode_fh(sb, fh, fhsize, fileid_type, nfsd_acceptable, exp): where nfsd_acceptable just returns 1 in no_subtree_check case, but may return 0 in subtree_check case if subtree check fails. The final parameter of decode_fh is just a void * passed to nfsd_acceptable. example of decode_fh: fs/exportfs/expfs.c:export_decode_fh() is the default; it calls find_exported_dentry, which calls sb->s_export->get_dentry (get_object by default: which does export_iget, which is a fancy iget, doing the lookup in the inode_hastable; used by ext2/3). iget5_locked: look up an inode by a "hash" value (usually inode number) See __nfs_fhget for how this is used (via iget5_locked) in nfs code.