Scroll to navigation

FIND_INODE_NOWAIT(9) The Linux VFS FIND_INODE_NOWAIT(9)

NAME

find_inode_nowait - find an inode in the inode cache

SYNOPSIS

struct inode * find_inode_nowait(struct super_block * sb, unsigned long hashval, int (*match) (struct inode *, unsigned long, void *), void * data);

ARGUMENTS

struct super_block * sb

super block of file system to search

unsigned long hashval

hash value (usually inode number) to search for

int (*)(struct inode *, unsigned long, void *) match

callback used for comparisons between inodes

void * data

opaque data pointer to pass to match

DESCRIPTION

Search for the inode specified by hashval and data in the inode cache, where the helper function match will return 0 if the inode does not match, 1 if the inode does match, and -1 if the search should be stopped. The match function must be responsible for taking the i_lock spin_lock and checking i_state for an inode being freed or being initialized, and incrementing the reference count before returning 1. It also must not sleep, since it is called with the inode_hash_lock spinlock held.

This is a even more generalized version of ilookup5 when the function must never block --- find_inode can block in __wait_on_freeing_inode --- or when the caller can not increment the reference count because the resulting iput might cause an inode eviction. The tradeoff is that the match funtion must be very carefully implemented.

COPYRIGHT

July 2017 Kernel Hackers Manual 4.12