+10
−5
Loading
In case of a DSM Deallocate (unmap) with multiple ranges, individual bdev IOs are submitted for each range. If the bdev IO cannot be allocated, the request is queued on io_wait_queue; however previously submitted ranges may complete before memory is available for the next range. In such a case, the completion callback will free unmap_ctx, while the request is still queued for memory - causing a segfault when the request is dequeued. To fix, introduce a new field tracking the unmap ranges, and make sure the count is nonzero when the request is queued for memory. Signed-off-by:Yair Elharrar <yair@excelero.com> Change-Id: Ifcac018f14af5ca408c7793ca9543c1e2d63b777 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/447542 Reviewed-by:
Jim Harris <james.r.harris@intel.com> Reviewed-by:
Changpeng Liu <changpeng.liu@intel.com> Reviewed-by:
Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Tested-by:
SPDK CI Jenkins <sys_sgci@intel.com>