if BLOCK

menu "IO Schedulers"

config IOSCHED_NOOP
	bool
	default y
	---help---
	  The no-op I/O scheduler is a minimal scheduler that does basic merging
	  and sorting. Its main uses include non-disk based block devices like
	  memory devices, and specialised software or hardware environments
	  that do their own scheduling and require only minimal assistance from
	  the kernel.

config IOSCHED_TEST
	tristate "Test I/O scheduler"
	depends on DEBUG_FS
	default m
	---help---
	  The test I/O scheduler is a duplicate of the noop scheduler with
	  addition of test utlity.
	  It allows testing a block device by dispatching specific requests
	  according to the test case and declare PASS/FAIL according to the
	  requests completion error code.

config IOSCHED_DEADLINE
	tristate "Deadline I/O scheduler"
	default y
	---help---
	  The deadline I/O scheduler is simple and compact. It will provide
	  CSCAN service with FIFO expiration of requests, switching to
	  a new point in the service tree and doing a batch of IO from there
	  in case of expiry.

config IOSCHED_ROW
	tristate "ROW I/O scheduler"
	default y
	---help---
	  The ROW I/O scheduler gives priority to READ requests over the
	  WRITE requests when dispatching, without starving WRITE requests.
	  Requests are kept in priority queues. Dispatching is done in a RR
	  manner when the dispatch quantum for each queue is calculated
	  according to queue priority.
	  Most suitable for mobile devices.

config IOSCHED_CFQ
	tristate "CFQ I/O scheduler"
	# If BLK_CGROUP is a module, CFQ has to be built as module.
	depends on (BLK_CGROUP=m && m) || !BLK_CGROUP || BLK_CGROUP=y
	default y
	---help---
	  The CFQ I/O scheduler tries to distribute bandwidth equally
	  among all processes in the system. It should provide a fair
	  and low latency working environment, suitable for both desktop
	  and server systems.

	  This is the default I/O scheduler.

	  Note: If BLK_CGROUP=m, then CFQ can be built only as module.

config CFQ_GROUP_IOSCHED
	bool "CFQ Group Scheduling support"
	depends on IOSCHED_CFQ && BLK_CGROUP
	default n
	---help---
	  Enable group IO scheduling in CFQ.

choice
	prompt "Default I/O scheduler"
	default DEFAULT_CFQ
	help
	  Select the I/O scheduler which will be used by default for all
	  block devices.

	config DEFAULT_DEADLINE
		bool "Deadline" if IOSCHED_DEADLINE=y

	config DEFAULT_ROW
		bool "ROW" if IOSCHED_ROW=y
		help
		  The ROW I/O scheduler gives priority to READ requests
		  over the WRITE requests when dispatching, without starving
		  WRITE requests. Requests are kept in priority queues.
		  Dispatching is done in a RR manner when the dispatch quantum
		  for each queue is defined according to queue priority.
		  Most suitable for mobile devices.

	config DEFAULT_CFQ
		bool "CFQ" if IOSCHED_CFQ=y

	config DEFAULT_NOOP
		bool "No-op"

endchoice

config DEFAULT_IOSCHED
	string
	default "deadline" if DEFAULT_DEADLINE
	default "row" if DEFAULT_ROW
	default "cfq" if DEFAULT_CFQ
	default "noop" if DEFAULT_NOOP

endmenu

endif
