ocf: allow loading cache without setting cache mode

Make init_vbdev() accept NULL as cache_mode if loadq flag
  is set.
This is needed for load path because we don't know cache mode
  before the actual load (happens later).

This change is related to persistant metadata support.
This patch does not change current behavior because loadq flag
  is always false.

Signed-off-by: Vitaliy Mysak <vitaliy.mysak@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/455411 (master)

(cherry picked from commit cca2eab10a)
Change-Id: I42727eb841d87903c81bd5e6d51b6d4869ed9be3
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/457265
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
Vitaliy Mysak 2019-05-22 21:07:10 +00:00 committed by Ben Walker
parent 398e1b15ac
commit 2c4928649a

View File

@ -671,7 +671,7 @@ vbdev_ocf_write_json_config(struct spdk_bdev *bdev, struct spdk_json_write_ctx *
spdk_json_write_named_object_begin(w, "params"); spdk_json_write_named_object_begin(w, "params");
spdk_json_write_named_string(w, "name", vbdev->name); spdk_json_write_named_string(w, "name", vbdev->name);
spdk_json_write_named_string(w, "mode", spdk_json_write_named_string(w, "mode",
ocf_get_cache_modename(vbdev->cfg.cache.cache_mode)); ocf_get_cache_modename(ocf_cache_get_mode(vbdev->ocf_cache)));
spdk_json_write_named_string(w, "cache_bdev_name", vbdev->cache.name); spdk_json_write_named_string(w, "cache_bdev_name", vbdev->cache.name);
spdk_json_write_named_string(w, "core_bdev_name", vbdev->core.name); spdk_json_write_named_string(w, "core_bdev_name", vbdev->core.name);
spdk_json_write_object_end(w); spdk_json_write_object_end(w);
@ -1101,7 +1101,7 @@ init_vbdev(const char *vbdev_name,
if (cache_mode_name) { if (cache_mode_name) {
vbdev->cfg.cache.cache_mode vbdev->cfg.cache.cache_mode
= ocf_get_cache_mode(cache_mode_name); = ocf_get_cache_mode(cache_mode_name);
} else { } else if (!loadq) { /* In load path it is OK to pass NULL as cache mode */
SPDK_ERRLOG("No cache mode specified\n"); SPDK_ERRLOG("No cache mode specified\n");
rc = -EINVAL; rc = -EINVAL;
goto error_free; goto error_free;