reduce: close backing dev during unload
Signed-off-by: Jim Harris <james.r.harris@intel.com> Change-Id: Id94095d2b7069a811ac63123ddd8c5d94f4b53a7 Reviewed-on: https://review.gerrithub.io/432502 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
parent
3981ba698b
commit
d912dba2cb
@ -205,6 +205,12 @@ spdk_reduce_vol_init(struct spdk_reduce_vol_params *params,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (backing_dev->close == NULL) {
|
||||||
|
SPDK_ERRLOG("backing_dev function pointer not specified\n");
|
||||||
|
cb_fn(cb_arg, NULL, -EINVAL);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
vol = calloc(1, sizeof(*vol));
|
vol = calloc(1, sizeof(*vol));
|
||||||
if (vol == NULL) {
|
if (vol == NULL) {
|
||||||
cb_fn(cb_arg, NULL, -ENOMEM);
|
cb_fn(cb_arg, NULL, -ENOMEM);
|
||||||
@ -243,6 +249,8 @@ spdk_reduce_vol_unload(struct spdk_reduce_vol *vol,
|
|||||||
vol->pm_file.close(&vol->pm_file);
|
vol->pm_file.close(&vol->pm_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vol->backing_dev->close(vol->backing_dev);
|
||||||
|
|
||||||
free(vol);
|
free(vol);
|
||||||
cb_fn(cb_arg, 0);
|
cb_fn(cb_arg, 0);
|
||||||
}
|
}
|
||||||
|
@ -43,6 +43,7 @@ static struct spdk_reduce_vol *g_vol;
|
|||||||
static int g_ziperrno;
|
static int g_ziperrno;
|
||||||
static char *g_volatile_pm_buf;
|
static char *g_volatile_pm_buf;
|
||||||
static char *g_persistent_pm_buf;
|
static char *g_persistent_pm_buf;
|
||||||
|
static bool g_backing_dev_closed;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
sync_pm_buf(const void *addr, size_t length)
|
sync_pm_buf(const void *addr, size_t length)
|
||||||
@ -240,11 +241,18 @@ init_failure(void)
|
|||||||
pm_file_destroy();
|
pm_file_destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
backing_dev_close(struct spdk_reduce_backing_dev *backing_dev)
|
||||||
|
{
|
||||||
|
g_backing_dev_closed = true;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
backing_dev_init(struct spdk_reduce_backing_dev *backing_dev, struct spdk_reduce_vol_params *params)
|
backing_dev_init(struct spdk_reduce_backing_dev *backing_dev, struct spdk_reduce_vol_params *params)
|
||||||
{
|
{
|
||||||
backing_dev->blocklen = params->backing_io_unit_size;
|
backing_dev->blocklen = params->backing_io_unit_size;
|
||||||
backing_dev->blockcnt = spdk_reduce_get_backing_device_size(params) / backing_dev->blocklen;
|
backing_dev->blockcnt = spdk_reduce_get_backing_device_size(params) / backing_dev->blocklen;
|
||||||
|
backing_dev->close = backing_dev_close;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -274,8 +282,10 @@ init_md(void)
|
|||||||
CU_ASSERT(memcmp(persistent_params, ¶ms, sizeof(params)) == 0);
|
CU_ASSERT(memcmp(persistent_params, ¶ms, sizeof(params)) == 0);
|
||||||
|
|
||||||
g_ziperrno = -1;
|
g_ziperrno = -1;
|
||||||
|
g_backing_dev_closed = false;
|
||||||
spdk_reduce_vol_unload(g_vol, unload_cb, NULL);
|
spdk_reduce_vol_unload(g_vol, unload_cb, NULL);
|
||||||
CU_ASSERT(g_ziperrno == 0);
|
CU_ASSERT(g_ziperrno == 0);
|
||||||
|
CU_ASSERT(g_backing_dev_closed == true);
|
||||||
CU_ASSERT(g_volatile_pm_buf == NULL);
|
CU_ASSERT(g_volatile_pm_buf == NULL);
|
||||||
|
|
||||||
pm_file_destroy();
|
pm_file_destroy();
|
||||||
|
Loading…
Reference in New Issue
Block a user