fs/minix/namei.c
Source file repositories/reference/linux-study-clean/fs/minix/namei.c
File Facts
- System
- Linux kernel
- Corpus path
fs/minix/namei.c- Extension
.c- Size
- 6430 bytes
- Lines
- 292
- 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.
- 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
minix.h
Detected Declarations
function Copyrightfunction minix_mknodfunction minix_tmpfilefunction minix_createfunction minix_symlinkfunction minix_linkfunction minix_unlinkfunction minix_rmdirfunction minix_rename
Annotated Snippet
if (new_inode->i_nlink == 0 || (dir_de && new_inode->i_nlink != 2)) {
minix_error_inode(new_inode, "inode has corrupted nlink");
goto out_dir;
}
if (dir_de && old_dir->i_nlink <= 2) {
minix_error_inode(old_dir, "inode has corrupted nlink");
goto out_dir;
}
err = -ENOENT;
new_de = minix_find_entry(new_dentry, &new_folio);
if (!new_de)
goto out_dir;
err = minix_set_link(new_de, new_folio, old_inode);
folio_release_kmap(new_folio, new_de);
if (err)
goto out_dir;
inode_set_ctime_current(new_inode);
if (dir_de)
drop_nlink(new_inode);
inode_dec_link_count(new_inode);
} else {
err = minix_add_link(new_dentry, old_inode);
if (err)
goto out_dir;
if (dir_de)
inode_inc_link_count(new_dir);
}
err = minix_delete_entry(old_de, old_folio);
if (err)
goto out_dir;
mark_inode_dirty(old_inode);
if (dir_de) {
err = minix_set_link(dir_de, dir_folio, new_dir);
if (!err)
inode_dec_link_count(old_dir);
}
out_dir:
if (dir_de)
folio_release_kmap(dir_folio, dir_de);
out_old:
folio_release_kmap(old_folio, old_de);
out:
return err;
}
/*
* directories can handle most operations...
*/
const struct inode_operations minix_dir_inode_operations = {
.create = minix_create,
.lookup = minix_lookup,
.link = minix_link,
.unlink = minix_unlink,
.symlink = minix_symlink,
.mkdir = minix_mkdir,
.rmdir = minix_rmdir,
.mknod = minix_mknod,
.rename = minix_rename,
.getattr = minix_getattr,
.tmpfile = minix_tmpfile,
};
Annotation
- Immediate include surface: `minix.h`.
- Detected declarations: `function Copyright`, `function minix_mknod`, `function minix_tmpfile`, `function minix_create`, `function minix_symlink`, `function minix_link`, `function minix_unlink`, `function minix_rmdir`, `function minix_rename`.
- Atlas domain: Core OS / VFS And Filesystem Core.
- Implementation status: source implementation candidate.
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.