Budget Fair Queueing (BFQ) Storage-I/O Scheduler

BFQ is currently available in two forms:

  1. production: present in Linux from 4.12.0, as one of the I/O schedulers for the multi-queue block layer (blk-mq);
  2. development: in the bfq-mq GitHub repository; up to Linux 4.19 this version is available for both the legacy and the multi-queue block layers, as two additional I/O schedulers, named, respectively, bfq-sq-iosched and bfq-mq-iosched. For newer kernels, branches just contain commits that turn the production version of the scheduler into the development one, with no name change. Check the branches in bfq-mq to find out the kernel releases for which the development version is being maintained.

In the following archive you can still find old BFQ versions for the legacy block layer, as patchsets for Linux kernel sources from 2.6.32 (plus some old patches for the zen kernel). These are new versions of BFQ with respect to the initial ones you can find on Fabio's site. The most recent BFQ version you can find here is 4.11.0-v8r11.

Incremental patches to move from a version of BFQ to the following one, or from a version for a given kernel release to the same version for the following kernel release, can be found in previous_versions_revisions/incremental_patches. In addition, every directory named only with a kernel release number contains the latest version of BFQ for that release. Existing older versions of BFQ for these kernels can be found in previous_versions_revisions.

Other pages about BFQ and mirrors: http://bfq.teambelgium.net/, http://ponce.cc/mirror/bfq_disk_sched/patches/ (also available via rsync: rsync://ponce.cc/mirror/bfq_disk_sched/patches/), https://bfq.io/.

For each full patchset see README.BFQ for a diffstat and for a brief changelog. Moreover, a list of known bugs and untested functionalities is here.

If useful, here is an example of how to add a BFQ version to a git Linux tree, starting from scratch and using git am.