iput
is the opposite of iget
which searches for an inode,
allocates memory for it if necessary and returns a reference to the inode to the
caller.
iput
takes this inode "back", i.e. frees the memory if needed.
There is a reference counter system, such that one inode can be used
in parallel by more than one caller and can therefore
be only dropped (i.e. removed from memory) if there is no user of it
anymore (every user has called iput
).
/**
* iget_locked - obtain an inode from a mounted file system
* @sb: super block of file system
* @ino: inode number to get
*
* Search for the inode specified by @ino in the inode cache and if present
* return it with an increased reference count. This is for file systems
* where the inode number is sufficient for unique identification of an inode.
*
* If the inode is not in cache, allocate a new inode and return it locked,
* hashed, and with the I_NEW flag set. The file system gets to fill it in
* before unlocking it via unlock_new_inode().
*/
struct inode *iget_locked(struct super_block *sb, unsigned long ino)