path: root/fs/namei.c
diff options
authorLinus Torvalds <torvalds@linux-foundation.org>2018-06-16 16:32:04 +0900
committerLinus Torvalds <torvalds@linux-foundation.org>2018-06-16 16:32:04 +0900
commit35773c93817c5f2df264d013978e7551056a063a (patch)
tree5ca02a3f3c680091d5b1019b27ba23b5323a038a /fs/namei.c
parent29d6849d88b61edf130aef500acad78206bda3cd (diff)
parent47ea0f2ebffd400d36ab5946ec8d6d6e08a67d53 (diff)
Merge branch 'afs-proc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull AFS updates from Al Viro: "Assorted AFS stuff - ended up in vfs.git since most of that consists of David's AFS-related followups to Christoph's procfs series" * 'afs-proc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: afs: Optimise callback breaking by not repeating volume lookup afs: Display manually added cells in dynamic root mount afs: Enable IPv6 DNS lookups afs: Show all of a server's addresses in /proc/fs/afs/servers afs: Handle CONFIG_PROC_FS=n proc: Make inline name size calculation automatic afs: Implement network namespacing afs: Mark afs_net::ws_cell as __rcu and set using rcu functions afs: Fix a Sparse warning in xdr_decode_AFSFetchStatus() proc: Add a way to make network proc files writable afs: Rearrange fs/afs/proc.c to remove remaining predeclarations. afs: Rearrange fs/afs/proc.c to move the show routines up afs: Rearrange fs/afs/proc.c by moving fops and open functions down afs: Move /proc management functions to the end of the file
Diffstat (limited to 'fs/namei.c')
1 files changed, 29 insertions, 0 deletions
diff --git a/fs/namei.c b/fs/namei.c
index 2490ddb8bc90..734cef54fdf8 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -2464,6 +2464,35 @@ static int lookup_one_len_common(const char *name, struct dentry *base,
+ * try_lookup_one_len - filesystem helper to lookup single pathname component
+ * @name: pathname component to lookup
+ * @base: base directory to lookup from
+ * @len: maximum length @len should be interpreted to
+ *
+ * Look up a dentry by name in the dcache, returning NULL if it does not
+ * currently exist. The function does not try to create a dentry.
+ *
+ * Note that this routine is purely a helper for filesystem usage and should
+ * not be called by generic code.
+ *
+ * The caller must hold base->i_mutex.
+ */
+struct dentry *try_lookup_one_len(const char *name, struct dentry *base, int len)
+ struct qstr this;
+ int err;
+ WARN_ON_ONCE(!inode_is_locked(base->d_inode));
+ err = lookup_one_len_common(name, base, len, &this);
+ if (err)
+ return ERR_PTR(err);
+ return lookup_dcache(&this, base, 0);
* lookup_one_len - filesystem helper to lookup single pathname component
* @name: pathname component to lookup
* @base: base directory to lookup from