vfs_lookup_open(9)
π vfs_lookup_open(9) β Kernel API Manual π
okay bestie, welcome to the vfs_lookup_open(9) page from the Kernel API Manual β weβre about to make the whole βopen and maybe create a regular fileβ situation make sense, fr fr. π
β¨
πΈ NAME πΈ
vfs_lookup_open β open and possibly create a regular file π
β¨ SYNOPSIS β¨
struct file * vfs_lookup_open (struct path *parent , struct qstr *last ,
int open_flag , umode_t mode );
π«Ά ARGUMENTS π«Ά
parentβ the directory thatβs gonna contain the file ποΈlastβ the final component of the file name, iykyk β¨open_flagβ theO_flags, bestie π©modeβ the initial permissions for the file π
π¦ DESCRIPTION π¦
So this one opens a file after lookup and/or create. It provides similar functionality to open_last_lookups for non-VFS users, particularly nfsd. π«Ά
It uses ->atomic_open or ->lookup / ->create / ->open as appropriate. No cap, thatβs the whole routing vibe. π
If the fs object found is not a regular file, then an error is returned. In some cases, related errors are repurposed so that the caller can determine the type of file found from the error. Itβs giving very specific error-code energy: π
-EISDIR: a directory was found π-ELOOP: a symlink was found π-ENODEV: a block or character device special file was found π§±-EFTYPE: any other non-regular file was found, such as FIFO or SOCK, or->atomic_openresponded to__O_REGULARπ
π RETURN π
You get the opened struct file, or an error β thatβs the whole vibe. π
π SEE ALSO π
Kernel file ./fs/namei.c: 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_one_positive_unlocked(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_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) π«
mwah π β this cutie came from ./fs, dated October 2026, and itβs vfs_lookup_open(9) out. π
π¦ 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