lvol: pass UUID as a string in public API

Modify the vbdev_get_lvol_store_by_uuid() API function to take the UUID
as a string instead of a uuid_t, since this simplifies the calling code.

This also allows us to remove #include <uuid/uuid.h> from the public
API, giving us the freedom to change the underlying UUID implementation
later if necessary without breaking API.

Change-Id: Ib360281f384f95722c5ab64e75dcf3603f826e4c
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/389893
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Maciej Szwed <maciej.szwed@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
Daniel Verkamp 2017-11-30 11:16:37 -07:00 committed by Jim Harris
parent f5acc37221
commit c6d32d39af
4 changed files with 21 additions and 14 deletions

View File

@ -40,7 +40,6 @@
#include "spdk/queue.h"
#include "spdk/blob.h"
#include <uuid/uuid.h>
struct spdk_lvol_store;
struct spdk_lvol;
@ -188,10 +187,11 @@ struct spdk_lvol *vbdev_get_lvol_by_name(const char *name);
/**
* \brief Search for handle lvolstore
* \param uuid UUID of lvolstore
* \param uuid_str UUID of lvolstore
* \return Handle to spdk_lvol_store or NULL if not found.
*/
struct spdk_lvol_store *vbdev_get_lvol_store_by_uuid(uuid_t uuid);
struct spdk_lvol_store *vbdev_get_lvol_store_by_uuid(const char *uuid_str);
/**
* \brief Search for handle to lvolstore
* \param name name of lvolstore

View File

@ -37,6 +37,8 @@
#include "spdk/lvol.h"
#include "spdk_internal/bdev.h"
#include <uuid/uuid.h>
/* Default size of blobstore cluster */
#define SPDK_LVS_OPTS_CLUSTER_SZ (1024 * 1024 * 1024)

View File

@ -281,8 +281,8 @@ vbdev_lvol_store_next(struct lvol_store_bdev *prev)
return lvs_bdev;
}
struct spdk_lvol_store *
vbdev_get_lvol_store_by_uuid(uuid_t uuid)
static struct spdk_lvol_store *
_vbdev_get_lvol_store_by_uuid(uuid_t uuid)
{
struct spdk_lvol_store *lvs = NULL;
struct lvol_store_bdev *lvs_bdev = vbdev_lvol_store_first();
@ -297,6 +297,18 @@ vbdev_get_lvol_store_by_uuid(uuid_t uuid)
return NULL;
}
struct spdk_lvol_store *
vbdev_get_lvol_store_by_uuid(const char *uuid_str)
{
uuid_t uuid;
if (uuid_parse(uuid_str, uuid)) {
return NULL;
}
return _vbdev_get_lvol_store_by_uuid(uuid);
}
struct spdk_lvol_store *
vbdev_get_lvol_store_by_name(const char *name)
{

View File

@ -50,8 +50,6 @@ static int
vbdev_get_lvol_store_by_uuid_xor_name(const char *uuid, const char *lvs_name,
struct spdk_lvol_store **lvs)
{
uuid_t lvol_store_uuid;
if ((uuid == NULL && lvs_name == NULL)) {
SPDK_INFOLOG(SPDK_TRACE_VBDEV_LVOL, "lvs UUID nor lvs name specified\n");
return -EINVAL;
@ -60,15 +58,10 @@ vbdev_get_lvol_store_by_uuid_xor_name(const char *uuid, const char *lvs_name,
lvs_name);
return -EINVAL;
} else if (uuid) {
if (uuid_parse(uuid, lvol_store_uuid)) {
SPDK_INFOLOG(SPDK_TRACE_VBDEV_LVOL, "incorrect UUID '%s'\n", uuid);
return -EINVAL;
}
*lvs = vbdev_get_lvol_store_by_uuid(lvol_store_uuid);
*lvs = vbdev_get_lvol_store_by_uuid(uuid);
if (*lvs == NULL) {
SPDK_INFOLOG(SPDK_TRACE_VBDEV_LVOL, "blobstore with UUID '%p' not found\n", &lvol_store_uuid);
SPDK_INFOLOG(SPDK_TRACE_VBDEV_LVOL, "blobstore with UUID '%s' not found\n", uuid);
return -ENODEV;
}
} else if (lvs_name) {