vfs_lookup_open(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– 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 β€” the O_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_open responded 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