*__insert_inode_hash - hash an inode
*@inode: unhashed inode
*@hashval: unsigned long value used to locate this object in the
*inode_hashtable.
*
*Add an inode to the inode hash for this superblock.
*/
void __insert_inode_hash(struct inode *inode, unsigned long hashval)
{
struct hlist_head *b = inode_hashtable + hash(inode->i_sb, hashval);
spin_lock(&inode_hash_lock);
spin_lock(&inode->i_lock);
hlist_add_head(&inode->i_hash, b);spin_unlock(&inode->i_lock);
spin_unlock(&inode_hash_lock);
}
EXPORT_SYMBOL(__insert_inode_hash);
/** *
__remove_inode_hash -
remove an inode from the hash *
@inode: inode to unhash * *
Remove an inode from the superblock. */void
__remove_inode_hash(struct inode *inode){
spin_lock(&inode_hash_lock);
spin_lock(&inode->i_lock);
hlist_del_init(&inode->i_hash);
spin_unlock(&inode->i_lock);
spin_unlock(&inode_hash_lock);}EXPORT_SYMBOL(__remove_inode_hash);
static struct hlist_head *inode_hashtable __read_mostly;/* * Initialize the waitqueues and inode hash table. */void __init inode_init_early(void){ unsigned int loop; /* If hashes a