blkcg: add hash table for each throttle_group

Now blkcg has only 2 bio list to queue read/write bios, if a task sends out many bios
once a time, they will occupy the head position of queue and other tasks will have
little chance to proceed, so it has fairness problem for tasks.

This patch adds a 32 slot hash table for throttle group, and the bio is queued based
on hash value computed by its task pid. Meanwhile, while dispatching throttled bios,
we will selected bio from hash table in round-robin way.

Note, the function can be disabled by a later patch, this is done by modifying hash
function to return 0, then all bios will be queued only on slot 0, which is the same
behavior as before.

Signed-off-by: Sha Zhengju <handai.szj@alibaba-inc.com>
blkcg: special treatement for sequential bios

If blkcg finds the recent bios are sequential in access offset, it will only
charge once in order to try to make them merged by underlying block layer.
Now the number of sequential bio is 2, but can be tunable in next patch.

Signed-off-by: Sha Zhengju <handai.szj@alibaba-inc.com>
blkcg: add new interface to tune the number of sequential bios

Add a new cgroup file interface 'throttle.seq_bios_device' to tune the behavior
of blkcg. This can improve performence for applications which have sequential
access pattern. But the default value is 1, which means don't enable the features
(including hash table and consideration for seq-bios).

Signed-off-by: Sha Zhengju <handai.szj@alibaba-inc.com>
Merge pull request #70 from shazj99/iot_fairness

Io throttle fairness