Skip to content
Luca Miccio edited this page Sep 17, 2019 · 7 revisions

This repository contains the development version of the BFQ I/O scheduler.

The production version of BFQ is available in Linux since 4.12, only for the new blk-mq version of the block layer.

The development version of BFQ for a given kernel version differs from the production version in that:

  • it contains commits not available for that kernel version;
  • it contains a lot of consistency checks to detect possible malfunctions.

Depending on the kernel version, development versions of BFQ are available in two different forms in this repository.

First, up to kernels 4.19.X, both the legacy (single-queue) and the blk-mq versions of the block layer were available. And we made BFQ for both versions of the block layer. So, to try to reduce confusion, in this repo we added these variants of BFQ in the branches based on kernels up to 4.19:

  • bfq-sq: development version of BFQ for legacy block
  • bfq-mq: development version of BFQ for blk-mq

IOW, up to 4.19, you find three versions of BFQ: the production version, named bfq, plus two development versions, named bfq-sq and bfq-mq.

Things change from kernel 5.0 onwards. Since the legacy block layer is not available any longer, and therefore there can be no bfq-sq, and since the production version of bfq lags much less in terms of important commits, compared to the development version of bfq, the development branches do not contain an additional bfq-mq scheduler, but simply the additional commits that turn the production version into the development version, leaving the name unchanged. IOW, in each branch, there is still only one BFQ, named bfq. But this bfq is more powerful and consistency-checked than the production version.

Clone this wiki locally