Commit f51d3b6d authored by Vitaliy Mysak's avatar Vitaliy Mysak Committed by Darek Stojaczyk
Browse files

ocf: adapt new asynchronous OCF API



Adapt to new async API which was changed recently
This is a neccessery step to be able to implement persistent metadata support

OCF submodule was updated to get new API

Change-Id: I6bf9941ab0557981235c5be27686594a1b8ac3a0
Signed-off-by: default avatarVitaliy Mysak <vitaliy.mysak@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/448397


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarDarek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
parent cac0e9d0
Loading
Loading
Loading
Loading
+51 −31
Original line number Diff line number Diff line
@@ -181,6 +181,15 @@ close_core_bdev(struct vbdev_ocf *vbdev)
	vbdev_ocf_mngt_continue(vbdev, 0);
}

static void
remove_core_cmpl(void *priv, int error)
{
	struct vbdev_ocf *vbdev = priv;

	ocf_mngt_cache_unlock(vbdev->ocf_cache);
	vbdev_ocf_mngt_continue(vbdev, error);
}

/* Try to lock cache, then remove core */
static void
remove_core_poll(struct vbdev_ocf *vbdev)
@@ -192,11 +201,8 @@ remove_core_poll(struct vbdev_ocf *vbdev)
		return;
	}

	rc = ocf_mngt_cache_remove_core(vbdev->ocf_core);

	ocf_mngt_cache_unlock(vbdev->ocf_cache);

	vbdev_ocf_mngt_continue(vbdev, rc);
	vbdev_ocf_mngt_poll(vbdev, NULL);
	ocf_mngt_cache_remove_core(vbdev->ocf_core, remove_core_cmpl, vbdev);
}

/* Detach core base */
@@ -232,12 +238,19 @@ detach_cache(struct vbdev_ocf *vbdev)
	vbdev_ocf_mngt_continue(vbdev, 0);
}

static void
stop_vbdev_cmpl(ocf_cache_t cache, void *priv, int error)
{
	struct vbdev_ocf *vbdev = priv;

	ocf_mngt_cache_unlock(cache);
	vbdev_ocf_mngt_continue(vbdev, error);
}

/* Try to lock cache, then stop it */
static void
stop_vbdev_poll(struct vbdev_ocf *vbdev)
{
	int rc;

	if (!ocf_cache_is_running(vbdev->ocf_cache)) {
		vbdev_ocf_mngt_continue(vbdev, 0);
		return;
@@ -255,14 +268,8 @@ stop_vbdev_poll(struct vbdev_ocf *vbdev)
		return;
	}

	rc = ocf_mngt_cache_stop(vbdev->ocf_cache);
	if (rc) {
		SPDK_ERRLOG("Could not stop cache for '%s'\n", vbdev->name);
	}

	ocf_mngt_cache_unlock(vbdev->ocf_cache);

	vbdev_ocf_mngt_continue(vbdev, rc);
	vbdev_ocf_mngt_poll(vbdev, NULL);
	ocf_mngt_cache_stop(vbdev->ocf_cache, stop_vbdev_cmpl, vbdev);
}

/* Stop OCF cache object
@@ -768,26 +775,33 @@ finish_register(struct vbdev_ocf *vbdev)
	vbdev_ocf_mngt_continue(vbdev, result);
}

/* Try to lock cache, then add core */
static void
add_core_poll(struct vbdev_ocf *vbdev)
add_core_cmpl(ocf_cache_t cache, ocf_core_t core, void *priv, int error)
{
	int rc;
	struct vbdev_ocf *vbdev = priv;

	if (ocf_mngt_cache_trylock(vbdev->ocf_cache)) {
		return;
	}
	ocf_mngt_cache_unlock(cache);

	rc = ocf_mngt_cache_add_core(vbdev->ocf_cache, &vbdev->ocf_core, &vbdev->cfg.core);
	if (rc) {
	if (error) {
		SPDK_ERRLOG("Failed to add core device to cache instance\n");
	} else {
		vbdev->core.id = ocf_core_get_id(vbdev->ocf_core);
		vbdev->ocf_core = core;
		vbdev->core.id  = ocf_core_get_id(core);
	}

	ocf_mngt_cache_unlock(vbdev->ocf_cache);
	vbdev_ocf_mngt_continue(vbdev, error);
}

/* Try to lock cache, then add core */
static void
add_core_poll(struct vbdev_ocf *vbdev)
{
	if (ocf_mngt_cache_trylock(vbdev->ocf_cache)) {
		return;
	}

	vbdev_ocf_mngt_continue(vbdev, rc);
	vbdev_ocf_mngt_poll(vbdev, NULL);
	ocf_mngt_cache_add_core(vbdev->ocf_cache, &vbdev->cfg.core, add_core_cmpl, vbdev);
}

/* Add core for existing OCF cache instance */
@@ -797,7 +811,16 @@ add_core(struct vbdev_ocf *vbdev)
	vbdev_ocf_mngt_poll(vbdev, add_core_poll);
}

/* Start OCF cache, attach cache device */
static void
start_cache_cmpl(ocf_cache_t cache, void *priv, int error)
{
	struct vbdev_ocf *vbdev = priv;

	ocf_mngt_cache_unlock(cache);
	vbdev_ocf_mngt_continue(vbdev, error);
}

/* Start OCF cache, attach caching device */
static void
start_cache(struct vbdev_ocf *vbdev)
{
@@ -829,10 +852,7 @@ start_cache(struct vbdev_ocf *vbdev)

	vbdev->cache.id = ocf_cache_get_id(vbdev->ocf_cache);

	rc = ocf_mngt_cache_attach(vbdev->ocf_cache, &vbdev->cfg.device);
	ocf_mngt_cache_unlock(vbdev->ocf_cache);

	vbdev_ocf_mngt_continue(vbdev, rc);
	ocf_mngt_cache_attach(vbdev->ocf_cache, &vbdev->cfg.device, start_cache_cmpl, vbdev);
}

/* Procedures called during register operation */
Compare bd19b9c1 to 56f4d349
Original line number Diff line number Diff line
Subproject commit bd19b9c12f924b3bfd5d228c3dc4a16d807595d0
Subproject commit 56f4d34920ceeb650cdbc7362fc6a775f61a19a3