fs/ntfs3/frecord.c
Source file repositories/reference/linux-study-clean/fs/ntfs3/frecord.c
File Facts
- System
- Linux kernel
- Corpus path
fs/ntfs3/frecord.c- Extension
.c- Size
- 74662 bytes
- Lines
- 3305
- 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/fiemap.hlinux/fs.hlinux/minmax.hlinux/vmalloc.hdebug.hntfs.hntfs_fs.hlib/lib.h
Detected Declarations
function Copyrightfunction ni_add_mifunction ni_remove_mifunction ni_clearfunction ni_load_mi_exfunction ni_load_mifunction ni_load_all_mifunction ni_add_subrecordfunction ni_remove_attrfunction ni_ins_new_attrfunction ni_repackfunction ni_try_remove_attr_listfunction ni_create_attr_listfunction ni_ins_attr_extfunction ni_insert_attrfunction ni_expand_mft_listfunction ni_expand_listfunction ni_insert_nonresidentfunction ni_insert_residentfunction ni_remove_attr_lefunction ni_delete_allfunction le32_to_cpufunction ni_new_attr_flagsfunction ni_parse_reparsefunction ni_read_folio_cmprfunction ni_decompress_filefunction decompress_lzx_xpressfunction ni_read_framefunction ni_write_framefunction ni_remove_namefunction ni_remove_name_undofunction ni_add_namefunction ni_renamefunction ni_is_dirtyfunction ntfs_llseekfunction ni_write_parentsfunction ni_update_parentfunction ni_write_inodefunction ni_allocate_da_blocksfunction ni_allocate_da_blocks_locked
Annotated Snippet
if (ni->file.offs_folio) {
/* On-demand allocated page for offsets. */
folio_put(ni->file.offs_folio);
ni->file.offs_folio = NULL;
}
#endif
}
mi_clear(&ni->mi);
}
/*
* ni_load_mi_ex - Find mft_inode by record number.
*/
int ni_load_mi_ex(struct ntfs_inode *ni, CLST rno, struct mft_inode **mi)
{
int err;
struct mft_inode *r;
r = ni_find_mi(ni, rno);
if (r)
goto out;
err = mi_get(ni->mi.sbi, rno, &r);
if (err) {
_ntfs_bad_inode(&ni->vfs_inode);
return err;
}
ni_add_mi(ni, r);
out:
if (mi)
*mi = r;
return 0;
}
/*
* ni_load_mi - Load mft_inode corresponded list_entry.
*/
int ni_load_mi(struct ntfs_inode *ni, const struct ATTR_LIST_ENTRY *le,
struct mft_inode **mi)
{
CLST rno;
if (!le) {
*mi = &ni->mi;
return 0;
}
rno = ino_get(&le->ref);
if (rno == ni->mi.rno) {
*mi = &ni->mi;
return 0;
}
return ni_load_mi_ex(ni, rno, mi);
}
/*
* ni_find_attr
*
* Return: Attribute and record this attribute belongs to.
*/
struct ATTRIB *ni_find_attr(struct ntfs_inode *ni, struct ATTRIB *attr,
struct ATTR_LIST_ENTRY **le_o, enum ATTR_TYPE type,
const __le16 *name, u8 name_len, const CLST *vcn,
struct mft_inode **mi)
{
struct ATTR_LIST_ENTRY *le;
struct mft_inode *m;
if (!ni->attr_list.size ||
(!name_len && (type == ATTR_LIST || type == ATTR_STD))) {
if (le_o)
*le_o = NULL;
if (mi)
*mi = &ni->mi;
/* Look for required attribute in primary record. */
return mi_find_attr(ni, &ni->mi, attr, type, name, name_len,
NULL);
}
/* First look for list entry of required type. */
le = al_find_ex(ni, le_o ? *le_o : NULL, type, name, name_len, vcn);
if (!le)
return NULL;
if (le_o)
*le_o = le;
Annotation
- Immediate include surface: `linux/fiemap.h`, `linux/fs.h`, `linux/minmax.h`, `linux/vmalloc.h`, `debug.h`, `ntfs.h`, `ntfs_fs.h`, `lib/lib.h`.
- Detected declarations: `function Copyright`, `function ni_add_mi`, `function ni_remove_mi`, `function ni_clear`, `function ni_load_mi_ex`, `function ni_load_mi`, `function ni_load_all_mi`, `function ni_add_subrecord`, `function ni_remove_attr`, `function ni_ins_new_attr`.
- 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.