summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2020-11-05 13:48:00 -0500
committerKent Overstreet <kent.overstreet@gmail.com>2020-12-07 11:50:45 -0500
commite50d674107bab424d1cc964cb116abcd9fbf79a3 (patch)
tree5752313b9cf70636b1e6acdf2dd02e80b64d9570
parent99f71f544760c342033de224a9437531d5dd6dcb (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.c50
-rw-r--r--include/linux/fs.h5
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);