I/O Request Scheduling
struct bio_rqueue { struct list_head list; uint64_t request_count; bool dirty;};struct bio_rqueue referenced types:
struct bio_scheduler { struct generic_disk *disk; struct mutex lock; uint64_t total_requests; struct bio_rqueue queues[BIO_SCHED_LEVELS]; bool defer_pending;};struct bio_scheduler referenced types:
struct bio_scheduler_ops { bool (*should_coalesce)(struct generic_disk *dev, const struct bio_request *a, const struct bio_request *b); void (*do_coalesce)(struct generic_disk *dev, struct bio_request *into, struct bio_request *from); void (*reorder)(struct generic_disk *dev); uint32_t max_wait_time[BIO_SCHED_LEVELS]; uint32_t dispatch_threshold; uint64_t boost_occupance_limit[BIO_SCHED_LEVELS]; uint64_t tick_ms; uint64_t min_wait_ms;};void update_request_timestamp(struct bio_request *req);update_request_timestamp referenced types:
bool submit_if_urgent(struct bio_scheduler *sched, struct bio_request *req);submit_if_urgent referenced types:
bool sched_is_empty(struct bio_scheduler *sched);sched_is_empty referenced types:
bool submit_if_skip_sched(struct bio_scheduler *sched, struct bio_request *req);submit_if_skip_sched referenced types:
Defines
Section titled “Defines”#define BIO_SCHED_LEVELS 5#define BIO_SCHED_MAX (BIO_SCHED_LEVELS - 1)#define BIO_SCHED_STARVATION_BOOST 1#define BIO_SCHED_BOOST_SHIFT_LIMIT 4#define BIO_SCHED_COALESCE_SCAN_LIMIT 8#define BIO_SCHED_MAX_BOOST_SCAN 32#define BIO_SCHED_MAX_COALESCES 4