IGET5_LOCKED(9)

NAME
iget5_locked - obtain an inode from a mounted file system

SYNOPSIS

struct inode * iget5_locked (struct super_block * sb, unsigned long hashval, int (*test) <funcparams>struct inode *, void *</funcparams>, int (*set) <funcparams>struct inode *, void *</funcparams>, void * data);

ARGUMENTS

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

DESCRIPTION

This is iget without the read_inode portion of get_new_inode.

 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.