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(
|
static TAILQ_HEAD(, lvol_store_bdev) g_spdk_lvol_pairs = TAILQ_HEAD_INITIALIZER(
|
||||||
g_spdk_lvol_pairs);
|
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
|
static void
|
||||||
_vbdev_lvs_create_cb(void *cb_arg, struct spdk_lvol_store *lvs, int lvserrno)
|
_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;
|
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) {
|
if (!bs_dev) {
|
||||||
SPDK_ERRLOG("Cannot create blobstore device\n");
|
SPDK_ERRLOG("Cannot create blobstore device\n");
|
||||||
free(lvs_req);
|
free(lvs_req);
|
||||||
|
Loading…
Reference in New Issue
Block a user