freebsd-skq/sys/dev/nvme
smh 0026debd97 Limit stripesize reported from nvd(4) to 4K
Intel NVMe controllers have a slow path for I/Os that span a 128KB stripe boundary but ZFS limits ashift, which is derived from d_stripesize, to 13 (8KB) so we limit the stripesize reported to geom(8) to 4KB.

This may result in a small number of additional I/Os to require splitting in nvme(4), however the NVMe I/O path is very efficient so these additional I/Os will cause very minimal (if any) difference in performance or CPU utilisation.

This can be controller by the new sysctl kern.nvme.max_optimal_sectorsize.

MFC after:	1 week
Sponsored by:	Multiplay
Differential Revision:	https://reviews.freebsd.org/D4446
2015-12-11 02:06:03 +00:00
..
nvme_ctrlr_cmd.c Use bitwise OR instead of logical OR when constructing value for 2014-06-10 21:40:43 +00:00
nvme_ctrlr.c Refactor unmapped buffer address handling. 2015-07-23 19:13:41 +00:00
nvme_ns_cmd.c
nvme_ns.c Limit stripesize reported from nvd(4) to 4K 2015-12-11 02:06:03 +00:00
nvme_private.h nvme: remove CHATHAM related code 2015-04-08 21:52:06 +00:00
nvme_qpair.c nvme: use BUS_SPACE_MAXSIZE for bus_dma_tag_create maxsize parameter 2015-04-09 00:37:55 +00:00
nvme_sysctl.c Limit stripesize reported from nvd(4) to 4K 2015-12-11 02:06:03 +00:00
nvme_test.c Extend some 32-bit fields and variables to 64-bit to prevent overflow 2013-10-08 15:47:22 +00:00
nvme_util.c
nvme.c nvme: do not notify a consumer about failures that occur during initialization 2015-07-29 21:29:50 +00:00
nvme.h Limit stripesize reported from nvd(4) to 4K 2015-12-11 02:06:03 +00:00