drivers/md/dm-vdo/logical-zone.h
Source file repositories/reference/linux-study-clean/drivers/md/dm-vdo/logical-zone.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/md/dm-vdo/logical-zone.h- Extension
.h- Size
- 2762 bytes
- Lines
- 90
- Domain
- Driver Families
- Bucket
- drivers/md
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/list.hadmin-state.hint-map.htypes.h
Detected Declarations
struct physical_zonestruct logical_zonestruct logical_zones
Annotated Snippet
struct logical_zone {
/* The completion for flush notifications */
struct vdo_completion completion;
/* The owner of this zone */
struct logical_zones *zones;
/* Which logical zone this is */
zone_count_t zone_number;
/* The thread id for this zone */
thread_id_t thread_id;
/* In progress operations keyed by LBN */
struct int_map *lbn_operations;
/* The logical to physical map */
struct block_map_zone *block_map_zone;
/* The current flush generation */
sequence_number_t flush_generation;
/*
* The oldest active generation in this zone. This is mutated only on the logical zone
* thread but is queried from the flusher thread.
*/
sequence_number_t oldest_active_generation;
/* The number of IOs in the current flush generation */
block_count_t ios_in_flush_generation;
/* The youngest generation of the current notification */
sequence_number_t notification_generation;
/* Whether a notification is in progress */
bool notifying;
/* The queue of active data write VIOs */
struct list_head write_vios;
/* The administrative state of the zone */
struct admin_state state;
/* The physical zone from which to allocate */
struct physical_zone *allocation_zone;
/* The number of allocations done from the current allocation_zone */
block_count_t allocation_count;
/* The next zone */
struct logical_zone *next;
};
struct logical_zones {
/* The vdo whose zones these are */
struct vdo *vdo;
/* The manager for administrative actions */
struct action_manager *manager;
/* The number of zones */
zone_count_t zone_count;
/* The logical zones themselves */
struct logical_zone zones[] __counted_by(zone_count);
};
int __must_check vdo_make_logical_zones(struct vdo *vdo,
struct logical_zones **zones_ptr);
void vdo_free_logical_zones(struct logical_zones *zones);
void vdo_drain_logical_zones(struct logical_zones *zones,
const struct admin_state_code *operation,
struct vdo_completion *completion);
void vdo_resume_logical_zones(struct logical_zones *zones,
struct vdo_completion *parent);
void vdo_increment_logical_zone_flush_generation(struct logical_zone *zone,
sequence_number_t expected_generation);
void vdo_acquire_flush_generation_lock(struct data_vio *data_vio);
void vdo_release_flush_generation_lock(struct data_vio *data_vio);
struct physical_zone * __must_check vdo_get_next_allocation_zone(struct logical_zone *zone);
void vdo_dump_logical_zone(const struct logical_zone *zone);
#endif /* VDO_LOGICAL_ZONE_H */
Annotation
- Immediate include surface: `linux/list.h`, `admin-state.h`, `int-map.h`, `types.h`.
- Detected declarations: `struct physical_zone`, `struct logical_zone`, `struct logical_zones`.
- Atlas domain: Driver Families / drivers/md.
- 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.