iget5_locked — obtain an inode from a mounted file system
struct inode * iget5_locked ( | struct super_block * | sb, |
| unsigned long | hashval, | |
| int (* | test(struct inode *, void *), | |
| int (* | set(struct inode *, void *), | |
| void * | data); |
sbsuper block of file system
hashvalhash value (usually inode number) to get
testcallback used for comparisons between inodes
setcallback used to initialize a new struct inode
data
opaque data pointer to pass to test and set
iget5_locked uses ifind to search for the inode specified by hashval
and data in the inode cache and if present it is returned with an increased
reference count. This is a generalized version of iget_locked for file
systems where the inode number is not sufficient for unique identification
of an inode.
If the inode is not in cache, get_new_inode is called to allocate a new
inode and this is returned locked, hashed, and with the I_NEW flag set. The
file system gets to fill it in before unlocking it via unlock_new_inode.
Note both test and set are called with the inode_lock held, so can't sleep.