vfs_readlink(9)
π vfs_readlink β the kernel API manual, but make it make sense
okay so bestie, welcome to vfs_readlink(9) β yes that's a section 9 kernel page, we're in the deep end now and honestly? iconic. Let's get into it π«Ά
β¨ NAME β¨
vfs_readlink β literally just copies the body of a symlink into a userspace buffer. that's the whole vibe. no notes. π
π¦ SYNOPSIS π¦
int vfs_readlink (struct dentry *dentry , char __user *buffer , int
buflen );
three args, one int coming back at you, slay π
πΈ ARGUMENTS πΈ
dentryβ the dentry you're asking to spill the symbolic link tea β this is the one you want the link target frombufferβ user memory pointer, aka where the answer goes. it's__user, so mind your manners πbuflenβ size of buffer. the actual how-much-room-you-got situation π
β DESCRIPTION β
so here's the thing, bestie β there are two whole things this function does NOT do, and they're lowkey the most important part:
- It does not touch
atime. that's up to the caller if necessary β like genuinely, if you need it updated, that's your problem, not hers π - It does not call the security hook. nope. not doing it. if you wanted that you're at the wrong function, no cap π
that's literally it, she's a small function with big main character energy π
π₯ SEE ALSO π₯
the kernel file ./fs/namei.c says hi, and here is the entire group chat β every single one of these, in order, no skips:
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_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_get_link(9),page_get_link(9),page_put_link(9)
like, that's the whole friend group, everybody showed up to the party π
ngl if you skip the "does not touch atime" and "does not call security hook" lines you're gonna have a bad time β those aren't decoration, they're the whole personality π
and that's the page!! π she's from ./fs, dated October 2026, and she's filed under vfs_readlink(9) β mwah, go read a symlink, 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