This series try to add support Weighted Round Robin for blkcg, and add some module parameters to enable nvme driver WRR. The first patch add an WRR infrastucture for block cgroup. The second patch add demon WRR for null_blk to similate nvme spec. The last two patched try to enable WRR for nvme driver. For nvme part, rename write_queues to read_queues that we can add the wrr_low/medium/high_queues easily to support WRR. To compatible with READ and POLL, DEFAULT, tagset mapping, this patch set these three types hardware submition queue's priority to medium. Changes since V1: * reorder HCTX_TYPE_POLL to the last one to adopt nvme driver easily. * add support WRR(Weighted Round Robin) for nvme driver Weiping Zhang (4): block: add weighted round robin for blkcgroup null_blk: add support weighted round robin submition queue genirq/affinity: allow driver's discontigous affinity set nvme: add support weighted round robin queue block/blk-cgroup.c | 88 +++++++++++++ block/blk-mq-debugfs.c | 3 + block/blk-mq-sched.c | 6 +- block/blk-mq-tag.c | 4 +- block/blk-mq-tag.h | 2 +- block/blk-mq.c | 12 +- block/blk-mq.h | 17 ++- block/blk.h | 2 +- drivers/block/null_blk.h | 7 + drivers/block/null_blk_main.c | 294 ++++++++++++++++++++++++++++++++++++++++-- drivers/nvme/host/pci.c | 195 ++++++++++++++++++++-------- include/linux/blk-cgroup.h | 2 + include/linux/blk-mq.h | 12 ++ include/linux/interrupt.h | 2 +- kernel/irq/affinity.c | 4 + 15 files changed, 574 insertions(+), 76 deletions(-) -- 2.14.1