bdev: add getters for bdev name and product name

Change-Id: I6a75fada94fa845ecedd4cd8afc78f4259df14fe
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
Daniel Verkamp 2017-05-10 13:29:31 -07:00
parent 6973898164
commit 1bcf22cde1
22 changed files with 104 additions and 29 deletions

View File

@ -613,7 +613,7 @@ spdk_nvmf_construct_subsystem(const char *name,
}
SPDK_NOTICELOG("Attaching block device %s to subsystem %s\n",
bdev->name, subsystem->subnqn);
spdk_bdev_get_name(bdev), subsystem->subnqn);
}
}

View File

@ -199,6 +199,22 @@ bool spdk_bdev_io_type_supported(struct spdk_bdev *bdev, enum spdk_bdev_io_type
int spdk_bdev_dump_config_json(struct spdk_bdev *bdev, struct spdk_json_write_ctx *w);
/**
* Get block device name.
*
* \param bdev Block device to query.
* \return Name of bdev as a null-terminated string.
*/
const char *spdk_bdev_get_name(const struct spdk_bdev *bdev);
/**
* Get block device product name.
*
* \param bdev Block device to query.
* \return Product name of bdev as a null-terminated string.
*/
const char *spdk_bdev_get_product_name(const struct spdk_bdev *bdev);
/**
* Get minimum I/O buffer address alignment for a bdev.
*

View File

@ -83,7 +83,7 @@ spdk_rpc_construct_aio_bdev(struct spdk_jsonrpc_server_conn *conn,
w = spdk_jsonrpc_begin_result(conn, id);
spdk_json_write_array_begin(w);
spdk_json_write_string(w, bdev->name);
spdk_json_write_string(w, spdk_bdev_get_name(bdev));
spdk_json_write_array_end(w);
spdk_jsonrpc_end_result(conn, w);
return;

View File

@ -533,6 +533,18 @@ spdk_bdev_get_io_channel(struct spdk_bdev *bdev, uint32_t priority)
return spdk_get_io_channel(bdev, priority, false, NULL);
}
const char *
spdk_bdev_get_name(const struct spdk_bdev *bdev)
{
return bdev->name;
}
const char *
spdk_bdev_get_product_name(const struct spdk_bdev *bdev)
{
return bdev->product_name;
}
size_t
spdk_bdev_get_buf_align(const struct spdk_bdev *bdev)
{

View File

@ -74,7 +74,7 @@ spdk_rpc_construct_malloc_bdev(struct spdk_jsonrpc_server_conn *conn,
w = spdk_jsonrpc_begin_result(conn, id);
spdk_json_write_array_begin(w);
spdk_json_write_string(w, bdev->name);
spdk_json_write_string(w, spdk_bdev_get_name(bdev));
spdk_json_write_array_end(w);
spdk_jsonrpc_end_result(conn, w);
return;

View File

@ -85,7 +85,7 @@ spdk_rpc_construct_rbd_bdev(struct spdk_jsonrpc_server_conn *conn,
w = spdk_jsonrpc_begin_result(conn, id);
spdk_json_write_array_begin(w);
spdk_json_write_string(w, bdev->name);
spdk_json_write_string(w, spdk_bdev_get_name(bdev));
spdk_json_write_array_end(w);
spdk_jsonrpc_end_result(conn, w);
return;

View File

@ -60,10 +60,10 @@ spdk_rpc_get_bdevs(struct spdk_jsonrpc_server_conn *conn,
spdk_json_write_object_begin(w);
spdk_json_write_name(w, "name");
spdk_json_write_string(w, bdev->name);
spdk_json_write_string(w, spdk_bdev_get_name(bdev));
spdk_json_write_name(w, "product_name");
spdk_json_write_string(w, bdev->product_name);
spdk_json_write_string(w, spdk_bdev_get_product_name(bdev));
spdk_json_write_name(w, "block_size");
spdk_json_write_uint32(w, bdev->blocklen);

View File

@ -210,7 +210,7 @@ vbdev_split_dump_config_json(void *ctx, struct spdk_json_write_ctx *w)
spdk_json_write_object_begin(w);
spdk_json_write_name(w, "base_bdev");
spdk_json_write_string(w, split_disk->base_bdev->name);
spdk_json_write_string(w, spdk_bdev_get_name(split_disk->base_bdev));
spdk_json_write_name(w, "offset_blocks");
spdk_json_write_uint64(w, split_disk->offset_blocks);
@ -238,7 +238,7 @@ vbdev_split_create(struct spdk_bdev *base_bdev, uint64_t split_count, uint64_t s
struct split_base *split_base;
if (!spdk_bdev_claim(base_bdev, NULL, NULL)) {
SPDK_ERRLOG("Split bdev %s is already claimed\n", base_bdev->name);
SPDK_ERRLOG("Split bdev %s is already claimed\n", spdk_bdev_get_name(base_bdev));
return -1;
}
@ -268,7 +268,7 @@ vbdev_split_create(struct spdk_bdev *base_bdev, uint64_t split_count, uint64_t s
SPDK_TRACELOG(SPDK_TRACE_VBDEV_SPLIT, "base_bdev: %s split_count: %" PRIu64
" split_size_bytes: %" PRIu64 "\n",
base_bdev->name, split_count, split_size_bytes);
spdk_bdev_get_name(base_bdev), split_count, split_size_bytes);
split_base = calloc(1, sizeof(*split_base));
if (!split_base) {
@ -297,7 +297,7 @@ vbdev_split_create(struct spdk_bdev *base_bdev, uint64_t split_count, uint64_t s
d->disk.max_unmap_bdesc_count = base_bdev->max_unmap_bdesc_count;
/* Append partition number to the base bdev's name, e.g. Malloc0 -> Malloc0p0 */
snprintf(d->disk.name, sizeof(d->disk.name), "%sp%" PRIu64, base_bdev->name, i);
snprintf(d->disk.name, sizeof(d->disk.name), "%sp%" PRIu64, spdk_bdev_get_name(base_bdev), i);
snprintf(d->disk.product_name, sizeof(d->disk.product_name), "Split Disk");
d->base_bdev = base_bdev;
d->offset_bytes = offset_bytes;
@ -308,7 +308,7 @@ vbdev_split_create(struct spdk_bdev *base_bdev, uint64_t split_count, uint64_t s
SPDK_TRACELOG(SPDK_TRACE_VBDEV_SPLIT, "Split vbdev %s: base bdev: %s offset_bytes: "
"%" PRIu64 " offset_blocks: %" PRIu64 "\n",
d->disk.name, base_bdev->name, d->offset_bytes, d->offset_blocks);
d->disk.name, spdk_bdev_get_name(base_bdev), d->offset_bytes, d->offset_blocks);
vbdev_split_base_get_ref(split_base, d);

View File

@ -416,7 +416,7 @@ spdk_nvmf_subsystem_add_ns(struct spdk_nvmf_subsystem *subsystem, struct spdk_bd
if (!spdk_bdev_claim(bdev, spdk_nvmf_ctrlr_hot_remove, subsystem)) {
SPDK_ERRLOG("Subsystem %s: bdev %s is already claimed\n",
subsystem->subnqn, bdev->name);
subsystem->subnqn, spdk_bdev_get_name(bdev));
return -1;
}

View File

@ -71,7 +71,7 @@ static void nvmf_virtual_set_dsm(struct spdk_nvmf_session *session)
if (!spdk_bdev_io_type_supported(bdev, SPDK_BDEV_IO_TYPE_UNMAP)) {
SPDK_TRACELOG(SPDK_TRACE_NVMF,
"Subsystem%d Namespace %s does not support unmap - not enabling DSM\n",
i, bdev->name);
i, spdk_bdev_get_name(bdev));
return;
}
}

View File

@ -179,7 +179,7 @@ spdk_scsi_dev_construct(const char *name, char *lun_name_list[], int *lun_id_lis
goto error;
}
lun = spdk_scsi_lun_construct(bdev->name, bdev);
lun = spdk_scsi_lun_construct(spdk_bdev_get_name(bdev), bdev);
if (lun == NULL) {
goto error;
}

View File

@ -315,7 +315,7 @@ spdk_scsi_lun_construct(const char *name, struct spdk_bdev *bdev)
}
if (!spdk_bdev_claim(bdev, spdk_scsi_lun_hot_remove, lun)) {
SPDK_ERRLOG("LUN %s: bdev %s is already claimed\n", name, bdev->name);
SPDK_ERRLOG("LUN %s: bdev %s is already claimed\n", name, spdk_bdev_get_name(bdev));
free(lun);
return NULL;
}

View File

@ -70,7 +70,7 @@ spdk_hex2bin(char ch)
}
static void
spdk_bdev_scsi_set_local_naa(char *name, uint8_t *buf)
spdk_bdev_scsi_set_local_naa(const char *name, uint8_t *buf)
{
int i, value, count = 0;
uint64_t naa, local_value;
@ -225,23 +225,28 @@ spdk_bdev_scsi_inquiry(struct spdk_bdev *bdev, struct spdk_scsi_task *task,
to_be16(vpage->alloc_len, len);
break;
case SPDK_SPC_VPD_UNIT_SERIAL_NUMBER:
case SPDK_SPC_VPD_UNIT_SERIAL_NUMBER: {
const char *name = spdk_bdev_get_name(bdev);
hlen = 4;
/* PRODUCT SERIAL NUMBER */
len = strlen(bdev->name) + 1;
len = strlen(name) + 1;
if (len > MAX_SERIAL_STRING) {
len = MAX_SERIAL_STRING;
}
memcpy(vpage->params, bdev->name, len - 1);
memcpy(vpage->params, name, len - 1);
vpage->params[len - 1] = 0;
/* PAGE LENGTH */
to_be16(vpage->alloc_len, len);
break;
}
case SPDK_SPC_VPD_DEVICE_IDENTIFICATION: {
const char *name = spdk_bdev_get_name(bdev);
const char *product_name = spdk_bdev_get_product_name(bdev);
uint8_t *buf = vpage->params;
struct spdk_scsi_desig_desc *desig;
@ -275,7 +280,7 @@ spdk_bdev_scsi_inquiry(struct spdk_bdev *bdev, struct spdk_scsi_task *task,
desig->piv = 1;
desig->reserved1 = 0;
desig->len = 8;
spdk_bdev_scsi_set_local_naa(bdev->name, desig->desig);
spdk_bdev_scsi_set_local_naa(name, desig->desig);
len = sizeof(struct spdk_scsi_desig_desc) + 8;
buf += sizeof(struct spdk_scsi_desig_desc) + desig->len;
@ -291,8 +296,8 @@ spdk_bdev_scsi_inquiry(struct spdk_bdev *bdev, struct spdk_scsi_task *task,
desig->reserved1 = 0;
desig->len = 8 + 16 + MAX_SERIAL_STRING;
spdk_strcpy_pad(desig->desig, DEFAULT_DISK_VENDOR, 8, ' ');
spdk_strcpy_pad(&desig->desig[8], bdev->product_name, 16, ' ');
spdk_strcpy_pad(&desig->desig[24], bdev->name, MAX_SERIAL_STRING, ' ');
spdk_strcpy_pad(&desig->desig[8], product_name, 16, ' ');
spdk_strcpy_pad(&desig->desig[24], name, MAX_SERIAL_STRING, ' ');
len += sizeof(struct spdk_scsi_desig_desc) + 8 + 16 + MAX_SERIAL_STRING;
buf += sizeof(struct spdk_scsi_desig_desc) + desig->len;
@ -700,7 +705,7 @@ spdk_bdev_scsi_inquiry(struct spdk_bdev *bdev, struct spdk_scsi_task *task,
spdk_strcpy_pad(inqdata->t10_vendor_id, DEFAULT_DISK_VENDOR, 8, ' ');
/* PRODUCT IDENTIFICATION */
spdk_strcpy_pad(inqdata->product_id, bdev->product_name, 16, ' ');
spdk_strcpy_pad(inqdata->product_id, spdk_bdev_get_product_name(bdev), 16, ' ');
/* PRODUCT REVISION LEVEL */
spdk_strcpy_pad(inqdata->product_rev, DEFAULT_DISK_REVISION, 4, ' ');

View File

@ -115,7 +115,7 @@ bdevio_construct_targets(void)
}
printf(" %s: %" PRIu64 " blocks of %" PRIu32 " bytes (%" PRIu64 " MiB)\n",
bdev->name,
spdk_bdev_get_name(bdev),
bdev->blockcnt, bdev->blocklen,
(bdev->blockcnt * bdev->blocklen + 1024 * 1024 - 1) / (1024 * 1024));

View File

@ -126,7 +126,7 @@ bdevperf_construct_targets(void)
}
if (g_unmap && !spdk_bdev_io_type_supported(bdev, SPDK_BDEV_IO_TYPE_UNMAP)) {
printf("Skipping %s because it does not support unmap\n", bdev->name);
printf("Skipping %s because it does not support unmap\n", spdk_bdev_get_name(bdev));
bdev = spdk_bdev_next(bdev);
continue;
}
@ -370,7 +370,7 @@ reset_cb(struct spdk_bdev_io *bdev_io, enum spdk_bdev_io_status status, void *cb
struct io_target *target = task->target;
if (status != SPDK_BDEV_IO_STATUS_SUCCESS) {
printf("Reset blockdev=%s failed\n", target->bdev->name);
printf("Reset blockdev=%s failed\n", spdk_bdev_get_name(target->bdev));
target->is_draining = true;
g_run_failed = true;
}
@ -456,7 +456,7 @@ performance_dump(int io_time)
mb_per_second = io_per_second * g_io_size /
(1024 * 1024);
printf("\r %-20s: %10.2f IO/s %10.2f MB/s\n",
target->bdev->name, io_per_second,
spdk_bdev_get_name(target->bdev), io_per_second,
mb_per_second);
total_io_per_second += io_per_second;
total_mb_per_second += mb_per_second;

View File

@ -247,13 +247,13 @@ construct_targets(void)
}
if (!spdk_bdev_claim(bdev, NULL, NULL)) {
SPDK_ERRLOG("could not claim bdev %s\n", bdev->name);
SPDK_ERRLOG("could not claim bdev %s\n", spdk_bdev_get_name(bdev));
exit(1);
}
g_bs_dev = spdk_bdev_create_bs_dev(bdev);
printf("Mounting BlobFS on bdev %s\n", bdev->name);
printf("Mounting BlobFS on bdev %s\n", spdk_bdev_get_name(bdev));
}
static void

View File

@ -93,6 +93,12 @@ spdk_bdev_claim(struct spdk_bdev *bdev, spdk_bdev_remove_cb_t remove_cb,
return true;
}
const char *
spdk_bdev_get_name(const struct spdk_bdev *bdev)
{
return "test";
}
static int
test_transport1_listen_addr_add(struct spdk_nvmf_listen_addr *listen_addr)
{

View File

@ -159,6 +159,12 @@ spdk_bdev_claim(struct spdk_bdev *bdev, spdk_bdev_remove_cb_t remove_cb,
return true;
}
const char *
spdk_bdev_get_name(const struct spdk_bdev *bdev)
{
return "test";
}
static void
test_spdk_nvmf_tgt_listen(void)
{

View File

@ -97,6 +97,12 @@ spdk_nvmf_request_complete(struct spdk_nvmf_request *req)
return -1;
}
const char *
spdk_bdev_get_name(const struct spdk_bdev *bdev)
{
return "test";
}
struct spdk_io_channel *
spdk_bdev_get_io_channel(struct spdk_bdev *bdev, uint32_t priority)
{

View File

@ -59,6 +59,12 @@ spdk_bdev_unregister(struct spdk_bdev *bdev)
{
}
const char *
spdk_bdev_get_name(const struct spdk_bdev *bdev)
{
return "test";
}
static struct spdk_scsi_task *
spdk_get_task(uint32_t *owner_task_ctr)
{

View File

@ -135,6 +135,12 @@ spdk_bdev_unclaim(struct spdk_bdev *bdev)
{
}
const char *
spdk_bdev_get_name(const struct spdk_bdev *bdev)
{
return "test";
}
void spdk_scsi_dev_queue_mgmt_task(struct spdk_scsi_dev *dev,
struct spdk_scsi_task *task)
{

View File

@ -82,6 +82,18 @@ spdk_bdev_free_io(struct spdk_bdev_io *bdev_io)
return -1;
}
const char *
spdk_bdev_get_name(const struct spdk_bdev *bdev)
{
return "test";
}
const char *
spdk_bdev_get_product_name(const struct spdk_bdev *bdev)
{
return "test product";
}
void
spdk_scsi_lun_clear_all(struct spdk_scsi_lun *lun)
{