5d718951a6
There is one existing example usage case to describe the issue: Users(e.g. Vhost-blk target with Windows Guest) call spdk_bdev_readv_blocks() to submit a 128KiB length data READ request, and the data buffer provides by vhost isn't aligned, but the backend block device requires aligned data buffer, so existing function call trace: spdk_bdev_readv_blocks()--> spdk_bdev_io_submit()--> spdk_bdev_io_get_buf() spdk_bdev_io_get_buf() will allocate buffer from large data buffer pool for 128KiB length, of course, it will return error with existing logic. So here, no matter what the data length is, we can go through the split process first for both READ and WRITE. However, there is one scenario that for iSCSI READ request, the iSCSI layer will not allocate data buffer for the request, so for this case if the IO boundary is required we should keep the logic as before. Change-Id: I67661f5fa4c3c7c561b45c86146759aa3477adbf Signed-off-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/453133 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>