Skip to content
Open CAS Framework
C Python C++ Other
Branch: master
Clone or download
arutk Merge pull request #319 from mmichal10/fix-ioclass-stats-for-cache
Reset initial ioclass stats value when retrieving.
Latest commit d8a01e3 Oct 29, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
doc Merge new_io and configure into one function Jul 17, 2019
env/posix Update ocf_enf files for UT Oct 1, 2019
example/simple Pass linker flags as the last part of gcc command. Oct 21, 2019
inc Add missing include Oct 2, 2019
src Reset initial ioclass stats value when retrieving. Oct 29, 2019
tests Add global random seed config Oct 3, 2019
LICENSE Create LICENSE file Jan 16, 2019
Makefile Forcing symbolic link creation Jun 19, 2019 Update OCF Aug 29, 2019

Open CAS Framework

Build Status Tests Status Coverity status License

Open CAS Framework (OCF) is high performance block storage caching meta-library written in C. It's entirely platform and system independent, accessing system API through user provided environment wrappers layer. OCF tightly integrates with the rest of software stack, providing flawless, high performance, low latency caching utility.

In this readme:


OCF documentation is available on GitHub Pages. Doxygen API documentation is available here.

Source Code

Source code is available in the official OCF GitHub repository:

git clone
cd ocf


OCF doesn't compile as separate library. It's designed to be included into another software stack. For this purpose OCF provides Makefile with two useful targets for deploying its source into target directories. Assuming OCFDIR is OCF directory, and SRCDIR and INCDIR are respectively your source and include directories, use following commands to deploy OCF into your project:

make -C $OCFDIF src O=$SRCDIR
make -C $OCFDIF inc O=$INCDIR

By default this will not copy OCF source files but create symbolic links to them, to avoid source duplication and allow for easy OCF code modification. If you prefer to copy OCF source files (e.g. you don't want to distribute whole OCF repository as your submodule) you can use following commands:

make -C $OCFDIF src O=$SRCDIR CMD=cp
make -C $OCFDIF inc O=$INCDIR CMD=cp


OCF is shipped with examples, which are complete, compillable and working programs, containing lot of comments that explain basics of caching. They are great starting point for everyone who wants to start working with OCF.

Examples can be found in directory example/.

Each example contains Makefile which can be used to compile it.

Unit Tests

OCF is shipped with dedicated unit test framework based on Cmocka.
To run unit tests you need to install following packages:

  • Cmake (>= 3.8.1)
  • Cmocka (>= 1.1.1)
  • ctags (>= 5.8)

To run unit tests use following command:


Build Test

OCF repository contains basic build test. It uses default POSIX environment. To run this test, use following commands:

cd tests/build/

Functional Tests

OCF repository contains dedicated functional test framework written in python and executed via pytest. With the use of ctypes it is possible to call, wrap ocf functions and use C compatible data types.
To run functional tests you need to install the following:

  • python3 (>=3.6.7)
  • pytest (Install with pip3 install pytest)

To run all functional tests (in compliance with the configuration file) use the following command:



Feel like making OCF better? Don't hesitate to submit a pull request!
You can find more information about our contribution process here.
In case of any questions feel free to contact maintainer.


To report a potential security vulnerability please follow the instructions here

You can’t perform that action at this time.