fh_lock, fh_unlock: toggle fh_locked, get the inode semaphore, set some attributes (fh_pre_* for fh_lock, fh_post_* for fh_unlock). fh_locked called in: nfsd_lookup, iff not looking up up "." or "..". ... fh_unlocked called in: do_open_lookup, iff not doing a create, called after nfsd_lookup, after nfsd_lookup, iff not doing a create. I suppose do_open_lookup shouldn't be called on directories, hence not on dotents, so the unlocks should match up. fh_put, if fh_dentry: ...