vfs_create(9)
π 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
- 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