summaryrefslogtreecommitdiffstats
path: root/src/spdk/ocf/doc
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:54:28 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:54:28 +0000
commite6918187568dbd01842d8d1d2c808ce16a894239 (patch)
tree64f88b554b444a49f656b6c656111a145cbbaa28 /src/spdk/ocf/doc
parentInitial commit. (diff)
downloadceph-e6918187568dbd01842d8d1d2c808ce16a894239.tar.xz
ceph-e6918187568dbd01842d8d1d2c808ce16a894239.zip
Adding upstream version 18.2.2.upstream/18.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/spdk/ocf/doc')
-rw-r--r--src/spdk/ocf/doc/.gitignore1
-rw-r--r--src/spdk/ocf/doc/HOME.md292
-rw-r--r--src/spdk/ocf/doc/doxygen.cfg329
-rw-r--r--src/spdk/ocf/doc/img/deployment-1.pngbin0 -> 18524 bytes
-rw-r--r--src/spdk/ocf/doc/img/deployment-2.pngbin0 -> 19038 bytes
-rw-r--r--src/spdk/ocf/doc/img/io-path.pngbin0 -> 66489 bytes
6 files changed, 622 insertions, 0 deletions
diff --git a/src/spdk/ocf/doc/.gitignore b/src/spdk/ocf/doc/.gitignore
new file mode 100644
index 000000000..5ccff1a6b
--- /dev/null
+++ b/src/spdk/ocf/doc/.gitignore
@@ -0,0 +1 @@
+html/
diff --git a/src/spdk/ocf/doc/HOME.md b/src/spdk/ocf/doc/HOME.md
new file mode 100644
index 000000000..caad48211
--- /dev/null
+++ b/src/spdk/ocf/doc/HOME.md
@@ -0,0 +1,292 @@
+# Open CAS Framework
+
+# Content:
+- [Architecture overview](#architecture-overview)
+- [Management interface](#library-management)
+- [IO path](#reading-and-writing-data)
+
+# Architecture overview
+
+Intel(R) Cache Acceleration Software (CAS) consists of:
+- Platform independent library called Open CAS Framework (OCF)
+- Platform dependent adaptation layers enabling OCF to work in different
+environments such as Linux kernel
+
+An example usage for OCF is Linux kernel (see picture below).
+In this case OCF operates as block level cache for block devices.
+For this usage model OCF comes with following adaptation layers:
+- <b>Library client (top adapter)</b> - its main responsibility is creating
+cache volume representing primary storage device. Application can
+read/write from/to the cache volume block device as to regular primary
+storage device.
+- <b>Block device volume (bottom adapter)</b> - is responsible for issuing
+IO operations to underlying block device.
+
+A system administrator can manage cache instances via Intel CAS CLI management
+utility called "casadm".
+
+![OCF Linux deployment view](img/deployment-1.png)
+
+Another example of OCF usage is user space block level cache for QEMU
+(see picture below). In this example following adaptation layers may exist:
+- <b>CAS virtIO-blk driver for QEMU (top adapter)</b> - it exposes
+primary storage device (another virtIO driver) to guest OS via OCF library
+- <b>virtIO-blk volume (bottom adapter)</b> - enables OCF to access
+data on primary storage device or cache device via original virtIO driver
+
+Please note that actual adapters depend on the environment where OCF is
+meant to be run. There can be different bottom adapters delivered for cache device
+and primary storage device. For example bottom adapter for caching device may
+be implemented using kernel bypass techniques, providing low-latency access to
+cache media.
+
+![OCF deployment in QEMU example](img/deployment-2.png)
+
+# Management interface
+Management interface delivered with Intel OCF enables system administrator to:
+ - Configure OCF caching library to target environment, which includes installation
+of required platform dependent adapters.
+ - Starting/stopping and managing existing cache instances.
+ - Performing observability functions (e.g. retrieving performance counters)
+
+For more details please see below examples:
+
+## Library initialization example
+
+OCF enables possibility use it simultaneously from two independent libraries linked
+into the same executable by means of concept of contexts. Each context has its own
+set of operations which allow to handle specific data types used by volumes
+within this context.
+
+```c
+#include "ocf.h"
+
+/* Handle to library context */
+ocf_ctx_t ctx;
+
+/* Your context interface */
+const struct ocf_ctx_ops ctx_ops = {
+/* Fill your interface functions */
+};
+
+/* Your unique volume type IDs */
+enum my_volume_type {
+ my_volume_type_1,
+ my_volume_type_2
+};
+
+/* Your volumes interface declaration */
+const struct ocf_volume_ops my_volume_ops1 = {
+ .name = "My volume 1",
+ /* Fill your volume interface functions */
+};
+
+const struct ocf_volume_ops my_volume_ops2 = {
+ .name = "My volume 2"
+ /* Fill your volume interface functions */
+};
+
+int my_cache_init(void)
+{
+ int result;
+
+ result = ocf_ctx_create(&ctx, &ctx_ops)
+ if (result) {
+ /* Cannot initialze context of OCF library */
+ return result;
+ }
+ /* Initialization successful */
+
+ /* Now we can register volumes */
+ result |= ocf_ctx_register_volume_ops(ctx, &my_volume_ops1,
+ my_volume_type_1);
+ if (result) {
+ /* Cannot register volume interface */
+ goto err;
+ }
+
+ result |= ocf_ctx_register_volume_ops(ctx, &my_volume_ops2,
+ my_volume_type_2);
+ if (result) {
+ /* Cannot register volume interface */
+ goto err;
+ }
+
+ return 0;
+
+err:
+ /* In case of failure we destroy context and propagate error code */
+ ocf_ctx_put(ctx);
+ return result;
+}
+
+```
+
+## Cache management
+OCF library API provides management functions (@ref ocf_mngt.h). This
+interface enables user to manage cache instances. Examples:
+- Start cache
+```c
+int result;
+ocf_cache_t cache; /* Handle to your cache */
+struct ocf_mngt_cache_config cfg; /* Your cache configuration */
+
+/* Prepare your cache configuration */
+
+/* Configure cache mode */
+cfg.cache_mode = ocf_cache_mode_wt;
+
+/* Now tell how your cache will be initialzed. Selech warm or cold cache */
+cfg.init_mode = ocf_init_mode_init;
+
+cfg.uuid.data = "/path/to/your/cache/or/unique/id";
+
+/* Specify cache volume type */
+cfg.volume_type = my_volume_type_1;
+
+/* Other cache configuration */
+...
+
+/* Start cache. */
+result = ocf_mngt_cache_start(cas, &cache, cfg);
+if (!result) {
+ /* Your cache was created successfully */
+}
+```
+
+- Add core (primary storage device) to cache
+```c
+int result;
+ocf_core_t core; /* Handle to your core */
+struct ocf_mngt_core_config cfg; /* Your core configuration */
+
+/* Prepare core configuration */
+
+/* Select core volume type */
+cfg.volume_type = my_volume_type_2;
+/* Set UUID or path of your core */
+cfg.uuid.data = "/path/to/your/core/or/unique/id";
+
+result = ocf_mngt_cache_add_core(cache, &core, &cfg);
+if (!result) {
+ /* Your core was added successfully */
+}
+
+```
+
+## Management interface considerations
+Each device (cache or core) is assigned with ID, either automatically by OCF or
+explicitly specified by user. It is possible to retrieve handle to cache
+instance via @ref ocf_cache_get_id. To get handle to core instance please
+use @ref ocf_core_get_id.
+
+Cache management operations are thread safe - it is possible to perform
+cache management from many threads at a time. There is a possiblity to "batch"
+several cache management operations and execute them under cache management
+lock. To do this user needs to first obtain cache management lock, perform management
+operations and finally release the lock. For reference see example below.
+
+```c
+int my_complex_work(ocf_cache_id_t cache_id,
+ ocf_core_id_t core_id)
+{
+ int result;
+ ocf_cache_t cache; /* Handle to your cache */
+ ocf_core_t core; /* Handle to your core */
+
+ /* Get cache handle */
+ result = ocf_mngt_cache_get(cas, cache_id, &cache);
+ if (result)
+ return result;
+
+ /* Lock cache */
+ result = ocf_mngt_cache_lock(cache);
+ if (result) {
+ ocf_mngt_cache_put(cache);
+ return result;
+ }
+
+ /* Get core handle */
+ result = ocf_core_get(cache, core_id, &core);
+ if (result) {
+ result = -1;
+ goto END;
+ }
+
+ /* Cache is locked, you can perform your activities */
+
+ /* 1. Flush your core */
+ result = ocf_mngt_core_flush(cache, core_id, true);
+ if (result) {
+ goto END;
+ }
+
+ /* 2. Your others operations including internal actions */
+
+ /* 3. Removing core form cache */
+ result = ocf_mngt_cache_remove_core(cache, core_id, true);
+
+END:
+ ocf_mngt_cache_unlock(cache); /* Remember to unlock cache */
+ ocf_mngt_cache_put(cache); /* Release cache referance */
+
+ return result;
+}
+```
+
+# IO path
+Please refer to below sequence diagram for detailed IO flow. Typical IO
+path includes:
+ - <b>IO allocation</b> - creating new IO instance that will be submitted to OCF
+for processing
+ - <b>IO configuration</b> - specifying address and length, IO class, flags and
+completion function
+ - <b>IO submission</b> - actual IO submission to OCF. OCF will perform cache
+lookup and based on its results will return data from cache or primary
+storage device
+ - <b>IO completion</b> - is signalled by calling completion function specified
+in IO configuration phase
+
+![An example of IO flow](img/io-path.png)
+
+## IO submission example
+```c
+#include "ocf.h"
+
+void read_end(struct ocf_io *io, int error)
+{
+ /* Your IO has been finished. Check the result and inform upper
+ * layers.
+ */
+
+ /* Release IO */
+ ocf_io_put(io);
+}
+
+int read(ocf_core_t core, ocf_queue_t queue, void *data, addr, uint32_t length)
+{
+ /* Allocate IO */
+ struct ocf_io *io;
+
+ io = ocf_core_new_io(core, queue, addr, length, OCF_READ, 0, 0);
+ if (!io) {
+ /* Cannot allocate IO */
+ return -ENOMEM;
+ }
+
+ /* Set completion context and function */
+ ocf_io_set_cmpl(io, NULL, NULL, read_end);
+
+ /* Set data */
+ if (ocf_io_set_data(io, data, 0)) {
+ ocf_io_put(io);
+ return -EINVAL;
+ }
+
+ /* Send IO requests to the cache */
+ ocf_core_submit_io(io);
+
+ /* Just it */
+ return 0;
+}
+```
diff --git a/src/spdk/ocf/doc/doxygen.cfg b/src/spdk/ocf/doc/doxygen.cfg
new file mode 100644
index 000000000..2a8f10652
--- /dev/null
+++ b/src/spdk/ocf/doc/doxygen.cfg
@@ -0,0 +1,329 @@
+# Doxyfile 1.8.6
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+DOXYFILE_ENCODING = UTF-8
+PROJECT_NAME = "Open CAS Framework"
+PROJECT_NUMBER =
+PROJECT_BRIEF = "Open source framework of Cache Acceleration Software"
+PROJECT_LOGO =
+OUTPUT_DIRECTORY = .
+CREATE_SUBDIRS = NO
+ALLOW_UNICODE_NAMES = NO
+OUTPUT_LANGUAGE = English
+BRIEF_MEMBER_DESC = YES
+REPEAT_BRIEF = YES
+ABBREVIATE_BRIEF = "The $name class" \
+ "The $name widget" \
+ "The $name file" \
+ is \
+ provides \
+ specifies \
+ contains \
+ represents \
+ a \
+ an \
+ the
+ALWAYS_DETAILED_SEC = NO
+INLINE_INHERITED_MEMB = NO
+FULL_PATH_NAMES = NO
+STRIP_FROM_PATH =
+STRIP_FROM_INC_PATH =
+SHORT_NAMES = NO
+JAVADOC_AUTOBRIEF = NO
+QT_AUTOBRIEF = NO
+MULTILINE_CPP_IS_BRIEF = NO
+INHERIT_DOCS = YES
+SEPARATE_MEMBER_PAGES = NO
+TAB_SIZE = 8
+ALIASES =
+TCL_SUBST =
+OPTIMIZE_OUTPUT_FOR_C = YES
+OPTIMIZE_OUTPUT_JAVA = NO
+OPTIMIZE_FOR_FORTRAN = NO
+OPTIMIZE_OUTPUT_VHDL = NO
+EXTENSION_MAPPING =
+MARKDOWN_SUPPORT = YES
+AUTOLINK_SUPPORT = YES
+BUILTIN_STL_SUPPORT = NO
+CPP_CLI_SUPPORT = NO
+SIP_SUPPORT = NO
+IDL_PROPERTY_SUPPORT = YES
+DISTRIBUTE_GROUP_DOC = NO
+GROUP_NESTED_COMPOUNDS = NO
+SUBGROUPING = YES
+INLINE_GROUPED_CLASSES = NO
+INLINE_SIMPLE_STRUCTS = NO
+TYPEDEF_HIDES_STRUCT = NO
+LOOKUP_CACHE_SIZE = 0
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+EXTRACT_ALL = NO
+EXTRACT_PRIVATE = NO
+EXTRACT_PACKAGE = NO
+EXTRACT_STATIC = NO
+EXTRACT_LOCAL_CLASSES = YES
+EXTRACT_LOCAL_METHODS = NO
+EXTRACT_ANON_NSPACES = NO
+HIDE_UNDOC_MEMBERS = NO
+HIDE_UNDOC_CLASSES = NO
+HIDE_FRIEND_COMPOUNDS = NO
+HIDE_IN_BODY_DOCS = NO
+INTERNAL_DOCS = NO
+CASE_SENSE_NAMES = NO
+HIDE_SCOPE_NAMES = YES
+HIDE_COMPOUND_REFERENCE= NO
+SHOW_INCLUDE_FILES = YES
+SHOW_GROUPED_MEMB_INC = NO
+FORCE_LOCAL_INCLUDES = NO
+INLINE_INFO = YES
+SORT_MEMBER_DOCS = YES
+SORT_BRIEF_DOCS = NO
+SORT_MEMBERS_CTORS_1ST = NO
+SORT_GROUP_NAMES = NO
+SORT_BY_SCOPE_NAME = NO
+STRICT_PROTO_MATCHING = NO
+GENERATE_TODOLIST = YES
+GENERATE_TESTLIST = YES
+GENERATE_BUGLIST = YES
+GENERATE_DEPRECATEDLIST= YES
+ENABLED_SECTIONS =
+MAX_INITIALIZER_LINES = 30
+SHOW_USED_FILES = YES
+SHOW_FILES = YES
+SHOW_NAMESPACES = YES
+FILE_VERSION_FILTER =
+LAYOUT_FILE =
+CITE_BIB_FILES =
+#---------------------------------------------------------------------------
+# Configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET = NO
+WARNINGS = YES
+WARN_IF_UNDOCUMENTED = YES
+WARN_IF_DOC_ERROR = YES
+WARN_NO_PARAMDOC = NO
+WARN_AS_ERROR = NO
+WARN_FORMAT = "$file:$line: $text"
+WARN_LOGFILE =
+#---------------------------------------------------------------------------
+# Configuration options related to the input files
+#---------------------------------------------------------------------------
+INPUT = ../inc HOME.md
+INPUT_ENCODING = UTF-8
+FILE_PATTERNS = *.c \
+ *.h \
+ *.md
+RECURSIVE = YES
+EXCLUDE =
+EXCLUDE_SYMLINKS = NO
+EXCLUDE_PATTERNS =
+EXCLUDE_SYMBOLS =
+EXAMPLE_PATH =
+EXAMPLE_PATTERNS = *
+EXAMPLE_RECURSIVE = NO
+IMAGE_PATH = ./img/
+INPUT_FILTER =
+FILTER_PATTERNS =
+FILTER_SOURCE_FILES = NO
+FILTER_SOURCE_PATTERNS =
+USE_MDFILE_AS_MAINPAGE = HOME.md
+#---------------------------------------------------------------------------
+# Configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER = NO
+INLINE_SOURCES = NO
+STRIP_CODE_COMMENTS = YES
+REFERENCED_BY_RELATION = NO
+REFERENCES_RELATION = NO
+REFERENCES_LINK_SOURCE = YES
+SOURCE_TOOLTIPS = YES
+USE_HTAGS = NO
+VERBATIM_HEADERS = YES
+#---------------------------------------------------------------------------
+# Configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+ALPHABETICAL_INDEX = YES
+COLS_IN_ALPHA_INDEX = 5
+IGNORE_PREFIX =
+#---------------------------------------------------------------------------
+# Configuration options related to the HTML output
+#---------------------------------------------------------------------------
+GENERATE_HTML = YES
+HTML_OUTPUT = html
+HTML_FILE_EXTENSION = .html
+#HTML_HEADER = header.html
+#HTML_FOOTER = footer.html
+HTML_STYLESHEET =
+HTML_EXTRA_STYLESHEET =
+HTML_EXTRA_FILES =
+HTML_COLORSTYLE_HUE = 220
+HTML_COLORSTYLE_SAT = 100
+HTML_COLORSTYLE_GAMMA = 80
+HTML_TIMESTAMP = NO
+HTML_DYNAMIC_SECTIONS = NO
+HTML_INDEX_NUM_ENTRIES = 100
+GENERATE_DOCSET = NO
+DOCSET_FEEDNAME = "Doxygen generated docs"
+DOCSET_BUNDLE_ID = org.doxygen.Project
+DOCSET_PUBLISHER_ID = org.doxygen.Publisher
+DOCSET_PUBLISHER_NAME = Publisher
+GENERATE_HTMLHELP = NO
+CHM_FILE =
+HHC_LOCATION =
+GENERATE_CHI = NO
+CHM_INDEX_ENCODING =
+BINARY_TOC = NO
+TOC_EXPAND = NO
+GENERATE_QHP = NO
+QCH_FILE =
+QHP_NAMESPACE = org.doxygen.Project
+QHP_VIRTUAL_FOLDER = doc
+QHP_CUST_FILTER_NAME =
+QHP_CUST_FILTER_ATTRS =
+QHP_SECT_FILTER_ATTRS =
+QHG_LOCATION =
+GENERATE_ECLIPSEHELP = NO
+ECLIPSE_DOC_ID = org.doxygen.Project
+DISABLE_INDEX = NO
+GENERATE_TREEVIEW = NO
+ENUM_VALUES_PER_LINE = 4
+TREEVIEW_WIDTH = 250
+EXT_LINKS_IN_WINDOW = NO
+FORMULA_FONTSIZE = 10
+FORMULA_TRANSPARENT = YES
+USE_MATHJAX = NO
+MATHJAX_FORMAT = HTML-CSS
+MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
+MATHJAX_EXTENSIONS =
+MATHJAX_CODEFILE =
+SEARCHENGINE = YES
+SERVER_BASED_SEARCH = NO
+EXTERNAL_SEARCH = NO
+SEARCHENGINE_URL =
+SEARCHDATA_FILE = searchdata.xml
+EXTERNAL_SEARCH_ID =
+EXTRA_SEARCH_MAPPINGS =
+#---------------------------------------------------------------------------
+# Configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+GENERATE_LATEX = NO
+LATEX_OUTPUT = latex
+LATEX_CMD_NAME = latex
+MAKEINDEX_CMD_NAME = makeindex
+COMPACT_LATEX = NO
+PAPER_TYPE = a4
+EXTRA_PACKAGES =
+LATEX_HEADER =
+LATEX_FOOTER =
+LATEX_EXTRA_STYLESHEET =
+LATEX_EXTRA_FILES =
+PDF_HYPERLINKS = YES
+USE_PDFLATEX = YES
+LATEX_BATCHMODE = NO
+LATEX_HIDE_INDICES = NO
+LATEX_SOURCE_CODE = NO
+LATEX_BIB_STYLE = plain
+LATEX_TIMESTAMP = NO
+#---------------------------------------------------------------------------
+# Configuration options related to the RTF output
+#---------------------------------------------------------------------------
+GENERATE_RTF = NO
+RTF_OUTPUT = rtf
+COMPACT_RTF = NO
+RTF_HYPERLINKS = NO
+RTF_STYLESHEET_FILE =
+RTF_EXTENSIONS_FILE =
+RTF_SOURCE_CODE = NO
+#---------------------------------------------------------------------------
+# Configuration options related to the man page output
+#---------------------------------------------------------------------------
+GENERATE_MAN = NO
+MAN_OUTPUT = man
+MAN_EXTENSION = .3
+MAN_SUBDIR =
+MAN_LINKS = NO
+#---------------------------------------------------------------------------
+# Configuration options related to the XML output
+#---------------------------------------------------------------------------
+GENERATE_XML = NO
+XML_OUTPUT = xml
+XML_PROGRAMLISTING = YES
+#---------------------------------------------------------------------------
+# Configuration options related to the DOCBOOK output
+#---------------------------------------------------------------------------
+GENERATE_DOCBOOK = NO
+DOCBOOK_OUTPUT = docbook
+DOCBOOK_PROGRAMLISTING = NO
+#---------------------------------------------------------------------------
+# Configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+GENERATE_AUTOGEN_DEF = NO
+#---------------------------------------------------------------------------
+# Configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+GENERATE_PERLMOD = NO
+PERLMOD_LATEX = NO
+PERLMOD_PRETTY = YES
+PERLMOD_MAKEVAR_PREFIX =
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+ENABLE_PREPROCESSING = YES
+MACRO_EXPANSION = NO
+EXPAND_ONLY_PREDEF = NO
+SEARCH_INCLUDES = YES
+INCLUDE_PATH =
+INCLUDE_FILE_PATTERNS =
+PREDEFINED =
+EXPAND_AS_DEFINED =
+SKIP_FUNCTION_MACROS = YES
+#---------------------------------------------------------------------------
+# Configuration options related to external references
+#---------------------------------------------------------------------------
+TAGFILES =
+GENERATE_TAGFILE =
+ALLEXTERNALS = NO
+EXTERNAL_GROUPS = YES
+EXTERNAL_PAGES = YES
+PERL_PATH = /usr/bin/perl
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS = YES
+MSCGEN_PATH =
+DIA_PATH =
+HIDE_UNDOC_RELATIONS = YES
+HAVE_DOT = NO
+DOT_NUM_THREADS = 0
+DOT_FONTNAME = Helvetica
+DOT_FONTSIZE = 10
+DOT_FONTPATH =
+CLASS_GRAPH = YES
+COLLABORATION_GRAPH = YES
+GROUP_GRAPHS = YES
+UML_LOOK = NO
+UML_LIMIT_NUM_FIELDS = 10
+TEMPLATE_RELATIONS = NO
+INCLUDE_GRAPH = YES
+INCLUDED_BY_GRAPH = YES
+CALL_GRAPH = NO
+CALLER_GRAPH = NO
+GRAPHICAL_HIERARCHY = YES
+DIRECTORY_GRAPH = YES
+DOT_IMAGE_FORMAT = png
+INTERACTIVE_SVG = NO
+DOT_PATH =
+DOTFILE_DIRS =
+MSCFILE_DIRS =
+DIAFILE_DIRS =
+PLANTUML_JAR_PATH =
+PLANTUML_INCLUDE_PATH =
+DOT_GRAPH_MAX_NODES = 50
+MAX_DOT_GRAPH_DEPTH = 0
+DOT_TRANSPARENT = NO
+DOT_MULTI_TARGETS = NO
+GENERATE_LEGEND = YES
+DOT_CLEANUP = YES
diff --git a/src/spdk/ocf/doc/img/deployment-1.png b/src/spdk/ocf/doc/img/deployment-1.png
new file mode 100644
index 000000000..ccf6769f7
--- /dev/null
+++ b/src/spdk/ocf/doc/img/deployment-1.png
Binary files differ
diff --git a/src/spdk/ocf/doc/img/deployment-2.png b/src/spdk/ocf/doc/img/deployment-2.png
new file mode 100644
index 000000000..f31df9e24
--- /dev/null
+++ b/src/spdk/ocf/doc/img/deployment-2.png
Binary files differ
diff --git a/src/spdk/ocf/doc/img/io-path.png b/src/spdk/ocf/doc/img/io-path.png
new file mode 100644
index 000000000..8c43fdca4
--- /dev/null
+++ b/src/spdk/ocf/doc/img/io-path.png
Binary files differ