<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>OpenCAS</title>
        <description>Open CAS Documentation</description>
        <link>https://open-cas.github.io/</link>
        <atom:link href="https://open-cas.github.io/feed.xml" rel="self" type="application/rss+xml"/>
        <pubDate>Tue, 10 Feb 2026 11:32:07 +0000</pubDate>
        <lastBuildDate>Tue, 10 Feb 2026 11:32:07 +0000</lastBuildDate>
        <generator>Jekyll v3.10.0</generator>
        
        <item>
            <title>OCF v19.9 and Open CAS Linux v19.9 Release</title>
            <description>&lt;p&gt;I’m pleased to anounce that new releases of both Open CAS Framework and
Open CAS Linux are now officially available. Let’s look what’s new in
the v19.9 release.&lt;/p&gt;

&lt;h1 id=&quot;open-cas-framework-v199&quot;&gt;Open CAS Framework v19.9&lt;/h1&gt;
&lt;h2 id=&quot;performance-improvements&quot;&gt;Performance improvements&lt;/h2&gt;
&lt;p&gt;For OCF this release was marked by optimizations in memory allocations and
metadata locking. The name of the game is performance. In the latest OCF version
we reduced lock contention by increasing locking granularity, which enables OCF
to handle higher bandwidths. We also reduced number of allocations in IO path
to provide better latency.&lt;/p&gt;

&lt;h2 id=&quot;promotion-policy&quot;&gt;Promotion Policy&lt;/h2&gt;
&lt;p&gt;The major new feature of this release is &lt;em&gt;eviction noise reduction&lt;/em&gt; a.k.a.
&lt;strong&gt;Promotion Policy&lt;/strong&gt;. The &lt;strong&gt;Promotion Policy&lt;/strong&gt; is simply a stateful filter
which decides wheter given request should be inserted into the cache or not.
There are two promotion policies available, &lt;strong&gt;ALWAYS&lt;/strong&gt; and &lt;strong&gt;NHIT&lt;/strong&gt;. &lt;strong&gt;ALWAYS&lt;/strong&gt;
is the delfault and it just marks all requests for insertion. That means there
is no filtering at all and so it provides the same behavior as it was before
promotion policy was introduced. Therefore the hero of this feature is the
second available policy, &lt;strong&gt;NHIT&lt;/strong&gt;, which does the actual filtering. &lt;strong&gt;NHIT&lt;/strong&gt;
counts number of accesses to individual core lines and marks for insertion
those that has been accessed enough times to reach the &lt;em&gt;threshold&lt;/em&gt; value.
The &lt;strong&gt;NHIT&lt;/strong&gt; policy remembers twice as many corelines as number of cachelines
in the cache and forgets the least recently added (based on a ring buffer).
Given that cache device is typically quite capacious, it gives core lines
containing hot data plenty of time to reach the &lt;em&gt;threshold&lt;/em&gt; value.&lt;/p&gt;

&lt;h2 id=&quot;api-improvements&quot;&gt;API improvements&lt;/h2&gt;
&lt;h3 id=&quot;statistics-api&quot;&gt;Statistics API&lt;/h3&gt;
&lt;p&gt;The statistics API has been exteded by adding per-io-class cache and core
block statistics. This allows for more detailed inspection of ioclass
functioning which is useful with increasingly advancing OCL classification
mechanisms. Statistics API was in this release also slightly cleaned up by
removing deprecated functions.&lt;/p&gt;
&lt;h3 id=&quot;name-based-management-api&quot;&gt;Name based management API&lt;/h3&gt;
&lt;p&gt;Cache and core IDs have been removed from OCF API and replaced with the names.
This change was dictated by the fact that cache and especially core object
in most cases are represented by the names in the adapter anyway, so enabling
the use of the same names in OCF API seems to be logical step towards
simplification of adapters. Providing unique cache/core name during its
creation is now mandatory. The names are stored in the cache persistent
meatadata and restored during the load/recovery operation.&lt;/p&gt;
&lt;h3 id=&quot;io-api-changes&quot;&gt;IO API changes&lt;/h3&gt;
&lt;p&gt;Due to memory allocation improvements there was a small change in IO API.
Now the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;addr&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;size&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;io_class&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;flags&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;queue&lt;/code&gt; are passed directly
to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ocf_core_new_io()&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ocf_volume_new_io()&lt;/code&gt; functions instead of being
set by &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ocf_io_configure()&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ocf_io_set_queue()&lt;/code&gt; helpers. This makes it
possible to allocate all the io related data in the single allocation.&lt;/p&gt;
&lt;h3 id=&quot;env-improvements&quot;&gt;Env improvements&lt;/h3&gt;
&lt;p&gt;Now sychronization primitives constructors may return error codes, which is
needed for compatibility with some environments. We also added destructors
for some synchronization primitives that were missing them.&lt;/p&gt;

&lt;h2 id=&quot;more-tests&quot;&gt;More tests&lt;/h2&gt;
&lt;p&gt;We constatnly work on improving our test coverage and so in this release we
have added quite a few new tests and improvements in pyocf and the test
framework.&lt;/p&gt;

&lt;h1 id=&quot;open-cas-linux-v199&quot;&gt;Open CAS Linux v19.9&lt;/h1&gt;
&lt;p&gt;New version of OCL is based on OCF v19.9 and so it embodies all the
improvements and features provided by the latest OCF release and some more.&lt;/p&gt;

&lt;h2 id=&quot;more-fine-grained-io-classification&quot;&gt;More fine-grained io classification&lt;/h2&gt;
&lt;p&gt;In this release we extended list of available io classification criteria
by few brand new powerful options:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Request size&lt;/li&gt;
  &lt;li&gt;Request address&lt;/li&gt;
  &lt;li&gt;File extension&lt;/li&gt;
  &lt;li&gt;Process name&lt;/li&gt;
  &lt;li&gt;Process ID&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This allows users to more precisely define which data they want to cache,
and thus improve the performance gain.&lt;/p&gt;

&lt;h2 id=&quot;multi-queue-support&quot;&gt;Multi-queue support&lt;/h2&gt;
&lt;p&gt;As of now we use multi-queue kernel API for submitting IO to backend devices.&lt;/p&gt;

&lt;h2 id=&quot;support-for-newer-kernels&quot;&gt;Support for newer kernels&lt;/h2&gt;
&lt;p&gt;We extended broad range of kernel versions on which Open CAS Linux works by
covering kernels up to v5.2.&lt;/p&gt;
</description>
            <pubDate>Fri, 04 Oct 2019 00:00:00 +0000</pubDate>
            <link>https://open-cas.github.io/2019-10-04.html</link>
            <guid isPermaLink="true">https://open-cas.github.io/2019-10-04.html</guid>
            
            <category>news</category>
            
            
        </item>
        
        <item>
            <title>Open CAS Framework finally available!</title>
            <description>&lt;p&gt;We are very excited to anounce, that we just pushed initial OCF commit
to our GitHub repository. We prepared for this moment for many months,
and today our open source journey officially starts. If you want to know
more about Open CAS Framework, take a look at &lt;a href=&quot;/index.html&quot;&gt;Start Here&lt;/a&gt;
page and visit our &lt;a href=&quot;https://github.com/Open-CAS/ocf&quot;&gt;GitHub&lt;/a&gt; project page.&lt;/p&gt;
</description>
            <pubDate>Thu, 29 Nov 2018 00:00:00 +0000</pubDate>
            <link>https://open-cas.github.io/2018-11-29.html</link>
            <guid isPermaLink="true">https://open-cas.github.io/2018-11-29.html</guid>
            
            <category>news</category>
            
            
        </item>
        
    </channel>
</rss>
