vfs_create(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… vfs_create πŸ’…

okay bestie so this is vfs_create, straight out of the Kernel API Manual β€” yes, that Kernel API Manual. It's a kernel function, it makes files, and honestly? It's giving main character energy. Let's get into it 🫢


✨ NAME ✨

vfs_create β€” create new file. That's it. That's the whole job. New file, who dis πŸŽ€


🌸 SYNOPSIS 🌸

int vfs_create (struct mnt_idmap *idmap , struct dentry *dentry ,
umode_t mode , struct delegated_inode *di );

Look at that signature. Obsessed. Four args, one int return, zero notes πŸ’…


πŸ¦‹ ARGUMENTS πŸ¦‹

  • idmap β€” the idmap of the mount that the inode was found from. Like, where did this inode come from, bestie? This tells the function.
  • dentry β€” the dentry of the child file. That's the new baby file's dentry ✨
  • mode β€” the mode of the child file. Yes, mode. Yes, like permissions. You know what it is.
  • di β€” returns the parent inode, if the inode is delegated. Conditional return! We love a maybe πŸ™ˆ

πŸ’– DESCRIPTION πŸ’–

Create a new file. Literally that's the description. Simple, iconic, no notes.

but here's the part you actually need to remember, bestie:

If the inode has been found through an idmapped mount, the idmap of the vfsmount must be passed through idmap. Not optional. Not a vibe. Pass it. This function will then take care to map the inode according to idmap before checking permissions. Safety first, permission checks second πŸ’…

On non-idmapped mounts, or if permission checking is to be performed on the raw inode, simply pass nop_mnt_idmap. That's your get-out-of-jail card. Easy. Slay.

⚠️ fr fr do not skip the idmap arg if you're on an idmapped mount β€” the whole permission-checking situation depends on it and it will not be cute if you get it wrong 😭

🧚 SEE ALSO 🧚

Kernel file ./fs/namei.c β€” and okay bestie, buckle up, because the friend group here is huge. Every single one of these:

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), 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)

Like I said. The whole group chat. Go read some of them, iykyk πŸ”₯


πŸ“ mwah, that's the page! this one came out of ./fs, dated October 2026 β€” go drink some water and go create some files responsibly, bestie πŸ’œπŸ‘‘
πŸ“¦ where this page comes from