Commit 3f4474d5 authored by Michal Mielewczyk's avatar Michal Mielewczyk Committed by Tomasz Zawadzki
Browse files

Update ocf to 21.6



- remove metadata updater
- handle 'zero' flag in mempool allocator
- adapt ocf_mngt_cache_start() to new OCF API

Signed-off-by: default avatarRafal Stefanowski <rafal.stefanowski@intel.com>
Signed-off-by: default avatarMichal Mielewczyk <michal.mielewczyk@intel.com>
Change-Id: I34afd856cc1306ffe305f71a445e7474c9b0a2d9
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9129


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent 9544fe07
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -58,7 +58,7 @@ struct env_mpool {
struct env_mpool *env_mpool_create(uint32_t hdr_size, uint32_t elem_size,
				   int flags, int mpool_max, bool fallback,
				   const uint32_t limits[env_mpool_max],
				   const char *name_perfix)
				   const char *name_perfix, bool zero)
{
	int i;
	char name[MEMPOOL_SIZE] = {};
@@ -84,7 +84,7 @@ struct env_mpool *env_mpool_create(uint32_t hdr_size, uint32_t elem_size,
		size = hdr_size + (elem_size * (1 << i));

		mpool->allocator[i] = env_allocator_create_extended(size, name,
				      limits ? limits[i] : -1);
				      limits ? limits[i] : -1, zero);

		if (!mpool->allocator[i]) {
			goto err;
+1 −1
Original line number Diff line number Diff line
@@ -52,7 +52,7 @@ struct env_mpool;
struct env_mpool *env_mpool_create(uint32_t hdr_size, uint32_t elem_size,
				   int flags, int mpool_max, bool fallback,
				   const uint32_t limits[env_mpool_max],
				   const char *name_perfix);
				   const char *name_perfix, bool zero);

void env_mpool_destroy(struct env_mpool *mpools);

+9 −4
Original line number Diff line number Diff line
@@ -55,7 +55,11 @@ env_allocator_new(env_allocator *allocator)
{
	void *mem = spdk_mempool_get(allocator->mempool);

	if (spdk_likely(mem)) {
	if (spdk_unlikely(!mem)) {
		return NULL;
	}

	if (allocator->zero) {
		memset(mem, 0, allocator->element_size);
	}

@@ -63,13 +67,13 @@ env_allocator_new(env_allocator *allocator)
}

env_allocator *
env_allocator_create(uint32_t size, const char *name)
env_allocator_create(uint32_t size, const char *name, bool zero)
{
	return env_allocator_create_extended(size, name, -1);
	return env_allocator_create_extended(size, name, -1, zero);
}

env_allocator *
env_allocator_create_extended(uint32_t size, const char *name, int limit)
env_allocator_create_extended(uint32_t size, const char *name, int limit, bool zero)
{
	env_allocator *allocator;
	char qualified_name[128] = {0};
@@ -94,6 +98,7 @@ env_allocator_create_extended(uint32_t size, const char *name, int limit)

	allocator->element_size = size;
	allocator->element_count = GET_ELEMENTS_COUNT(limit);
	allocator->zero = zero;

	return allocator;
}
+3 −2
Original line number Diff line number Diff line
@@ -184,11 +184,12 @@ typedef struct {
	struct spdk_mempool *mempool;
	size_t element_size;
	size_t element_count;
	bool zero;
} env_allocator;

env_allocator *env_allocator_create_extended(uint32_t size, const char *name, int limit);
env_allocator *env_allocator_create_extended(uint32_t size, const char *name, int limit, bool zero);

env_allocator *env_allocator_create(uint32_t size, const char *name);
env_allocator *env_allocator_create(uint32_t size, const char *name, bool zero);

void env_allocator_destroy(env_allocator *allocator);

+0 −49
Original line number Diff line number Diff line
@@ -431,49 +431,6 @@ vbdev_ocf_ctx_cleaner_kick(ocf_cleaner_t cleaner)
	priv->poller = SPDK_POLLER_REGISTER(cleaner_poll, cleaner, 0);
}

static void
vbdev_ocf_md_kick(void *ctx)
{
	ocf_metadata_updater_t mu = ctx;
	ocf_cache_t cache = ocf_metadata_updater_get_cache(mu);

	ocf_metadata_updater_run(mu);

	/* Decrease cache ref count after metadata has been updated */
	ocf_mngt_cache_put(cache);
}

static int
vbdev_ocf_volume_updater_init(ocf_metadata_updater_t mu)
{
	struct spdk_thread *md_thread = spdk_get_thread();

	ocf_metadata_updater_set_priv(mu, md_thread);

	return 0;
}

static void
vbdev_ocf_volume_updater_stop(ocf_metadata_updater_t mu)
{

}

static void
vbdev_ocf_volume_updater_kick(ocf_metadata_updater_t mu)
{
	struct spdk_thread *md_thread = ocf_metadata_updater_get_priv(mu);
	ocf_cache_t cache = ocf_metadata_updater_get_cache(mu);

	/* Increase cache ref count prior sending a message to a thread
	 * for metadata update */
	ocf_mngt_cache_get(cache);

	/* We need to send message to updater thread because
	 * kick can happen from any thread */
	spdk_thread_send_msg(md_thread, vbdev_ocf_md_kick, mu);
}

/* This function is main way by which OCF communicates with user
 * We don't want to use SPDK_LOG here because debugging information that is
 * associated with every print message is not helpful in callback that only prints info
@@ -527,12 +484,6 @@ static const struct ocf_ctx_config vbdev_ocf_ctx_cfg = {
			.secure_erase = vbdev_ocf_ctx_data_secure_erase,
		},

		.metadata_updater = {
			.init = vbdev_ocf_volume_updater_init,
			.stop = vbdev_ocf_volume_updater_stop,
			.kick = vbdev_ocf_volume_updater_kick,
		},

		.cleaner = {
			.init = vbdev_ocf_ctx_cleaner_init,
			.stop = vbdev_ocf_ctx_cleaner_stop,
Loading