lvol: hotremove support
This patch adds hotremove support of lvol base bdev Signed-off-by: Maciej Szwed <maciej.szwed@intel.com> Change-Id: I04dc7a0cc73fd6959824873f354d5c7db8c09a9b Reviewed-on: https://review.gerrithub.io/379348 Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com> Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
This commit is contained in:
parent
4338d3c9a7
commit
99ba2b25e6
@ -43,6 +43,21 @@ SPDK_DECLARE_BDEV_MODULE(lvol);
|
||||
static TAILQ_HEAD(, lvol_store_bdev) g_spdk_lvol_pairs = TAILQ_HEAD_INITIALIZER(
|
||||
g_spdk_lvol_pairs);
|
||||
|
||||
static void
|
||||
vbdev_lvs_hotremove_cb(void *ctx)
|
||||
{
|
||||
struct spdk_bdev *bdev = ctx;
|
||||
struct lvol_store_bdev *lvs_bdev, *tmp;
|
||||
|
||||
TAILQ_FOREACH_SAFE(lvs_bdev, &g_spdk_lvol_pairs, lvol_stores, tmp) {
|
||||
if (lvs_bdev) {
|
||||
if (lvs_bdev->bdev == bdev) {
|
||||
vbdev_lvs_destruct(lvs_bdev->lvs, NULL, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_vbdev_lvs_create_cb(void *cb_arg, struct spdk_lvol_store *lvs, int lvserrno)
|
||||
{
|
||||
@ -91,7 +106,7 @@ vbdev_lvs_create(struct spdk_bdev *base_bdev,
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
bs_dev = spdk_bdev_create_bs_dev(base_bdev, NULL, NULL);
|
||||
bs_dev = spdk_bdev_create_bs_dev(base_bdev, vbdev_lvs_hotremove_cb, base_bdev);
|
||||
if (!bs_dev) {
|
||||
SPDK_ERRLOG("Cannot create blobstore device\n");
|
||||
free(lvs_req);
|
||||
|
Loading…
x
Reference in New Issue
Block a user