linux/drivers/nvme/host
Jens Axboe 943e942e62 nvme-pci: limit max IO size and segments to avoid high order allocations
nvme requires an sg table allocation for each request. If the request
is large, then the allocation can become quite large. For instance,
with our default software settings of 1280KB IO size, we'll need
10248 bytes of sg table. That turns into a 2nd order allocation,
which we can't always guarantee. If we fail the allocation, blk-mq
will retry it later. But there's no guarantee that we'll EVER be
able to allocate that much contigious memory.

Limit the IO size such that we never need more than a single page
of memory. That's a lot faster and more reliable. Then back that
allocation with a mempool, so that we know we'll always be able
to succeed the allocation at some point.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
Acked-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
2018-06-21 18:59:46 +02:00
..
Kconfig IB: Revert "remove redundant INFINIBAND kconfig dependencies" 2018-05-28 10:40:16 -06:00
Makefile nvme: Add fault injection feature 2018-03-26 08:53:43 -06:00
core.c nvme-pci: limit max IO size and segments to avoid high order allocations 2018-06-21 18:59:46 +02:00
fabrics.c nvme-fabrics: fix and refine state checks in __nvmf_check_ready 2018-06-15 11:21:00 +02:00
fabrics.h nvme-fabrics: handle the admin-only case properly in nvmf_check_ready 2018-06-15 11:21:00 +02:00
fault_inject.c nvme: Add fault injection feature 2018-03-26 08:53:43 -06:00
fc.c nvme-fc: release io queues to allow fast fail 2018-06-21 09:31:28 +02:00
lightnvm.c lightnvm: remove function name in strings 2018-03-29 17:29:09 -06:00
multipath.c nvme: add bio remapping tracepoint 2018-06-11 16:17:46 +02:00
nvme.h nvme-pci: limit max IO size and segments to avoid high order allocations 2018-06-21 18:59:46 +02:00
pci.c nvme-pci: limit max IO size and segments to avoid high order allocations 2018-06-21 18:59:46 +02:00
rdma.c nvme-rdma: don't override opts->queue_size 2018-06-20 14:20:51 +02:00
trace.c nvme: add tracepoint for nvme_setup_cmd 2018-01-26 12:34:40 +01:00
trace.h nvme: change order of qid and cmdid in completion trace 2018-04-26 13:30:08 -06:00