__start_renaming(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… __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 (like LOOKUP_REVAL, LOOKUP_NO_SYMLINKS etc). yes those exact ones, iykyk.
  • old_last β€” the name of the object in rd.old_parent.
  • new_last β€” the name of the object in rd.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