fs/xfs/xfs_inode_item.h
Source file repositories/reference/linux-study-clean/fs/xfs/xfs_inode_item.h
File Facts
- System
- Linux kernel
- Corpus path
fs/xfs/xfs_inode_item.h- Extension
.h- Size
- 2279 bytes
- Lines
- 63
- 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.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
- No C-style include directives detected by the generator.
Detected Declarations
struct xfs_bufstruct xfs_bmbt_recstruct xfs_inodestruct xfs_mountstruct xfs_inode_log_itemfunction xfs_inode_clean
Annotated Snippet
struct xfs_inode_log_item {
struct xfs_log_item ili_item; /* common portion */
struct xfs_inode *ili_inode; /* inode ptr */
unsigned short ili_lock_flags; /* inode lock flags */
unsigned int ili_dirty_flags; /* dirty in current tx */
/*
* The ili_lock protects the interactions between the dirty state and
* the flush state of the inode log item. This allows us to do atomic
* modifications of multiple state fields without having to hold a
* specific inode lock to serialise them.
*
* We need atomic changes between inode dirtying, inode flushing and
* inode completion, but these all hold different combinations of
* ILOCK and IFLUSHING and hence we need some other method of
* serialising updates to the flush state.
*/
spinlock_t ili_lock; /* flush state lock */
unsigned int ili_last_fields; /* fields when flushed */
unsigned int ili_fields; /* fields to be logged */
xfs_lsn_t ili_flush_lsn; /* lsn at last flush */
/*
* We record the sequence number for every inode modification, as
* well as those that only require fdatasync operations for data
* integrity. This allows optimisation of the O_DSYNC/fdatasync path
* without needing to track what modifications the journal is currently
* carrying for the inode. These are protected by the above ili_lock.
*/
xfs_csn_t ili_commit_seq; /* last transaction commit */
xfs_csn_t ili_datasync_seq; /* for datasync optimisation */
};
static inline int xfs_inode_clean(struct xfs_inode *ip)
{
return !ip->i_itemp || !(ip->i_itemp->ili_fields & XFS_ILOG_ALL);
}
extern void xfs_inode_item_init(struct xfs_inode *, struct xfs_mount *);
extern void xfs_inode_item_destroy(struct xfs_inode *);
extern void xfs_iflush_abort(struct xfs_inode *);
extern void xfs_iflush_shutdown_abort(struct xfs_inode *);
int xfs_inode_item_format_convert(struct kvec *buf,
struct xfs_inode_log_format *in_f);
extern struct kmem_cache *xfs_ili_cache;
#endif /* __XFS_INODE_ITEM_H__ */
Annotation
- Detected declarations: `struct xfs_buf`, `struct xfs_bmbt_rec`, `struct xfs_inode`, `struct xfs_mount`, `struct xfs_inode_log_item`, `function xfs_inode_clean`.
- 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.