nvme: utilize two queue maps, one for reads and one for writes
authorJens Axboe <axboe@kernel.dk>
Wed, 31 Oct 2018 14:36:31 +0000 (08:36 -0600)
committerJens Axboe <axboe@kernel.dk>
Wed, 7 Nov 2018 20:45:00 +0000 (13:45 -0700)
commit3b6592f70ad7b4c24dd3eb2ac9bbe3353d02c992
tree8b31ec8c238fd9dde740a64c81f3aedfecdfc5fe
parent843477d4cc5c4bb4e346c561ecd3b9d0bd67e8c8
nvme: utilize two queue maps, one for reads and one for writes

NVMe does round-robin between queues by default, which means that
sharing a queue map for both reads and writes can be problematic
in terms of read servicing. It's much easier to flood the queue
with writes and reduce the read servicing.

Implement two queue maps, one for reads and one for writes. The
write queue count is configurable through the 'write_queues'
parameter.

By default, we retain the previous behavior of having a single
queue set, shared between reads and writes. Setting 'write_queues'
to a non-zero value will create two queue sets, one for reads and
one for writes, the latter using the configurable number of
queues (hardware queue counts permitting).

Reviewed-by: Hannes Reinecke <hare@suse.com>
Reviewed-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
drivers/nvme/host/pci.c