drivers/md/dm-vdo/io-submitter.h
Source file repositories/reference/linux-study-clean/drivers/md/dm-vdo/io-submitter.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/md/dm-vdo/io-submitter.h- Extension
.h- Size
- 1917 bytes
- Lines
- 64
- 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/bio.hconstants.htypes.h
Detected Declarations
struct io_submitterfunction vdo_submit_metadata_viofunction vdo_submit_metadata_vio_with_sizefunction vdo_submit_flush_vio
Annotated Snippet
#ifndef VDO_IO_SUBMITTER_H
#define VDO_IO_SUBMITTER_H
#include <linux/bio.h>
#include "constants.h"
#include "types.h"
struct io_submitter;
int vdo_make_io_submitter(unsigned int thread_count, unsigned int rotation_interval,
unsigned int max_requests_active, struct vdo *vdo,
struct io_submitter **io_submitter);
void vdo_cleanup_io_submitter(struct io_submitter *io_submitter);
void vdo_free_io_submitter(struct io_submitter *io_submitter);
void vdo_submit_vio(struct vdo_completion *completion);
void vdo_submit_data_vio(struct data_vio *data_vio);
void __submit_metadata_vio(struct vio *vio, physical_block_number_t physical,
bio_end_io_t callback, vdo_action_fn error_handler,
blk_opf_t operation, char *data, int size);
static inline void vdo_submit_metadata_vio(struct vio *vio, physical_block_number_t physical,
bio_end_io_t callback, vdo_action_fn error_handler,
blk_opf_t operation)
{
__submit_metadata_vio(vio, physical, callback, error_handler,
operation, vio->data, vio->block_count * VDO_BLOCK_SIZE);
}
static inline void vdo_submit_metadata_vio_with_size(struct vio *vio,
physical_block_number_t physical,
bio_end_io_t callback,
vdo_action_fn error_handler,
blk_opf_t operation,
int size)
{
__submit_metadata_vio(vio, physical, callback, error_handler,
operation, vio->data, size);
}
static inline void vdo_submit_flush_vio(struct vio *vio, bio_end_io_t callback,
vdo_action_fn error_handler)
{
/* FIXME: Can we just use REQ_OP_FLUSH? */
__submit_metadata_vio(vio, 0, callback, error_handler,
REQ_OP_WRITE | REQ_PREFLUSH, NULL, 0);
}
int vdo_submit_metadata_vio_wait(struct vio *vio,
physical_block_number_t physical,
blk_opf_t operation);
#endif /* VDO_IO_SUBMITTER_H */
Annotation
- Immediate include surface: `linux/bio.h`, `constants.h`, `types.h`.
- Detected declarations: `struct io_submitter`, `function vdo_submit_metadata_vio`, `function vdo_submit_metadata_vio_with_size`, `function vdo_submit_flush_vio`.
- 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.