vfs_get_link(9)
π vfs_get_link(9) β the Kernel API Manual, bestie edition π
okay so real talk, this is vfs_get_link from the Kernel API Manual (vfs_get_link(9), yes the name literally repeats, we love a consistent queen π). she's a little function with one job and honestly? she ate.
β¨ NAME β¨
vfs_get_link β get symlink body π¦
like, that's it. that's the whole personality. she gets you the body of a symbolic link. slay.
πΈ SYNOPSIS πΈ
const char * vfs_get_link (struct dentry *dentry , struct delayed_call *done );
look at her signature, so clean, so iconic β¨
π ARGUMENTS π
dentryβ the dentry on which to get symbolic link. this is your main character, the thing you're asking about πdoneβ the caller needs to free returned data with this. yes, really. you own the cleanup, bestie. it's giving "you break it you bought it" π«Ά
π DESCRIPTION π
okay so here's the vibe: vfs_get_link calls the security hook and i_op->get_link on the supplied inode. both of them. no cap. π₯
it does not touch atime. ngl that's lowkey important β that's up to the caller if necessary. so if you want the access time updated, that's on you, not her π
and she does not work on "special" symlinks like /proc/$$/fd/N. like, at all. not her department, not her problem, don't @ her π
fr fr check that last one before you ship β "special" symlinks are a hard no here, and there's no vibe check that'll save you.
π¦ SEE ALSO π¦
Kernel file ./fs/namei.c β and honestly the whole extended friend group, because she knows everyone π
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_readlink(9)page_get_link(9)page_put_link(9)
like, that's the whole group chat and every single one of them is invited π
okay that's the page!! π final vibes check: this whole situation lives in the ./fs directory, dated October 2026, and the manual version is vfs_get_link(9) β that's the source, the directory and the date all in one cute little sign-off, mwah π see u next manpage 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