I/O Schedulers: add BFQ & VR
block/bfq-iosched.c: GCC 4.8.x compatibility fixup

Signed-off-by: Paul Reioux <reioux@gmail.com>

Conflicts:
	block/bfq-iosched.c

Change-Id: Ibcdc5481e715b8a7bc689c1dbfe4a739e56cb52d
block: fiops ioscheduler core FIOPS (Fair IOPS) ioscheduler is IOPS based ioscheduler, so only targets for drive without I/O seek. It's quite similar like CFQ, but the dispatch decision is made according to IOPS instead of slice.

The algorithm is simple. Drive has a service tree, and each task lives in
the tree. The key into the tree is called vios (virtual I/O). Every request
has vios, which is calculated according to its ioprio, request size and so
on. Task's vios is the sum of vios of all requests it dispatches. FIOPS
always selects task with minimum vios in the service tree and let the task
dispatch request. The dispatched request's vios is then added to the task's
vios and the task is repositioned in the sevice tree.

Unlike CFQ, FIOPS doesn't have separate sync/async queues, because with I/O
less writeback, usually a task can only dispatch either sync or async requests.
Bias read or write request can still be done with read/write scale.

One issue is if workload iodepth is lower than drive queue_depth, IOPS
share of a task might not be strictly according to its priority, request
size and so on. In this case, the drive is in idle actually. Solving the
problem need make drive idle, so impact performance. I believe CFQ isn't
completely fair between tasks in such case too.

Signed-off-by: Shaohua Li <shaohua.li@intel.com>

Conflicts:
	block/Makefile

Conflicts:
	block/Kconfig.iosched

Change-Id: I3d6ca28eed25b71a03cf292dc8b9a02d7b32ed17
block: add Kconfig & Makefile flags for VR iosched

Change-Id: Ib7eb15f62f9ec2c7b7fa055f147725e8cc8cfc70
block: add SIO iosched

Change-Id: I3d41ca5c944226a97b23952077bf83928e752ff0
defconfig: enable new I/O Schedulers (SIO, FIOPS, VR, BFQ)

Change-Id: I237b1986bb195ca31c986a754edc73341a5ec895
block: fix VR iosched

Change-Id: I1cb67c124048f09e60d9b8e52ec794858bcdd4f0