STRUCT BFQ_SERVICE_TREE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct bfq_service_tree(9) πŸ’–

okay so welcome to the Kernel API Manual, bestie β€” this is the struct bfq_service_tree(9) page, and it's giving per-class scheduler realness ✨

πŸ’– NAME πŸ’–

struct bfq_service_tree β€” per ioprio_class service tree. That's the whole name vibe πŸŽ€

✨ SYNOPSIS ✨

Here's the struct, no cap β€” fields exactly as they are, don't touch a character:

       struct bfq_service_tree {
           struct rb_root active;
           struct rb_root idle;
           struct bfq_entity *first_idle;
           struct bfq_entity *last_idle;
           u64 vtime;
           unsigned long wsum;
        };

🫢 Members 🫢

No extra per-member notes here β€” the member lineup is the struct up in SYNOPSIS, and that's it. The squad is all right there πŸ’…

🌸 Description 🌸

Each service tree represents a B-WF2Q+ scheduler on its own. That's the main-character energy: one scheduler per tree, no sharing.

Every ioprio_class has its own independent scheduler, and so its own bfq_service_tree. Independent means independent, bestie β€” they're not sharing a scheduler.

All the fields are protected by the queue lock of the containing bfqd. So yeah, lock discipline is the vibe check here 🫢

πŸ”₯ SEE ALSO πŸ”₯

Kernel file ./block/bfq-iosched.h β€” go peek, iykyk:

  • struct bfq_sched_data(9)
  • struct bfq_weight_counter(9)
  • struct bfq_entity(9)
  • struct bfq_ttime(9)
  • struct bfq_queue(9)
  • struct bfq_io_cq(9)
  • struct bfq_data(9)
  • struct bfq_group(9)

mwah πŸ’‹ β€” this little page came from the ./block source, dated October 2026, and it's all about struct bfq_service_tree(9). Periodt πŸŽ€

πŸ“¦ where this page comes from