vbdev_lvol: add function to retrive spdk_lvol from bdev

Previously there was no way to get and verify that ctxt
in bdev was actually an lvol.
This will be used in rpc calls for vbdev_lvol.

Change-Id: I01c50487b740f5bb858dc50e609f023c8b4101ad
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-on: https://review.gerrithub.io/398178
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
Tomasz Zawadzki 2018-02-02 05:23:39 -05:00 committed by Jim Harris
parent daf33a0921
commit bf7ae80f09
2 changed files with 18 additions and 0 deletions

View File

@ -937,6 +937,22 @@ vbdev_lvs_examine(struct spdk_bdev *bdev)
spdk_lvs_load(bs_dev, _vbdev_lvs_examine_cb, req);
}
struct spdk_lvol *
vbdev_lvol_get_from_bdev(struct spdk_bdev *bdev)
{
if (!bdev || bdev->module != SPDK_GET_BDEV_MODULE(lvol)) {
return NULL;
}
if (bdev->ctxt == NULL) {
SPDK_ERRLOG("No lvol ctx assigned to bdev %s\n", bdev->name);
return NULL;
}
return (struct spdk_lvol *)bdev->ctxt;
}
SPDK_BDEV_MODULE_REGISTER(lvol, vbdev_lvs_init, NULL, NULL, vbdev_lvs_get_ctx_size,
vbdev_lvs_examine)
SPDK_LOG_REGISTER_COMPONENT("vbdev_lvol", SPDK_LOG_VBDEV_LVOL);

View File

@ -78,4 +78,6 @@ struct spdk_lvol_store *vbdev_get_lvol_store_by_name(const char *name);
*/
struct lvol_store_bdev *vbdev_get_lvs_bdev_by_lvs(struct spdk_lvol_store *lvs);
struct spdk_lvol *vbdev_lvol_get_from_bdev(struct spdk_bdev *bdev);
#endif /* SPDK_VBDEV_LVOL_H */