__start_renaming(9)
π __start_renaming(9) β from the Kernel API Manual, bestie edition π
okay so real talk, this one lives in the Kernel API Manual and honestly? it's lowkey the setup queen of the rename saga π
β¨ NAME β¨
__start_renaming β the girl who looks up and locks names for rename. that's it, that's the job π«Ά
β¨ SYNOPSIS β¨
int __start_renaming (struct renamedata *rd , int lookup_flags , struct
qstr *old_last , struct qstr *new_last );
β¨ ARGUMENTS β¨
rdβ the rename data π it's carrying the parents and the flags, and it's also the one receiving the found dentries. main character energy fr.lookup_flagsβ extra flags you pass straight to->lookup(likeLOOKUP_REVAL,LOOKUP_NO_SYMLINKSetc). yes those exact ones, iykyk.old_lastβ the name of the object inrd.old_parent.new_lastβ the name of the object inrd.new_parent.
β¨ DESCRIPTION β¨
So what it does is: it looks up two names and makes sure the locks are actually in place for rename. two names, one vibe check, no cap π
On success β and only on success, okay β the found dentries get stored in rd.old_dentry and rd.new_dentry, and an extra ref is taken on rd.old_parent π Those references and the lock get dropped later by end_renaming. so don't you dare forget it β¨
Also super important: the qstrs you pass in must have their hash calculated already (it's giving "do your homework before class"), and no permission checking is performed. none. zero. not a crumb π
β¨ RETURN β¨
zero, or an error. that's the whole mood π
β¨ SEE ALSO β¨
all of these icons from the Kernel file ./fs/namei.c, in the exact order the original served them, periodt:
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_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 and before you go β this whole page is brought to you by the source ./fs and it's dated October 2026, so mark your calendars bestie ποΈπ mwah, go lock some names, you're gonna slay πβ¨
π¦ 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