Maximum Data Transfer Size indicates the maximum data transfer size for a command that transfers data between memory and the controller. SPDK NVMe driver will split IO request based on MDTS and stripe boundary, however, if user submited a big enough IO size, SPDK NVMe driver will run out of requests data structure and return -EINVAL as the error code, it's OK for application who call SPDK NVMe driver directly. SPDK bdev module also will do similar split based on `max_segment_size` and `max_num_segments`, but we don't set them for bdev/nvme driver, once there was a big enough IO request, the NVMe driver will return -EINVAL to bdev module, here we set `max_segment_size` based on MDTS and set `max_num_segments` based on number of requests of NVMe controller. Fix #2403. Change-Id: Ic6e14a0b12413783597122285ac648b87e1f1e16 Signed-off-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12186 Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com> Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com> |
||
---|---|---|
.. | ||
accel | ||
bdev | ||
blob | ||
blobfs | ||
env_dpdk | ||
event | ||
scheduler | ||
sock | ||
Makefile |