fs/xfs/xfs_healthmon.h
Source file repositories/reference/linux-study-clean/fs/xfs/xfs_healthmon.h
File Facts
- System
- Linux kernel
- Corpus path
fs/xfs/xfs_healthmon.h- Extension
.h- Size
- 4603 bytes
- Lines
- 185
- 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_healthmonstruct xfs_healthmon_eventenum xfs_healthmon_typeenum xfs_healthmon_domain
Annotated Snippet
struct xfs_healthmon {
/*
* Weak reference to the xfs filesystem that is being monitored. It
* will be set to zero when the filesystem detaches from the monitor.
* Do not dereference this pointer.
*/
uintptr_t mount_cookie;
/*
* Device number of the filesystem being monitored. This is for
* consistent tracing even after unmount.
*/
dev_t dev;
/*
* Reference count of this structure. The open healthmon fd holds one
* ref, the xfs_mount holds another ref if it points to this object,
* and running event handlers hold their own refs.
*/
refcount_t ref;
/* lock for event list and event counters */
struct mutex lock;
/* list of event objects */
struct xfs_healthmon_event *first_event;
struct xfs_healthmon_event *last_event;
/* preallocated event for unmount */
struct xfs_healthmon_event *unmount_event;
/* number of events in the list */
unsigned int events;
/* do we want all events? */
bool verbose:1;
/* waiter so read/poll can sleep until the arrival of events */
struct wait_queue_head wait;
/*
* Buffer for formatting events for a read_iter call. Events are
* formatted into the buffer at bufhead, and buftail determines where
* to start a copy_iter to get those events to userspace. All buffer
* fields are protected by inode_lock.
*/
char *buffer;
size_t bufsize;
size_t bufhead;
size_t buftail;
/* did we lose previous events? */
unsigned long long lost_prev_event;
/* total counts of events observed and lost events */
unsigned long long total_events;
unsigned long long total_lost;
};
void xfs_healthmon_unmount(struct xfs_mount *mp);
enum xfs_healthmon_type {
XFS_HEALTHMON_RUNNING, /* monitor running */
XFS_HEALTHMON_LOST, /* message lost */
XFS_HEALTHMON_UNMOUNT, /* filesystem is unmounting */
/* filesystem shutdown */
XFS_HEALTHMON_SHUTDOWN,
/* metadata health events */
XFS_HEALTHMON_SICK, /* runtime corruption observed */
XFS_HEALTHMON_CORRUPT, /* fsck reported corruption */
XFS_HEALTHMON_HEALTHY, /* fsck reported healthy structure */
/* media errors */
XFS_HEALTHMON_MEDIA_ERROR,
/* file range events */
XFS_HEALTHMON_BUFREAD,
XFS_HEALTHMON_BUFWRITE,
XFS_HEALTHMON_DIOREAD,
XFS_HEALTHMON_DIOWRITE,
XFS_HEALTHMON_DATALOST,
};
enum xfs_healthmon_domain {
XFS_HEALTHMON_MOUNT, /* affects the whole fs */
/* metadata health events */
XFS_HEALTHMON_FS, /* main filesystem metadata */
Annotation
- Detected declarations: `struct xfs_healthmon`, `struct xfs_healthmon_event`, `enum xfs_healthmon_type`, `enum xfs_healthmon_domain`.
- 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.