block: add cgroups, kconfig and build bits for BFQ Add a Kconfig option and do the related Makefile changes to compile the BFQ I/O scheduler. Also let the cgroups subsystem know about the BFQ I/O controller. Signed-off-by: Fabio Checconi <fabio@gandalf.sssup.it> Signed-off-by: Paolo Valente <paolo.valente@unimore.it> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/block/Kconfig.iosched b/block/Kconfig.iosched index 7e803fc8..f0681b3 100644 --- a/block/Kconfig.iosched +++ b/block/Kconfig.iosched
@@ -40,6 +40,27 @@ working environment, suitable for desktop systems. This is the default I/O scheduler. +config IOSCHED_BFQ + tristate "BFQ I/O scheduler" + depends on EXPERIMENTAL + default n + ---help--- + The BFQ I/O scheduler tries to distribute bandwidth among + all processes in the system, according to their weights, + which can be set using task ioprio values. It aims at giving + deterministic guarantees on the distribution of the service + provided. If compiled built-in (saying Y here), BFQ can + be configured to support hierarchical scheduling. + +config CGROUP_BFQIO + bool "BFQ hierarchical scheduling support" + depends on CGROUPS && IOSCHED_BFQ=y + default n + ---help--- + Enable hierarchical scheduling in BFQ, using the cgroups + filesystem interface. The name of the subsystem will be + bfqio. + choice prompt "Default I/O scheduler" default DEFAULT_CFQ @@ -56,6 +77,9 @@ config DEFAULT_CFQ bool "CFQ" if IOSCHED_CFQ=y + config DEFAULT_BFQ + bool "BFQ" if IOSCHED_BFQ=y + config DEFAULT_NOOP bool "No-op" @@ -66,6 +90,7 @@ default "anticipatory" if DEFAULT_AS default "deadline" if DEFAULT_DEADLINE default "cfq" if DEFAULT_CFQ + default "bfq" if DEFAULT_BFQ default "noop" if DEFAULT_NOOP endmenu
diff --git a/block/Makefile b/block/Makefile index bfe7304..90889da 100644 --- a/block/Makefile +++ b/block/Makefile
@@ -12,6 +12,7 @@ obj-$(CONFIG_IOSCHED_AS) += as-iosched.o obj-$(CONFIG_IOSCHED_DEADLINE) += deadline-iosched.o obj-$(CONFIG_IOSCHED_CFQ) += cfq-iosched.o +obj-$(CONFIG_IOSCHED_BFQ) += bfq-iosched.o obj-$(CONFIG_BLK_DEV_IO_TRACE) += blktrace.o obj-$(CONFIG_BLOCK_COMPAT) += compat_ioctl.o
diff --git a/include/linux/cgroup_subsys.h b/include/linux/cgroup_subsys.h index 9c22396..a091c1c2 100644 --- a/include/linux/cgroup_subsys.h +++ b/include/linux/cgroup_subsys.h
@@ -54,3 +54,9 @@ #endif /* */ + +#ifdef CONFIG_CGROUP_BFQIO +SUBSYS(bfqio) +#endif + +/* */