Skip to content

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:

#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