lookup_one_p...ive_unlocked(9)
π lookup_one_p...ive_unlocked β a Kernel API Manual moment
okay bestie, welcome to the Kernel API Manual, where today's main character is lookup_one_p...ive_unlocked(9) π (yes the header truncates it, we don't gatekeep, the full name is lookup_one_positive_unlocked). this one's a little lookup helper and it's honestly kind of iconic for knowing what it wants. let's get into it β¨
πΈ NAME πΈ
lookup_one_positive_unlocked β lookup single pathname component. one component. just one. it's giving "i do one thing and i do it well" π
π¦ SYNOPSIS π¦
struct dentry * lookup_one_positive_unlocked (struct mnt_idmap *idmap ,
struct qstr *name , struct dentry *base );
β¨ ARGUMENTS β¨
idmapβ the idmap of the mount that the lookup is performed from π«Άnameβ theqstrholding the pathname component you want looked upbaseβ the base directory to lookup from, your starting point, your home base π
π DESCRIPTION π
okay so here's the vibe: this helper will yield ERR_PTR(-ENOENT) on negatives. like, if it's a no, it's a whole error pointer no, not a weird maybe. and the helper returns either a known positive or ERR_PTR. no gray area, no "it's complicated" situationship. that's literally what most of the users want π
β οΈ now for the careful part, bestie β a pinned negative with an unlocked parent can become positive at any time, so callers oflookup_one_unlockedneed to be very careful. meanwhile pinned positives have >d_inodestable, so this one avoids such problems. it's giving stable queen energy π
this can be used for in-kernel filesystem clients such as file servers. lowkey its whole purpose π
and the helper should be called without i_rwsem held. no cap. don't hold it. π
π₯ RETURN π₯
a positive dentry, or:
ERR_PTR(-ENOENT)if the name could not be found, or- the same errors as
lookup_one_unlocked.
periodt. that's the return contract π
π SEE ALSO π
the kernel file ./fs/namei.c and honestly the entire friend group β here's everybody, no one left out of the group chat π
check_acl(9),acl_permission_check(9),generic_permission(9),do_inode_permission(9),sb_permission(9),inode_permission(9),path_get(9),path_put(9)path_connected(9),try_to_unlazy(9),try_to_unlazy_next(9),complete_walk(9),may_follow_link(9),safe_hardlink_source(9),may_linkat(9),may_create_in_sticky(9)lookup_fast(9),start_dirop(9),end_dirop(9),kern_path_parent(9),vfs_path_parent_lookup(9),vfs_path_lookup(9),try_lookup_noperm(9),lookup_noperm(9)lookup_one(9),lookup_one_unlocked(9),lookup_one_positive_killable(9),lookup_noperm_unlocked(9),start_creating(9),start_removing(9),start_creating_killable(9),start_removing_killable(9)start_creating_noperm(9),start_removing_noperm(9),start_creating_dentry(9),start_removing_dentry(9),__start_renaming(9),start_renaming(9)start_renaming_dentry(9),start_renaming_two_dentries(9),vfs_prepare_mode(9),vfs_create(9),atomic_open(9),vfs_lookup_open(9),vfs_tmpfile(9)kernel_tmpfile_open(9),end_creating_path(9),dentry_create(9),vfs_mknod(9),vfs_mkdir(9),vfs_rmdir(9),vfs_unlink(9),vfs_symlink(9)vfs_link(9),vfs_rename(9),vfs_readlink(9),vfs_get_link(9),page_get_link(9),page_put_link(9)
okay that's the whole page, mwah π this was brought to you by the source ./fs, version date October 2026, and the page lookup_one_p...ive_unlocked(9) β stay positive (dentry-wise), stay unlocked (parent-wise), and don't hold i_rwsem π
π§π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms