diff --git a/module/bdev/lvol/vbdev_lvol.c b/module/bdev/lvol/vbdev_lvol.c index d001dc552..9cc4886f2 100644 --- a/module/bdev/lvol/vbdev_lvol.c +++ b/module/bdev/lvol/vbdev_lvol.c @@ -749,18 +749,19 @@ lvol_op_comp(void *cb_arg, int bserrno) { struct lvol_task *task = cb_arg; struct spdk_bdev_io *bdev_io = spdk_bdev_io_from_ctx(task); + enum spdk_bdev_io_status status = SPDK_BDEV_IO_STATUS_SUCCESS; if (bserrno != 0) { if (bserrno == -ENOMEM) { - task->status = SPDK_BDEV_IO_STATUS_NOMEM; + status = SPDK_BDEV_IO_STATUS_NOMEM; } else { - task->status = SPDK_BDEV_IO_STATUS_FAILED; + status = SPDK_BDEV_IO_STATUS_FAILED; } } SPDK_INFOLOG(SPDK_LOG_VBDEV_LVOL, "Vbdev processing callback on device %s with type %d\n", bdev_io->bdev->name, bdev_io->type); - spdk_bdev_io_complete(bdev_io, task->status); + spdk_bdev_io_complete(bdev_io, status); } static void @@ -773,8 +774,6 @@ lvol_unmap(struct spdk_lvol *lvol, struct spdk_io_channel *ch, struct spdk_bdev_ start_page = bdev_io->u.bdev.offset_blocks; num_pages = bdev_io->u.bdev.num_blocks; - task->status = SPDK_BDEV_IO_STATUS_SUCCESS; - SPDK_INFOLOG(SPDK_LOG_VBDEV_LVOL, "Vbdev doing unmap at offset %" PRIu64 " using %" PRIu64 " pages on device %s\n", start_page, num_pages, bdev_io->bdev->name); @@ -791,8 +790,6 @@ lvol_write_zeroes(struct spdk_lvol *lvol, struct spdk_io_channel *ch, struct spd start_page = bdev_io->u.bdev.offset_blocks; num_pages = bdev_io->u.bdev.num_blocks; - task->status = SPDK_BDEV_IO_STATUS_SUCCESS; - SPDK_INFOLOG(SPDK_LOG_VBDEV_LVOL, "Vbdev doing write zeros at offset %" PRIu64 " using %" PRIu64 " pages on device %s\n", start_page, num_pages, bdev_io->bdev->name); @@ -810,8 +807,6 @@ lvol_read(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev_io) start_page = bdev_io->u.bdev.offset_blocks; num_pages = bdev_io->u.bdev.num_blocks; - task->status = SPDK_BDEV_IO_STATUS_SUCCESS; - SPDK_INFOLOG(SPDK_LOG_VBDEV_LVOL, "Vbdev doing read at offset %" PRIu64 " using %" PRIu64 " pages on device %s\n", start_page, num_pages, bdev_io->bdev->name); @@ -829,8 +824,6 @@ lvol_write(struct spdk_lvol *lvol, struct spdk_io_channel *ch, struct spdk_bdev_ start_page = bdev_io->u.bdev.offset_blocks; num_pages = bdev_io->u.bdev.num_blocks; - task->status = SPDK_BDEV_IO_STATUS_SUCCESS; - SPDK_INFOLOG(SPDK_LOG_VBDEV_LVOL, "Vbdev doing write at offset %" PRIu64 " using %" PRIu64 " pages on device %s\n", start_page, num_pages, bdev_io->bdev->name); diff --git a/test/unit/lib/bdev/vbdev_lvol.c/vbdev_lvol_ut.c b/test/unit/lib/bdev/vbdev_lvol.c/vbdev_lvol_ut.c index d0ec4921c..0c1831f51 100644 --- a/test/unit/lib/bdev/vbdev_lvol.c/vbdev_lvol_ut.c +++ b/test/unit/lib/bdev/vbdev_lvol.c/vbdev_lvol_ut.c @@ -467,6 +467,7 @@ spdk_lvol_destroy(struct spdk_lvol *lvol, spdk_lvol_op_complete cb_fn, void *cb_ void spdk_bdev_io_complete(struct spdk_bdev_io *bdev_io, enum spdk_bdev_io_status status) { + bdev_io->internal.status = status; } struct spdk_io_channel *spdk_lvol_get_io_channel(struct spdk_lvol *lvol) @@ -1315,17 +1316,16 @@ ut_lvol_read_write(void) g_lvol = calloc(1, sizeof(struct spdk_lvol)); SPDK_CU_ASSERT_FATAL(g_lvol != NULL); - g_task = (struct lvol_task *)g_io->driver_ctx; g_io->bdev = g_base_bdev; g_io->bdev->ctxt = g_lvol; g_io->u.bdev.offset_blocks = 20; g_io->u.bdev.num_blocks = 20; lvol_read(g_ch, g_io); - CU_ASSERT(g_task->status == SPDK_BDEV_IO_STATUS_SUCCESS); + CU_ASSERT(g_io->internal.status = SPDK_BDEV_IO_STATUS_SUCCESS); lvol_write(g_lvol, g_ch, g_io); - CU_ASSERT(g_task->status == SPDK_BDEV_IO_STATUS_SUCCESS); + CU_ASSERT(g_io->internal.status = SPDK_BDEV_IO_STATUS_SUCCESS); free(g_io); free(g_base_bdev);