Commit bac4c02b authored by Daniel Verkamp's avatar Daniel Verkamp
Browse files

bdev: change name and product_name to char *



Dynamically allocate bdev names to remove the arbitrary 16-character
name length limit.

All of the existing product_names are constant strings, so those can
just use string literals instead of a copy per bdev.

Change-Id: I3280da67a4fcf2e4ec8ee8193362ca1b96a9c0cb
Signed-off-by: default avatarDaniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/363601


Tested-by: default avatarSPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
parent 7bc1a7d1
Loading
Loading
Loading
Loading
+2 −5
Original line number Diff line number Diff line
@@ -79,9 +79,6 @@
 * must be passed to the bdev database via spdk_bdev_register().
 */

#define SPDK_BDEV_MAX_NAME_LENGTH		16
#define SPDK_BDEV_MAX_PRODUCT_NAME_LENGTH	50

/** Block device module */
struct spdk_bdev_module_if {
	/**
@@ -170,10 +167,10 @@ struct spdk_bdev {
	void *ctxt;

	/** Unique name for this block device. */
	char name[SPDK_BDEV_MAX_NAME_LENGTH];
	char *name;

	/** Unique product name for this kind of block device. */
	char product_name[SPDK_BDEV_MAX_PRODUCT_NAME_LENGTH];
	char *product_name;

	/** Size in bytes of a logical block for the backend */
	uint32_t blocklen;
+6 −2
Original line number Diff line number Diff line
@@ -332,6 +332,7 @@ static void aio_free_disk(struct file_disk *fdisk)
{
	if (fdisk == NULL)
		return;
	free(fdisk->disk.name);
	free(fdisk);
}

@@ -355,8 +356,11 @@ create_aio_disk(const char *name, const char *fname)
	fdisk->size = spdk_fd_get_size(fdisk->fd);

	TAILQ_INIT(&fdisk->sync_completion_list);
	snprintf(fdisk->disk.name, SPDK_BDEV_MAX_NAME_LENGTH, "%s", name);
	snprintf(fdisk->disk.product_name, SPDK_BDEV_MAX_PRODUCT_NAME_LENGTH, "AIO disk");
	fdisk->disk.name = strdup(name);
	if (!fdisk->disk.name) {
		goto error_return;
	}
	fdisk->disk.product_name = "AIO disk";

	fdisk->disk.need_aligned_buffer = 1;
	fdisk->disk.write_cache = 1;
+0 −1
Original line number Diff line number Diff line
@@ -60,7 +60,6 @@ struct file_disk {
	struct spdk_bdev	disk;
	const char		*file;
	int			fd;
	char			disk_name[SPDK_BDEV_MAX_NAME_LENGTH];
	uint64_t		size;

	/**
+1 −1
Original line number Diff line number Diff line
@@ -123,7 +123,7 @@ spdk_bdev_get_by_name(const char *bdev_name)
	struct spdk_bdev *bdev = spdk_bdev_first();

	while (bdev != NULL) {
		if (strncmp(bdev_name, bdev->name, sizeof(bdev->name)) == 0) {
		if (strcmp(bdev_name, bdev->name) == 0) {
			return bdev;
		}
		bdev = spdk_bdev_next(bdev);
+20 −4
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@
#include "spdk/conf.h"
#include "spdk/endian.h"
#include "spdk/nvme_spec.h"
#include "spdk/string.h"

#include "spdk_internal/bdev.h"
#include "spdk_internal/log.h"
@@ -120,6 +121,17 @@ vbdev_error_submit_request(struct spdk_io_channel *ch, struct spdk_bdev_io *bdev
	pthread_mutex_unlock(&g_vbdev_error_mutex);
}

static void
vbdev_error_disk_free(struct vbdev_error_disk *disk)
{
	if (!disk) {
		return;
	}

	free(disk->disk.name);
	free(disk);
}

static void
vbdev_error_free(struct vbdev_error_disk *error_disk)
{
@@ -130,7 +142,7 @@ vbdev_error_free(struct vbdev_error_disk *error_disk)
	TAILQ_REMOVE(&g_vbdev_error_disks, error_disk, tailq);

	spdk_bdev_unclaim(error_disk->base_bdev);
	free(error_disk);
	vbdev_error_disk_free(error_disk);
}

static int
@@ -203,8 +215,12 @@ spdk_vbdev_error_create(struct spdk_bdev *base_bdev)

	disk->base_bdev = base_bdev;
	memcpy(&disk->disk, base_bdev, sizeof(*base_bdev));
	snprintf(disk->disk.name, sizeof(disk->disk.name), "EE_%s", base_bdev->name);
	snprintf(disk->disk.product_name, sizeof(disk->disk.product_name), "Error Injection Disk");
	disk->disk.name = spdk_sprintf_alloc("EE_%s", base_bdev->name);
	if (!disk->disk.name) {
		rc = -ENOMEM;
		goto cleanup;
	}
	disk->disk.product_name = "Error Injection Disk";
	disk->disk.ctxt = disk;
	disk->disk.fn_table = &vbdev_error_fn_table;

@@ -215,7 +231,7 @@ spdk_vbdev_error_create(struct spdk_bdev *base_bdev)
	rc = 0;
	return rc;
cleanup:
	free(disk);
	vbdev_error_disk_free(disk);
	return rc;
}

Loading