Commit a70a0009 authored by Sebastian Basierski's avatar Sebastian Basierski Committed by Daniel Verkamp
Browse files

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



Also added vbdev_get_lvol_by_unique_id function.

Change-Id: I55a64df008c23c0fedb8a59ef67e2c356097e780
Signed-off-by: default avatarSebastian Basierski <sebastianx.basierski@intel.com>
Reviewed-on: https://review.gerrithub.io/392658


Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
parent 3f41a8e5
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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;
+13 −13
Original line number Diff line number Diff line
@@ -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:

+18 −18
Original line number Diff line number Diff line
@@ -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;
	}
+10 −10
Original line number Diff line number Diff line
@@ -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);