I/O Request Scheduling
| Member Type | Member Name |
|---|---|
struct list_head | list |
uint64_t | request_count |
bool | dirty |
| Member Type | Member Name |
|---|---|
struct generic_disk | *disk |
struct spinlock | lock |
uint64_t | total_requests |
struct bio_rqueue | queues[BIO_SCHED_LEVELS] |
bool | defer_pending |
boolnoop_should_coalesce(struct generic_disk*disk,struct bio_request*a,struct bio_request*b)voidnoop_do_coalesce(struct generic_disk*disk,struct bio_request*into,struct bio_request*from)voidnoop_reorder(struct generic_disk*disk)voidbio_sched_enqueue(struct generic_disk*disk,struct bio_request*req)voidbio_sched_dequeue(struct generic_disk*disk,struct bio_request*req,bool already_locked)voidbio_sched_enqueue_internal(struct bio_scheduler*sched,struct bio_request*req)voidbio_sched_dequeue_internal(struct bio_scheduler*sched,struct bio_request*req)voidbio_sched_dispatch_partial(struct generic_disk*disk,enum bio_request_priorityprio)voidbio_sched_dispatch_all(struct generic_disk*disk)voidbio_sched_try_early_dispatch(struct bio_scheduler*sched)boolbio_sched_try_coalesce(struct bio_scheduler*sched)boolbio_sched_boost_starved(struct bio_scheduler*sched)struct bio_scheduler *bio_sched_create(struct generic_disk*disk,struct bio_scheduler_ops*ops)static inline voidupdate_request_timestamp(struct bio_request*req)static inline boolsubmit_if_urgent(struct bio_scheduler*sched,struct bio_request*req)static inline boolsched_is_empty(struct bio_scheduler*sched)static inline boolsubmit_if_skip_sched(struct bio_scheduler*sched,struct bio_request*req)
Defines
Section titled “Defines”BIO_SCHED_LEVELS:5BIO_SCHED_MAX:(BIO_SCHED_LEVELS - 1)BIO_SCHED_STARVATION_BOOST:1BIO_SCHED_BOOST_SHIFT_LIMIT:4BIO_SCHED_COALESCE_SCAN_LIMIT:8BIO_SCHED_MAX_BOOST_SCAN:32BIO_SCHED_MAX_COALESCES:4