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", 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); 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. * 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); w = spdk_jsonrpc_begin_result(conn, id);
spdk_json_write_array_begin(w); 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_json_write_array_end(w);
spdk_jsonrpc_end_result(conn, w); spdk_jsonrpc_end_result(conn, w);
return; 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); 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 size_t
spdk_bdev_get_buf_align(const struct spdk_bdev *bdev) 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); w = spdk_jsonrpc_begin_result(conn, id);
spdk_json_write_array_begin(w); 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_json_write_array_end(w);
spdk_jsonrpc_end_result(conn, w); spdk_jsonrpc_end_result(conn, w);
return; 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); w = spdk_jsonrpc_begin_result(conn, id);
spdk_json_write_array_begin(w); 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_json_write_array_end(w);
spdk_jsonrpc_end_result(conn, w); spdk_jsonrpc_end_result(conn, w);
return; 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_object_begin(w);
spdk_json_write_name(w, "name"); 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_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_name(w, "block_size");
spdk_json_write_uint32(w, bdev->blocklen); 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_object_begin(w);
spdk_json_write_name(w, "base_bdev"); 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_name(w, "offset_blocks");
spdk_json_write_uint64(w, split_disk->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; struct split_base *split_base;
if (!spdk_bdev_claim(base_bdev, NULL, NULL)) { 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; 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 SPDK_TRACELOG(SPDK_TRACE_VBDEV_SPLIT, "base_bdev: %s split_count: %" PRIu64
" split_size_bytes: %" PRIu64 "\n", " 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)); split_base = calloc(1, sizeof(*split_base));
if (!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; 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 */ /* 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"); snprintf(d->disk.product_name, sizeof(d->disk.product_name), "Split Disk");
d->base_bdev = base_bdev; d->base_bdev = base_bdev;
d->offset_bytes = offset_bytes; 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: " SPDK_TRACELOG(SPDK_TRACE_VBDEV_SPLIT, "Split vbdev %s: base bdev: %s offset_bytes: "
"%" PRIu64 " offset_blocks: %" PRIu64 "\n", "%" 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); 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)) { if (!spdk_bdev_claim(bdev, spdk_nvmf_ctrlr_hot_remove, subsystem)) {
SPDK_ERRLOG("Subsystem %s: bdev %s is already claimed\n", SPDK_ERRLOG("Subsystem %s: bdev %s is already claimed\n",
subsystem->subnqn, bdev->name); subsystem->subnqn, spdk_bdev_get_name(bdev));
return -1; 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)) { if (!spdk_bdev_io_type_supported(bdev, SPDK_BDEV_IO_TYPE_UNMAP)) {
SPDK_TRACELOG(SPDK_TRACE_NVMF, SPDK_TRACELOG(SPDK_TRACE_NVMF,
"Subsystem%d Namespace %s does not support unmap - not enabling DSM\n", "Subsystem%d Namespace %s does not support unmap - not enabling DSM\n",
i, bdev->name); i, spdk_bdev_get_name(bdev));
return; return;
} }
} }

View File

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

View File

@ -70,7 +70,7 @@ spdk_hex2bin(char ch)
} }
static void 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; int i, value, count = 0;
uint64_t naa, local_value; 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); to_be16(vpage->alloc_len, len);
break; 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; hlen = 4;
/* PRODUCT SERIAL NUMBER */ /* PRODUCT SERIAL NUMBER */
len = strlen(bdev->name) + 1; len = strlen(name) + 1;
if (len > MAX_SERIAL_STRING) { if (len > MAX_SERIAL_STRING) {
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; vpage->params[len - 1] = 0;
/* PAGE LENGTH */ /* PAGE LENGTH */
to_be16(vpage->alloc_len, len); to_be16(vpage->alloc_len, len);
break; break;
}
case SPDK_SPC_VPD_DEVICE_IDENTIFICATION: { 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; uint8_t *buf = vpage->params;
struct spdk_scsi_desig_desc *desig; 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->piv = 1;
desig->reserved1 = 0; desig->reserved1 = 0;
desig->len = 8; 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; len = sizeof(struct spdk_scsi_desig_desc) + 8;
buf += sizeof(struct spdk_scsi_desig_desc) + desig->len; 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->reserved1 = 0;
desig->len = 8 + 16 + MAX_SERIAL_STRING; desig->len = 8 + 16 + MAX_SERIAL_STRING;
spdk_strcpy_pad(desig->desig, DEFAULT_DISK_VENDOR, 8, ' '); spdk_strcpy_pad(desig->desig, DEFAULT_DISK_VENDOR, 8, ' ');
spdk_strcpy_pad(&desig->desig[8], bdev->product_name, 16, ' '); spdk_strcpy_pad(&desig->desig[8], product_name, 16, ' ');
spdk_strcpy_pad(&desig->desig[24], bdev->name, MAX_SERIAL_STRING, ' '); spdk_strcpy_pad(&desig->desig[24], name, MAX_SERIAL_STRING, ' ');
len += sizeof(struct spdk_scsi_desig_desc) + 8 + 16 + MAX_SERIAL_STRING; len += sizeof(struct spdk_scsi_desig_desc) + 8 + 16 + MAX_SERIAL_STRING;
buf += sizeof(struct spdk_scsi_desig_desc) + desig->len; 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, ' '); spdk_strcpy_pad(inqdata->t10_vendor_id, DEFAULT_DISK_VENDOR, 8, ' ');
/* PRODUCT IDENTIFICATION */ /* 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 */ /* PRODUCT REVISION LEVEL */
spdk_strcpy_pad(inqdata->product_rev, DEFAULT_DISK_REVISION, 4, ' '); 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", 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,
(bdev->blockcnt * bdev->blocklen + 1024 * 1024 - 1) / (1024 * 1024)); (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)) { 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); bdev = spdk_bdev_next(bdev);
continue; 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; struct io_target *target = task->target;
if (status != SPDK_BDEV_IO_STATUS_SUCCESS) { 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; target->is_draining = true;
g_run_failed = true; g_run_failed = true;
} }
@ -456,7 +456,7 @@ performance_dump(int io_time)
mb_per_second = io_per_second * g_io_size / mb_per_second = io_per_second * g_io_size /
(1024 * 1024); (1024 * 1024);
printf("\r %-20s: %10.2f IO/s %10.2f MB/s\n", 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); mb_per_second);
total_io_per_second += io_per_second; total_io_per_second += io_per_second;
total_mb_per_second += mb_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)) { 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); exit(1);
} }
g_bs_dev = spdk_bdev_create_bs_dev(bdev); 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 static void

View File

@ -93,6 +93,12 @@ spdk_bdev_claim(struct spdk_bdev *bdev, spdk_bdev_remove_cb_t remove_cb,
return true; return true;
} }
const char *
spdk_bdev_get_name(const struct spdk_bdev *bdev)
{
return "test";
}
static int static int
test_transport1_listen_addr_add(struct spdk_nvmf_listen_addr *listen_addr) 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; return true;
} }
const char *
spdk_bdev_get_name(const struct spdk_bdev *bdev)
{
return "test";
}
static void static void
test_spdk_nvmf_tgt_listen(void) test_spdk_nvmf_tgt_listen(void)
{ {

View File

@ -97,6 +97,12 @@ spdk_nvmf_request_complete(struct spdk_nvmf_request *req)
return -1; return -1;
} }
const char *
spdk_bdev_get_name(const struct spdk_bdev *bdev)
{
return "test";
}
struct spdk_io_channel * struct spdk_io_channel *
spdk_bdev_get_io_channel(struct spdk_bdev *bdev, uint32_t priority) 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 * static struct spdk_scsi_task *
spdk_get_task(uint32_t *owner_task_ctr) 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, void spdk_scsi_dev_queue_mgmt_task(struct spdk_scsi_dev *dev,
struct spdk_scsi_task *task) struct spdk_scsi_task *task)
{ {

View File

@ -82,6 +82,18 @@ spdk_bdev_free_io(struct spdk_bdev_io *bdev_io)
return -1; 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 void
spdk_scsi_lun_clear_all(struct spdk_scsi_lun *lun) spdk_scsi_lun_clear_all(struct spdk_scsi_lun *lun)
{ {