ocf/src
Adam Rutkowski 7776bd6485 WO: read clean sectors from cache
In case of partial hit WO engine first reads data for the entire
request address range from core device. Then it plumbs it by fetching
dirty sectors from cache device.

For unindentified reason this leads to a data corruption in YCSB
workload A. After flushing dirty data and re-loading cache the
data is correct.

This change modifies WO read handler to read clean data from the
cache. This is not optimal, as the clean sectors are now read twice
in case of partial hit. For now it seems to be good enough work-around
for the data corruption problem.

The symptoms, combined with the fact that this change seems to make
the problem go away, indicates that at some point WB write handler
(and/or special I/O request handlers like discard) puts CAS in a
state where in-memory medata wrongly indicates that a sector is
clean while in fact it is dirty, as marked in the on-disk metadata.

Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2020-05-27 12:31:53 +02:00
..
cleaning Update copyright statements 2020-04-28 13:37:54 +02:00
concurrency Update copyright statements 2020-04-28 13:37:54 +02:00
engine WO: read clean sectors from cache 2020-05-27 12:31:53 +02:00
eviction Update copyright statements 2020-04-28 13:37:54 +02:00
metadata Update copyright statements 2020-04-28 13:37:54 +02:00
mngt Change return code to valid OCF code 2020-05-21 11:11:52 +02:00
promotion Update copyright statements 2020-04-28 13:37:54 +02:00
utils Merge pull request #369 from rafalste/copyright_update 2020-05-06 12:42:10 +02:00
ocf_cache_priv.h Update copyright statements 2020-04-28 13:37:54 +02:00
ocf_cache.c Update copyright statements 2020-04-28 13:37:54 +02:00
ocf_core_priv.h Update copyright statements 2020-04-28 13:37:54 +02:00
ocf_core.c Reject zero-sized discard IOs to core 2020-05-19 16:23:41 +02:00
ocf_ctx_priv.h Update copyright statements 2020-04-28 13:37:54 +02:00
ocf_ctx.c Update copyright statements 2020-04-28 13:37:54 +02:00
ocf_def_priv.h Update copyright statements 2020-04-28 13:37:54 +02:00
ocf_freelist.c Update copyright statements 2020-04-28 13:37:54 +02:00
ocf_freelist.h Update copyright statements 2020-04-28 13:37:54 +02:00
ocf_io_class.c Update copyright statements 2020-04-28 13:37:54 +02:00
ocf_io_priv.h Update copyright statements 2020-04-28 13:37:54 +02:00
ocf_io.c Update copyright statements 2020-04-28 13:37:54 +02:00
ocf_logger_priv.h Update copyright statements 2020-04-28 13:37:54 +02:00
ocf_logger.c Update copyright statements 2020-04-28 13:37:54 +02:00
ocf_metadata.c Update copyright statements 2020-04-28 13:37:54 +02:00
ocf_priv.h Update copyright statements 2020-04-28 13:37:54 +02:00
ocf_queue_priv.h Update copyright statements 2020-04-28 13:37:54 +02:00
ocf_queue.c Remove unused parameter 2020-05-19 16:23:32 +02:00
ocf_request.c Update copyright statements 2020-04-28 13:37:54 +02:00
ocf_request.h Typo fix 2020-05-19 16:23:41 +02:00
ocf_seq_cutoff.c Take into account bytes from incoming req for 'full' seq cutoff policy 2020-05-06 11:07:26 +02:00
ocf_seq_cutoff.h Introduce multi-stream sequential cutoff 2020-04-22 13:30:42 +02:00
ocf_stats_builder.c Update copyright statements 2020-04-28 13:37:54 +02:00
ocf_stats_priv.h Update copyright statements 2020-04-28 13:37:54 +02:00
ocf_stats.c Update copyright statements 2020-04-28 13:37:54 +02:00
ocf_trace_priv.h Update copyright statements 2020-04-28 13:37:54 +02:00
ocf_trace.c Update copyright statements 2020-04-28 13:37:54 +02:00
ocf_volume_priv.h Update copyright statements 2020-04-28 13:37:54 +02:00
ocf_volume.c Update copyright statements 2020-04-28 13:37:54 +02:00