fs/9p/vfs_dentry.c
Source file repositories/reference/linux-study-clean/fs/9p/vfs_dentry.c
File Facts
- System
- Linux kernel
- Corpus path
fs/9p/vfs_dentry.c- Extension
.c- Size
- 5794 bytes
- Lines
- 229
- Domain
- Core OS
- Bucket
- VFS And Filesystem Core
- Inferred role
- Core OS: implementation source
- Status
- source implementation candidate
Why This File Exists
Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Uses kernel synchronization; read lock ordering, sleepability, and interrupt context assumptions before translating.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/module.hlinux/errno.hlinux/fs.hlinux/file.hlinux/pagemap.hlinux/stat.hlinux/string.hlinux/namei.hlinux/sched.hlinux/slab.hnet/9p/9p.hnet/9p/client.hv9fs.hv9fs_vfs.hfid.h
Detected Declarations
function Copyrightfunction v9fs_ndentry_refresh_timeoutfunction v9fs_cached_dentry_deletefunction __v9fs_dentry_fid_removefunction v9fs_dentry_fid_removefunction v9fs_dentry_initfunction v9fs_dentry_releasefunction __v9fs_lookup_revalidatefunction v9fs_lookup_revalidatefunction v9fs_dentry_unalias_trylockfunction v9fs_dentry_unalias_unlock
Annotated Snippet
if (IS_ERR(fid)) {
p9_debug(
P9_DEBUG_VFS,
"v9fs_fid_lookup: dentry = %pd (%p), got error %pe\n",
dentry, dentry, fid);
return PTR_ERR(fid);
}
v9ses = v9fs_inode2v9ses(inode);
if (v9fs_proto_dotl(v9ses))
retval = v9fs_refresh_inode_dotl(fid, inode);
else
retval = v9fs_refresh_inode(fid, inode);
p9_fid_put(fid);
if (retval == -ENOENT) {
p9_debug(P9_DEBUG_VFS, "dentry: %pd (%p) invalidated due to ENOENT\n",
dentry, dentry);
return 0;
}
if (v9inode->cache_validity & V9FS_INO_INVALID_ATTR) {
p9_debug(P9_DEBUG_VFS, "dentry: %pd (%p) invalidated due to type change\n",
dentry, dentry);
return 0;
}
if (retval < 0) {
p9_debug(P9_DEBUG_VFS,
"refresh inode: dentry = %pd (%p), got error %pe\n",
dentry, dentry, ERR_PTR(retval));
return retval;
}
}
p9_debug(P9_DEBUG_VFS, "dentry: %pd (%p) is valid\n", dentry, dentry);
return 1;
}
static int v9fs_lookup_revalidate(struct inode *dir, const struct qstr *name,
struct dentry *dentry, unsigned int flags)
{
return __v9fs_lookup_revalidate(dentry, flags);
}
static bool v9fs_dentry_unalias_trylock(const struct dentry *dentry)
{
struct v9fs_session_info *v9ses = v9fs_dentry2v9ses(dentry);
return down_write_trylock(&v9ses->rename_sem);
}
static void v9fs_dentry_unalias_unlock(const struct dentry *dentry)
{
struct v9fs_session_info *v9ses = v9fs_dentry2v9ses(dentry);
up_write(&v9ses->rename_sem);
}
const struct dentry_operations v9fs_cached_dentry_operations = {
.d_revalidate = v9fs_lookup_revalidate,
.d_weak_revalidate = __v9fs_lookup_revalidate,
.d_delete = v9fs_cached_dentry_delete,
.d_init = v9fs_dentry_init,
.d_release = v9fs_dentry_release,
.d_unalias_trylock = v9fs_dentry_unalias_trylock,
.d_unalias_unlock = v9fs_dentry_unalias_unlock,
};
const struct dentry_operations v9fs_dentry_operations = {
.d_init = v9fs_dentry_init,
.d_release = v9fs_dentry_release,
.d_unalias_trylock = v9fs_dentry_unalias_trylock,
.d_unalias_unlock = v9fs_dentry_unalias_unlock,
};
Annotation
- Immediate include surface: `linux/module.h`, `linux/errno.h`, `linux/fs.h`, `linux/file.h`, `linux/pagemap.h`, `linux/stat.h`, `linux/string.h`, `linux/namei.h`.
- Detected declarations: `function Copyright`, `function v9fs_ndentry_refresh_timeout`, `function v9fs_cached_dentry_delete`, `function __v9fs_dentry_fid_remove`, `function v9fs_dentry_fid_remove`, `function v9fs_dentry_init`, `function v9fs_dentry_release`, `function __v9fs_lookup_revalidate`, `function v9fs_lookup_revalidate`, `function v9fs_dentry_unalias_trylock`.
- Atlas domain: Core OS / VFS And Filesystem Core.
- Implementation status: source implementation candidate.
- Synchronization appears in or near this file; preserve lock ordering, sleepability, and interrupt-context constraints.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.