Commit e9af23de authored by Artur Paszkiewicz's avatar Artur Paszkiewicz Committed by Jim Harris
Browse files

raid: combine _raid_bdev_add_base_device() and raid_bdev_add_base_device()



_raid_bdev_add_base_device() is now used only in
raid_bdev_add_base_device() so combine them into one. Rename it to
raid_bdev_add_base_bdev() for consistency with other function names.

Signed-off-by: default avatarArtur Paszkiewicz <artur.paszkiewicz@intel.com>
Change-Id: I314d3f87f297c30d23fc0055ea13dd1793ae7c49
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/22359


Reviewed-by: default avatarJim Harris <jim.harris@samsung.com>
Community-CI: Mellanox Build Bot
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
parent 0074299d
Loading
Loading
Loading
Loading
+21 −37
Original line number Diff line number Diff line
@@ -3220,45 +3220,14 @@ out:
	return rc;
}

static int
_raid_bdev_add_base_device(struct raid_bdev *raid_bdev, const char *name,
			   struct raid_base_bdev_info *base_info,
			   raid_base_bdev_cb cb_fn, void *cb_ctx)
{
	uint8_t slot = raid_bdev_base_bdev_slot(base_info);

	assert(name != NULL);

	if (base_info->name != NULL) {
		SPDK_ERRLOG("Slot %u on raid bdev '%s' already assigned to bdev '%s'\n",
			    slot, raid_bdev->bdev.name, base_info->name);
		return -EBUSY;
	}

	if (!spdk_uuid_is_null(&base_info->uuid)) {
		char uuid_str[SPDK_UUID_STRING_LEN];

		spdk_uuid_fmt_lower(uuid_str, sizeof(uuid_str), &base_info->uuid);
		SPDK_ERRLOG("Slot %u on raid bdev '%s' already assigned to bdev with uuid %s\n",
			    slot, raid_bdev->bdev.name, uuid_str);
		return -EBUSY;
	}

	base_info->name = strdup(name);
	if (base_info->name == NULL) {
		return -ENOMEM;
	}

	return raid_bdev_configure_base_bdev(base_info, false, cb_fn, cb_ctx);
}

int
raid_bdev_add_base_device(struct raid_bdev *raid_bdev, const char *name,
raid_bdev_add_base_bdev(struct raid_bdev *raid_bdev, const char *name,
			raid_base_bdev_cb cb_fn, void *cb_ctx)
{
	struct raid_base_bdev_info *base_info = NULL, *iter;
	int rc;

	assert(name != NULL);
	assert(spdk_get_thread() == spdk_thread_get_app_thread());

	if (raid_bdev->process != NULL) {
@@ -3287,12 +3256,27 @@ raid_bdev_add_base_device(struct raid_bdev *raid_bdev, const char *name,
		assert(base_info->desc == NULL);
	}

	if (!spdk_uuid_is_null(&base_info->uuid)) {
		char uuid_str[SPDK_UUID_STRING_LEN];

		spdk_uuid_fmt_lower(uuid_str, sizeof(uuid_str), &base_info->uuid);
		SPDK_ERRLOG("Slot %u on raid bdev '%s' already assigned to bdev with uuid %s\n",
			    raid_bdev_base_bdev_slot(base_info), raid_bdev->bdev.name, uuid_str);
		return -EBUSY;
	}

	base_info->name = strdup(name);
	if (base_info->name == NULL) {
		return -ENOMEM;
	}

	spdk_spin_lock(&raid_bdev->base_bdev_lock);

	rc = _raid_bdev_add_base_device(raid_bdev, name, base_info, cb_fn, cb_ctx);
	rc = raid_bdev_configure_base_bdev(base_info, false, cb_fn, cb_ctx);
	if (rc != 0 && (rc != -ENODEV || raid_bdev->state != RAID_BDEV_STATE_CONFIGURING)) {
		SPDK_ERRLOG("base bdev '%s' attach failed: %s\n", name, spdk_strerror(-rc));
		raid_bdev_free_base_bdev_resource(base_info);
		SPDK_ERRLOG("base bdev '%s' configure failed: %s\n", name, spdk_strerror(-rc));
		free(base_info->name);
		base_info->name = NULL;
	}

	spdk_spin_unlock(&raid_bdev->base_bdev_lock);
+2 −2
Original line number Diff line number Diff line
@@ -255,7 +255,7 @@ int raid_bdev_create(const char *name, uint32_t strip_size, uint8_t num_base_bde
		     enum raid_level level, bool superblock, const struct spdk_uuid *uuid,
		     struct raid_bdev **raid_bdev_out);
void raid_bdev_delete(struct raid_bdev *raid_bdev, raid_bdev_destruct_cb cb_fn, void *cb_ctx);
int raid_bdev_add_base_device(struct raid_bdev *raid_bdev, const char *name,
int raid_bdev_add_base_bdev(struct raid_bdev *raid_bdev, const char *name,
			    raid_base_bdev_cb cb_fn, void *cb_ctx);
struct raid_bdev *raid_bdev_find_by_name(const char *name);
enum raid_level raid_bdev_str_to_level(const char *str);
+3 −3
Original line number Diff line number Diff line
@@ -305,7 +305,7 @@ rpc_bdev_raid_create(struct spdk_jsonrpc_request *request,
	for (i = 0; i < num_base_bdevs; i++) {
		const char *base_bdev_name = req->base_bdevs.base_bdevs[i];

		rc = raid_bdev_add_base_device(raid_bdev, base_bdev_name,
		rc = raid_bdev_add_base_bdev(raid_bdev, base_bdev_name,
					     rpc_bdev_raid_create_add_base_bdev_cb, ctx);
		if (rc == -ENODEV) {
			SPDK_DEBUGLOG(bdev_raid, "base bdev %s doesn't exist now\n", base_bdev_name);
@@ -526,7 +526,7 @@ rpc_bdev_raid_add_base_bdev(struct spdk_jsonrpc_request *request,
		goto cleanup;
	}

	rc = raid_bdev_add_base_device(raid_bdev, req.base_bdev, rpc_bdev_raid_add_base_bdev_done, request);
	rc = raid_bdev_add_base_bdev(raid_bdev, req.base_bdev, rpc_bdev_raid_add_base_bdev_done, request);
	if (rc != 0) {
		spdk_jsonrpc_send_error_response_fmt(request, rc,
						     "Failed to add base bdev %s to RAID bdev %s: %s",