bdev: Renamed lvol->old_name to lvol->unique_id

Also added vbdev_get_lvol_by_unique_id function.

Change-Id: I55a64df008c23c0fedb8a59ef67e2c356097e780
Signed-off-by: Sebastian Basierski <sebastianx.basierski@intel.com>
Reviewed-on: https://review.gerrithub.io/392658
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
Sebastian Basierski 2017-12-21 10:50:52 +01:00 committed by Daniel Verkamp
parent 3f41a8e506
commit a70a000997
4 changed files with 42 additions and 42 deletions

View File

@ -99,7 +99,7 @@ struct spdk_lvol {
struct spdk_blob *blob;
uint64_t num_clusters;
spdk_blob_id blob_id;
char *old_name;
char *unique_id;
char name[SPDK_LVOL_NAME_MAX];
bool close_only;
struct spdk_bdev *bdev;

View File

@ -368,7 +368,7 @@ vbdev_get_lvol_store_by_name(const char *name)
}
static struct spdk_lvol *
vbdev_get_lvol_by_name(const char *name)
vbdev_get_lvol_by_unique_id(const char *name)
{
struct spdk_lvol *lvol, *tmp_lvol;
struct lvol_store_bdev *lvs_bdev, *tmp_lvs_bdev;
@ -378,7 +378,7 @@ vbdev_get_lvol_by_name(const char *name)
continue;
}
TAILQ_FOREACH_SAFE(lvol, &lvs_bdev->lvs->lvols, link, tmp_lvol) {
if (!strcmp(lvol->old_name, name)) {
if (!strcmp(lvol->unique_id, name)) {
return lvol;
}
}
@ -427,14 +427,14 @@ _vbdev_lvol_destroy_after_close_cb(void *cb_arg, int lvserrno)
struct spdk_bdev *bdev = lvol->bdev;
if (lvserrno != 0) {
SPDK_INFOLOG(SPDK_LOG_VBDEV_LVOL, "Could not close Lvol %s\n", lvol->old_name);
SPDK_INFOLOG(SPDK_LOG_VBDEV_LVOL, "Could not close Lvol %s\n", lvol->unique_id);
spdk_bdev_unregister_done(bdev, lvserrno);
free(bdev->name);
free(bdev);
return;
}
SPDK_INFOLOG(SPDK_LOG_VBDEV_LVOL, "Lvol %s closed, begin destroying\n", lvol->old_name);
SPDK_INFOLOG(SPDK_LOG_VBDEV_LVOL, "Lvol %s closed, begin destroying\n", lvol->unique_id);
spdk_lvol_destroy(lvol, _vbdev_lvol_destroy_cb, bdev);
}
@ -659,13 +659,13 @@ _create_lvol_disk(struct spdk_lvol *lvol)
uint64_t total_size;
int rc;
if (!lvol->old_name) {
if (!lvol->unique_id) {
return NULL;
}
lvs_bdev = vbdev_get_lvs_bdev_by_lvs(lvol->lvol_store);
if (lvs_bdev == NULL) {
SPDK_ERRLOG("No spdk lvs-bdev pair found for lvol %s\n", lvol->old_name);
SPDK_ERRLOG("No spdk lvs-bdev pair found for lvol %s\n", lvol->unique_id);
return NULL;
}
@ -765,7 +765,7 @@ vbdev_lvol_resize(char *name, size_t sz,
uint64_t cluster_size;
int rc;
lvol = vbdev_get_lvol_by_name(name);
lvol = vbdev_get_lvol_by_unique_id(name);
if (lvol == NULL) {
SPDK_ERRLOG("lvol '%s' does not exist\n", name);
return -ENODEV;
@ -816,29 +816,29 @@ _vbdev_lvs_examine_finish(void *cb_arg, struct spdk_lvol *lvol, int lvolerrno)
struct spdk_bdev *bdev;
if (lvolerrno != 0) {
SPDK_ERRLOG("Error opening lvol %s\n", lvol->old_name);
SPDK_ERRLOG("Error opening lvol %s\n", lvol->unique_id);
TAILQ_REMOVE(&lvs->lvols, lvol, link);
lvs->lvol_count--;
free(lvol->old_name);
free(lvol->unique_id);
free(lvol);
goto end;
}
bdev = _create_lvol_disk(lvol);
if (bdev == NULL) {
SPDK_ERRLOG("Cannot create bdev for lvol %s\n", lvol->old_name);
SPDK_ERRLOG("Cannot create bdev for lvol %s\n", lvol->unique_id);
TAILQ_REMOVE(&lvs->lvols, lvol, link);
lvs->lvol_count--;
spdk_blob_close(lvol->blob, _vbdev_lvol_close_cb, lvs);
SPDK_INFOLOG(SPDK_LOG_VBDEV_LVOL, "Opening lvol %s failed\n", lvol->old_name);
free(lvol->old_name);
SPDK_INFOLOG(SPDK_LOG_VBDEV_LVOL, "Opening lvol %s failed\n", lvol->unique_id);
free(lvol->unique_id);
free(lvol);
return;
}
lvol->bdev = bdev;
lvs->lvols_opened++;
SPDK_INFOLOG(SPDK_LOG_VBDEV_LVOL, "Opening lvol %s succeeded\n", lvol->old_name);
SPDK_INFOLOG(SPDK_LOG_VBDEV_LVOL, "Opening lvol %s succeeded\n", lvol->unique_id);
end:

View File

@ -88,7 +88,7 @@ _spdk_lvol_open_cb(void *cb_arg, struct spdk_blob *blob, int lvolerrno)
struct spdk_lvol *lvol = req->lvol;
if (lvolerrno != 0) {
SPDK_INFOLOG(SPDK_LOG_LVOL, "Failed to open lvol %s\n", lvol->old_name);
SPDK_INFOLOG(SPDK_LOG_LVOL, "Failed to open lvol %s\n", lvol->unique_id);
goto end;
}
@ -192,8 +192,8 @@ _spdk_load_next_lvol(void *cb_arg, struct spdk_blob *blob, int lvolerrno)
lvol->num_clusters = spdk_blob_get_num_clusters(blob);
lvol->close_only = false;
uuid_unparse(lvol->lvol_store->uuid, uuid);
lvol->old_name = spdk_sprintf_alloc("%s_%"PRIu64, uuid, (uint64_t)blob_id);
if (!lvol->old_name) {
lvol->unique_id = spdk_sprintf_alloc("%s_%"PRIu64, uuid, (uint64_t)blob_id);
if (!lvol->unique_id) {
SPDK_ERRLOG("Cannot assign lvol name\n");
free(lvol);
req->lvserrno = -ENOMEM;
@ -203,7 +203,7 @@ _spdk_load_next_lvol(void *cb_arg, struct spdk_blob *blob, int lvolerrno)
rc = spdk_blob_get_xattr_value(blob, "name", (const void **)&attr, &value_len);
if (rc != 0 || value_len > SPDK_LVOL_NAME_MAX) {
SPDK_ERRLOG("Cannot assign lvol name\n");
free(lvol->old_name);
free(lvol->unique_id);
free(lvol);
req->lvserrno = -EINVAL;
goto invalid;
@ -215,7 +215,7 @@ _spdk_load_next_lvol(void *cb_arg, struct spdk_blob *blob, int lvolerrno)
lvs->lvol_count++;
SPDK_INFOLOG(SPDK_LOG_LVOL, "added lvol %s\n", lvol->old_name);
SPDK_INFOLOG(SPDK_LOG_LVOL, "added lvol %s\n", lvol->unique_id);
spdk_bs_iter_next(bs, blob, _spdk_load_next_lvol, req);
@ -224,7 +224,7 @@ _spdk_load_next_lvol(void *cb_arg, struct spdk_blob *blob, int lvolerrno)
invalid:
TAILQ_FOREACH_SAFE(lvol, &lvs->lvols, link, tmp) {
TAILQ_REMOVE(&lvs->lvols, lvol, link);
free(lvol->old_name);
free(lvol->unique_id);
free(lvol);
}
@ -641,7 +641,7 @@ spdk_lvs_unload(struct spdk_lvol_store *lvs, spdk_lvs_op_complete cb_fn,
TAILQ_FOREACH_SAFE(lvol, &lvs->lvols, link, tmp) {
TAILQ_REMOVE(&lvs->lvols, lvol, link);
free(lvol->old_name);
free(lvol->unique_id);
free(lvol);
}
@ -723,7 +723,7 @@ spdk_lvs_destroy(struct spdk_lvol_store *lvs, spdk_lvs_op_complete cb_fn,
}
TAILQ_FOREACH_SAFE(iter_lvol, &lvs->lvols, link, tmp) {
free(iter_lvol->old_name);
free(iter_lvol->unique_id);
free(iter_lvol);
}
@ -753,7 +753,7 @@ _spdk_lvol_close_blob_cb(void *cb_arg, int lvolerrno)
if (lvolerrno < 0) {
SPDK_ERRLOG("Could not close blob on lvol\n");
free(lvol->old_name);
free(lvol->unique_id);
free(lvol);
goto end;
}
@ -768,7 +768,7 @@ _spdk_lvol_close_blob_cb(void *cb_arg, int lvolerrno)
lvol->action_in_progress = false;
SPDK_INFOLOG(SPDK_LOG_LVOL, "Lvol %s closed\n", lvol->old_name);
SPDK_INFOLOG(SPDK_LOG_LVOL, "Lvol %s closed\n", lvol->unique_id);
if (lvol->lvol_store->destruct_req && all_lvols_closed == true) {
if (!lvol->lvol_store->destruct) {
@ -790,7 +790,7 @@ _spdk_lvol_delete_blob_cb(void *cb_arg, int lvolerrno)
if (lvolerrno < 0) {
SPDK_ERRLOG("Could not delete blob on lvol\n");
free(lvol->old_name);
free(lvol->unique_id);
free(lvol);
goto end;
}
@ -803,9 +803,9 @@ _spdk_lvol_delete_blob_cb(void *cb_arg, int lvolerrno)
}
}
SPDK_INFOLOG(SPDK_LOG_LVOL, "Lvol %s deleted\n", lvol->old_name);
SPDK_INFOLOG(SPDK_LOG_LVOL, "Lvol %s deleted\n", lvol->unique_id);
free(lvol->old_name);
free(lvol->unique_id);
free(lvol);
end:
@ -824,14 +824,14 @@ _spdk_lvol_destroy_cb(void *cb_arg, int lvolerrno)
if (lvolerrno < 0) {
SPDK_ERRLOG("Could not delete blob on lvol\n");
free(lvol->old_name);
free(lvol->unique_id);
free(lvol);
lvol_req->cb_fn(lvol_req->cb_arg, lvolerrno);
free(lvol_req);
free(req);
return;
}
SPDK_INFOLOG(SPDK_LOG_LVOL, "Blob closed on lvol %s\n", lvol->old_name);
SPDK_INFOLOG(SPDK_LOG_LVOL, "Blob closed on lvol %s\n", lvol->unique_id);
spdk_bs_delete_blob(bs, lvol->blob_id, _spdk_lvol_delete_blob_cb, req);
}
@ -871,8 +871,8 @@ _spdk_lvol_create_open_cb(void *cb_arg, struct spdk_blob *blob, int lvolerrno)
lvol->blob_id = blob_id;
uuid_unparse(lvol->lvol_store->uuid, uuid);
lvol->old_name = spdk_sprintf_alloc("%s_%"PRIu64, uuid, (uint64_t)blob_id);
if (!lvol->old_name) {
lvol->unique_id = spdk_sprintf_alloc("%s_%"PRIu64, uuid, (uint64_t)blob_id);
if (!lvol->unique_id) {
spdk_blob_close(blob, _spdk_lvol_delete_blob_cb, lvol);
SPDK_ERRLOG("Cannot alloc memory for lvol name\n");
lvolerrno = -ENOMEM;
@ -1064,7 +1064,7 @@ spdk_lvol_destroy(struct spdk_lvol *lvol, spdk_lvol_op_complete cb_fn, void *cb_
}
if (lvol->ref_count != 0) {
SPDK_ERRLOG("Cannot destroy lvol %s because it is still open\n", lvol->old_name);
SPDK_ERRLOG("Cannot destroy lvol %s because it is still open\n", lvol->unique_id);
cb_fn(cb_arg, -EBUSY);
return;
}

View File

@ -196,7 +196,7 @@ spdk_lvs_unload(struct spdk_lvol_store *lvs, spdk_lvs_op_complete cb_fn, void *c
TAILQ_FOREACH_SAFE(lvol, &lvs->lvols, link, tmp) {
TAILQ_REMOVE(&lvs->lvols, lvol, link);
free(lvol->old_name);
free(lvol->unique_id);
free(lvol);
}
g_lvol_store = NULL;
@ -219,7 +219,7 @@ spdk_lvs_destroy(struct spdk_lvol_store *lvs, spdk_lvs_op_complete cb_fn,
TAILQ_FOREACH_SAFE(lvol, &lvs->lvols, link, tmp) {
TAILQ_REMOVE(&lvs->lvols, lvol, link);
free(lvol->old_name);
free(lvol->unique_id);
free(lvol);
}
g_lvol_store = NULL;
@ -307,7 +307,7 @@ spdk_lvol_destroy(struct spdk_lvol *lvol, spdk_lvol_op_complete cb_fn, void *cb_
}
}
g_lvol = NULL;
free(lvol->old_name);
free(lvol->unique_id);
free(lvol);
cb_fn(cb_arg, 0);
@ -443,8 +443,8 @@ _lvol_create(struct spdk_lvol_store *lvs)
lvol->lvol_store = lvs;
lvol->ref_count++;
lvol->old_name = spdk_sprintf_alloc("%s", "UNIT_TEST_UUID");
SPDK_CU_ASSERT_FATAL(lvol->old_name != NULL);
lvol->unique_id = spdk_sprintf_alloc("%s", "UNIT_TEST_UUID");
SPDK_CU_ASSERT_FATAL(lvol->unique_id != NULL);
TAILQ_INSERT_TAIL(&lvol->lvol_store->lvols, lvol, link);
@ -703,11 +703,11 @@ ut_lvol_resize(void)
g_base_bdev->ctxt = g_lvol;
g_base_bdev->name = spdk_sprintf_alloc("%s", g_lvol->old_name);
g_base_bdev->name = spdk_sprintf_alloc("%s", g_lvol->unique_id);
SPDK_CU_ASSERT_FATAL(g_base_bdev->name != NULL);
/* Successful lvol resize */
rc = vbdev_lvol_resize(g_lvol->old_name, 20, vbdev_lvol_resize_complete, NULL);
rc = vbdev_lvol_resize(g_lvol->unique_id, 20, vbdev_lvol_resize_complete, NULL);
CU_ASSERT(rc == 0);
CU_ASSERT(g_base_bdev->blockcnt == 20 * g_cluster_size / g_base_bdev->blocklen);
@ -716,9 +716,9 @@ ut_lvol_resize(void)
CU_ASSERT(rc != 0);
/* Resize with correct bdev name, but wrong lvol name */
free(g_lvol->old_name);
g_lvol->old_name = strdup("wrong name");
SPDK_CU_ASSERT_FATAL(g_lvol->old_name != NULL);
free(g_lvol->unique_id);
g_lvol->unique_id = strdup("wrong name");
SPDK_CU_ASSERT_FATAL(g_lvol->unique_id != NULL);
rc = vbdev_lvol_resize(g_base_bdev->name, 20, vbdev_lvol_resize_complete, NULL);
CU_ASSERT(rc != 0);