* @base: base directory to lookup from
*
* 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 and if one
+ * currently exist or an error if there is a problem with the name.
+ * The function does not try to create a dentry and if one
* is found it doesn't try to revalidate it.
*
* Note that this routine is purely a helper for filesystem usage and should
*
* No locks need be held - only a counted reference to @base is needed.
*
+ * Returns:
+ * - ref-counted dentry on success, or
+ * - %NULL if name could not be found, or
+ * - ERR_PTR(-EACCES) if name is dot or dotdot or contains a slash or nul, or
+ * - ERR_PTR() if fs provide ->d_hash, and this returned an error.
*/
struct dentry *try_lookup_noperm(struct qstr *name, struct dentry *base)
{
*
* Unlike lookup_one, it should be called without the parent
* i_rwsem held, and will take the i_rwsem itself if necessary.
+ *
+ * Returns: - A dentry, possibly negative, or
+ * - same errors as try_lookup_noperm() or
+ * - ERR_PTR(-ENOENT) if parent has been removed, or
+ * - ERR_PTR(-EACCES) if parent directory is not searchable.
*/
struct dentry *lookup_one_unlocked(struct mnt_idmap *idmap, struct qstr *name,
struct dentry *base)
* It should be called without the parent i_rwsem held, and will take
* the i_rwsem itself if necessary. If a fatal signal is pending or
* delivered, it will return %-EINTR if the lock is needed.
+ *
+ * Returns: A dentry, possibly negative, or
+ * - same errors as lookup_one_unlocked() or
+ * - ERR_PTR(-EINTR) if a fatal signal is pending.
*/
struct dentry *lookup_one_positive_killable(struct mnt_idmap *idmap,
struct qstr *name,
* This can be used for in-kernel filesystem clients such as file servers.
*
* The helper should be called without i_rwsem held.
+ *
+ * Returns: A positive dentry, or
+ * - ERR_PTR(-ENOENT) if the name could not be found, or
+ * - same errors as lookup_one_unlocked().
*/
struct dentry *lookup_one_positive_unlocked(struct mnt_idmap *idmap,
struct qstr *name,
*
* Unlike try_lookup_noperm() it *does* revalidate the dentry if it already
* existed.
+ *
+ * Returns: A dentry, possibly negative, or
+ * - ERR_PTR(-ENOENT) if parent has been removed, or
+ * - same errors as try_lookup_noperm()
*/
struct dentry *lookup_noperm_unlocked(struct qstr *name, struct dentry *base)
{
* _can_ become positive at any time, so callers of lookup_noperm_unlocked()
* need to be very careful; pinned positives have ->d_inode stable, so
* this one avoids such problems.
+ *
+ * Returns: A positive dentry, or
+ * - ERR_PTR(-ENOENT) if name cannot be found or parent has been removed, or
+ * - same errors as try_lookup_noperm()
*/
struct dentry *lookup_noperm_positive_unlocked(struct qstr *name,
struct dentry *base)