This patch fixes submission of partial IOs in bottom adapter
Existing check (if offset > 0) was not sufficient to detect partial IOs
because there could be an IO with offset = 0 but length < total size of iovs.
This patch changes the check, but also free operation on completion
because now the old free does not cover all situations when we allocate iovs.
`Partial IOs` are the IOs handled by bottom adapter
which specify only part of the internal iovs vector.
So their length is less that the length of internal iovs vector.
They exist because sometimes parts of single IO from top adapter
need to be sent to different locations.
Also, in general, IOs initiated by OCF (such as cleaner IOs) are represented
as single big iov that is submitted by parts in form of 'Partial IOs'.
Signed-off-by: Vitaliy Mysak <vitaliy.mysak@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/455821 (master)
(cherry picked from commit 2bfa860dfe)
Change-Id: I8ae47659fb34904c593a696d74d683a418ac9962
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/457587
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>