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) ; |
sb
super block of file system
hashval
hash value (usually inode number) to get
test
callback used for comparisons between inodes
set
callback 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.