From 73c8b61cac111a61b2412089d250dadbe5f2c764 Mon Sep 17 00:00:00 2001 From: Jim Harris Date: Wed, 5 Sep 2018 15:07:38 -0700 Subject: [PATCH] bdev: free bdev_io in write_zeroes emulation When emulating write_zeroes commands on device that don't natively support it, we submit a write with a zeroed buffer. We used to just reuse the original bdev_io, but that was recently changed due to other splitting code added for iovs. But when making those changes, we forgot to free the bdev_io for the write that was sent down to the device. Fixes: 183f37e8 (bdev: do not reuse bdev_io when...) Signed-off-by: Jim Harris Change-Id: If08782c65f6305c0a9f9d15d74fd8823e1158e9b Reviewed-on: https://review.gerrithub.io/424733 Reviewed-by: Paul Luse Reviewed-by: Changpeng Liu Reviewed-by: Xiaodong Liu Reviewed-by: Ben Walker Tested-by: SPDK CI Jenkins Chandler-Test-Pool: SPDK Automated Test System --- lib/bdev/bdev.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/bdev/bdev.c b/lib/bdev/bdev.c index ac28472fe..b49f2661b 100644 --- a/lib/bdev/bdev.c +++ b/lib/bdev/bdev.c @@ -3447,6 +3447,8 @@ _spdk_bdev_write_zero_buffer_done(struct spdk_bdev_io *bdev_io, bool success, vo { struct spdk_bdev_io *parent_io = cb_arg; + spdk_bdev_free_io(bdev_io); + if (!success) { parent_io->internal.status = SPDK_BDEV_IO_STATUS_FAILED; parent_io->internal.cb(parent_io, SPDK_BDEV_IO_STATUS_FAILED, parent_io->internal.caller_ctx);