diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2020-11-05 13:48:00 -0500 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2020-12-07 11:50:45 -0500 |
commit | e50d674107bab424d1cc964cb116abcd9fbf79a3 (patch) | |
tree | 5752313b9cf70636b1e6acdf2dd02e80b64d9570 | |
parent | 99f71f544760c342033de224a9437531d5dd6dcb (diff) |
fs: kill find_inode_nowait()
There's no good reason to be exporting an interface with such razor
sharp edges.
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
-rw-r--r-- | fs/inode.c | 50 | ||||
-rw-r--r-- | include/linux/fs.h | 5 |
2 files changed, 0 insertions, 55 deletions
diff --git a/fs/inode.c b/fs/inode.c index 72c4c347afb7..845d831168d0 100644 --- a/fs/inode.c +++ b/fs/inode.c @@ -1404,56 +1404,6 @@ again: EXPORT_SYMBOL(ilookup); /** - * find_inode_nowait - find an inode in the inode cache - * @sb: super block of file system to search - * @hashval: hash value (usually inode number) to search for - * @match: callback used for comparisons between inodes - * @data: opaque data pointer to pass to @match - * - * 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. - */ -struct inode *find_inode_nowait(struct super_block *sb, - unsigned long hashval, - int (*match)(struct inode *, unsigned long, - void *), - void *data) -{ - struct hlist_head *head = inode_hashtable + hash(sb, hashval); - struct inode *inode, *ret_inode = NULL; - int mval; - - spin_lock(&inode_hash_lock); - hlist_for_each_entry(inode, head, i_hash) { - if (inode->i_sb != sb) - continue; - mval = match(inode, hashval, data); - if (mval == 0) - continue; - if (mval == 1) - ret_inode = inode; - goto out; - } -out: - spin_unlock(&inode_hash_lock); - return ret_inode; -} -EXPORT_SYMBOL(find_inode_nowait); - -/** * find_inode_rcu - find an inode in the inode cache * @sb: Super block of file system to search * @hashval: Key to hash diff --git a/include/linux/fs.h b/include/linux/fs.h index 7519ae003a08..db24beeb63f2 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -2943,11 +2943,6 @@ extern struct inode *inode_insert5(struct inode *inode, unsigned long hashval, void *data); extern struct inode * iget5_locked(struct super_block *, unsigned long, int (*test)(struct inode *, void *), int (*set)(struct inode *, void *), void *); extern struct inode * iget_locked(struct super_block *, unsigned long); -extern struct inode *find_inode_nowait(struct super_block *, - unsigned long, - int (*match)(struct inode *, - unsigned long, void *), - void *data); extern struct inode *find_inode_rcu(struct super_block *, unsigned long, int (*)(struct inode *, void *), void *); extern struct inode *find_inode_by_ino_rcu(struct super_block *, unsigned long); |