Commit Graph

49 Commits

Author SHA1 Message Date
Michal Mielewczyk
c68de77799 Remove remains of atomic writes support
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2021-08-16 16:01:21 +02:00
Robert Baldyga
c968285d9f Remove upgrade-in-flight feature
Due to changes in Linux kernel this feature is not working anymore.

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2021-08-11 20:33:16 +02:00
Robert Baldyga
2e4c460702 Use cache line size as discard granularity
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2021-07-15 22:47:08 +02:00
Robert Baldyga
517d98a6ed Split big IO requests
OCF cannot allocate request map bigger than 4MiB (due to kmalloc
limitations), thus we need to split bigger IOs into series smaller
ones to reduce request map size.

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2021-07-07 18:52:22 +02:00
Robert Baldyga
34dbbc056d Fix exported object deinitialization
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2021-06-24 14:24:04 +02:00
Kozlowski Mateusz
62f4c61f8e Update mpool API for vol_atomic_dev_bottom
Signed-off-by: Kozlowski Mateusz <mateusz.kozlowski@intel.com>
2021-06-23 14:57:21 +02:00
Robert Baldyga
e5e0697da4 Add support for kernel 5.11
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2021-06-15 18:59:08 +02:00
Robert Baldyga
2d7b94fa21 Remove block_dev_start_bio()
Now submit_bio path has no fallback to request queue, so we can simplify
io accounting.

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2021-06-15 18:59:08 +02:00
Robert Baldyga
62eb6dc3fd Remove unused functions from top volume
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2021-06-15 18:59:08 +02:00
Robert Baldyga
5e17d0833f Remove unused callbacks from cas_disk ops
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2021-06-15 18:59:08 +02:00
Robert Baldyga
7f89e59b1a Remove CAS_FLUSH_SUPPORTED
It's defined on every single supported kernel, so there is actually no need
for this define at all.

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2021-06-15 18:59:08 +02:00
Robert Baldyga
b82b338c53 Remove blk request handling path
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2021-06-15 18:59:08 +02:00
Robert Baldyga
7343cb55fa Handle all io on bio handler
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2021-06-15 16:52:35 +02:00
Robert Baldyga
fbc3906576 Replace removed kernel API function with new one
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2021-05-26 23:35:30 +02:00
Slawomir Jankowski
964877ddd6 Typo fix
Signed-off-by: Slawomir Jankowski <slawomir.jankowski@intel.com>
2021-05-13 17:02:05 +02:00
Michal Mielewczyk
0387ba18d7 Fix max discard size
`blk_queue_max_discard_sectors()` accepts 32bit parameter

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2021-05-07 11:14:46 +02:00
Kozlowski Mateusz
a45f0c854f Fix _blockdev_set_bio_data iteration
The data->size field can be initialized to a lower value than bio->bi_vcnt,
if the bio is split. The bio_for_each_segment then iterates based on the original
indexes and the mismatch eventually causes a BUG_ON.

Fixes #714

Signed-off-by: Kozlowski Mateusz <mateusz.kozlowski@intel.com>
2021-04-08 12:28:35 +02:00
Jan Musial
f1a19363e5 Include mpool in env and use new allocator API
Signed-off-by: Jan Musial <jan.musial@intel.com>
2021-03-05 14:02:08 +01:00
Rafal Stefanowski
43f43068ad Update copyright statements (2021)
Signed-off-by: Rafal Stefanowski <rafal.stefanowski@intel.com>
2021-01-21 13:15:38 +01:00
Robert Baldyga
bbd0cb57a5 configure: Update generic_acct wrapper to kernel 5.8
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2020-12-22 11:33:38 +01:00
Adam Rutkowski
7905ca79fa Remove potentially_dirty counter from bottom volume
This counter is not accurate (missing required memory barrier
to avoid unwanted behavior due to processor optimizations)
and performance gain is not clear - generally global
atomic variables are something we would like to avoid
going forward.

Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2020-09-29 15:21:11 +02:00
Michal Mielewczyk
8b64206570 configure: add CAS_BLK_BIDI_RQ() macro
Since commit 8b3238cabd50e27 in linux kernel removed blk_bidi_rq() marco, it
has to be wrapped in CAS `configure` script

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2020-08-25 08:46:24 -04:00
Michal Mielewczyk
017c4261b0 cas_cache: log failed creating exported object
To avoid logging the same message each time _cache_mngt_create_exported_object()
is called, print error message within it.

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2020-07-07 08:28:53 -04:00
Michal Mielewczyk
296cb0ef86 cas_cache: log failed activating exported object
To avoid logging the same message each time block_dev_activate_exported_object()
is called, print error message within it.

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2020-07-07 08:28:53 -04:00
Rafal Stefanowski
44b4020cc1 Update copyright statements
Signed-off-by: Rafal Stefanowski <rafal.stefanowski@intel.com>
2020-05-04 16:47:38 +02:00
Michal Rakowski
2ff31a6abf cas_cache: use underscore instead of space in volume type name
Signed-off-by: Michal Rakowski <michal.rakowski@intel.com>
2020-01-16 17:47:57 +01:00
Michal Rakowski
33ad073dfd atomic: use proper step_size in sub io allocation
Signed-off-by: Michal Rakowski <michal.rakowski@intel.com>
2019-12-23 11:11:08 +01:00
Robert Baldyga
baa621e882
Merge pull request #167 from arutk/fix_block_dev_get_elevator_name_prototype
Make __block_dev_get_elevator_name return const string
2019-11-05 12:35:21 +01:00
Adam Rutkowski
ff207f9b2e Make __block_dev_get_elevator_name return const string
Returning non-const char* doesn't have any benefits since
the only caller casts the output pointer to const char *.

This change fixes compilation on 5.3 kernel.

Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-10-28 16:33:38 -04:00
Adam Rutkowski
9b8fdde201 Relax allocations requirements
CAS does not need atomic alocations virtually anywhere. GFP_NOIO
should be sufficient in IO path. When allocation buffers during
module initialization use GFP_KERNEL.

Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-10-23 16:04:27 -04:00
Michal Rakowski
a904a5bf66 Return values of expected type by the block layer
Signed-off-by: Michal Rakowski <michal.rakowski@intel.com>
2019-09-09 14:00:44 +02:00
Michal Rakowski
95af3c6f9f Move to blk-mq block interface.
Currently Open-CAS uses single queue block interface,
which is removed in kernel in version 5.0.
From this moment on Open-CAS supports only blk-mq,
and single queue is not supported any longer.

Signed-off-by: Michal Rakowski <michal.rakowski@intel.com>
2019-08-26 12:23:21 +02:00
Michal Rakowski
583deef8f6 configure: adapt to kernel 5.1
Signed-off-by: Michal Rakowski <michal.rakowski@intel.com>
2019-08-26 11:52:39 +02:00
Michal Mielewczyk
202da8140c Additional data type ops: deinit.
While unloading cas_cache module, volume types were deinitialized, although core
pool still wasn't empty. Now this deinitialization can be done after removing
cores from core pool, and before context is freed.

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2019-08-16 08:52:43 -04:00
Robert Baldyga
f038223979 Use name based OCF management API
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-08-16 14:08:34 +02:00
Robert Baldyga
231ae815c5 Adapt to new ocf_io API
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-07-27 18:53:02 +02:00
Michal Rakowski
eee7a0e220 Fix exported object cleanup in case of cache stop failure
In case of error during cache stop exported object is not being restored after destroying.
This may result in bug in case of calling stop once more.
This commit fixes this issue - exported objects are restored.

Signed-off-by: Michal Rakowski <michal.rakowski@intel.com>
2019-07-17 15:09:39 +02:00
Michal Rakowski
ee6cba515a Added create/activate/free all exported objects methods
Signed-off-by: Michal Rakowski <michal.rakowski@intel.com>
2019-07-17 09:43:43 +02:00
Michal Rakowski
47a150644c Doxygen fixup
Signed-off-by: Michal Rakowski <michal.rakowski@intel.com>
2019-07-17 09:43:43 +02:00
Adam Rutkowski
09e8d0992d Handle ocf_volume_open ret code in cas_blk_open_volume_by_bdev
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-06-27 11:12:43 -04:00
Michal Rakowski
f9c0c929c1 Translate OCF-error-codes in IO path
Signed-off-by: Michal Rakowski <michal.rakowski@intel.com>
2019-06-05 15:34:04 +02:00
Robert Baldyga
8d59e41e20 Add utils_mpool
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-06-04 14:40:22 +02:00
Michal Mielewczyk
1e5355eba1 Extending 'configure' script
Functions and macros dependent on different kernel versions are now generated
before compilation basing on current kernel capabilities instead of hardcoding
them for specific kernels.

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2019-05-30 06:29:07 -04:00
Michal Mielewczyk
f62c53862d Add asserts in case of detached cache.
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2019-04-19 03:59:43 -04:00
Michał Wysoczański
f5588bbada
Merge pull request #3 from arutk/atomic_dev_fixes
Atomic volume fixes
2019-04-03 08:52:25 +02:00
Adam Rutkowski
9670adf751 Move querying for atomic device params before cache start
This needs to be done in caller application context. As part of asynchronous
management API rework, volume_open callback was moved to kernel worker thread
context. To work around this, atomic parameters are now read before cache
attach/load/probe and provided to bottom volume via volume params.

Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-04-02 14:47:39 -04:00
Adam Rutkowski
21abb82081 Return max io size for atomic volume in bytes
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-04-02 14:37:56 -04:00
Adam Rutkowski
444feb840c Remove intermediate files from repo
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-03-29 14:52:25 -04:00
Robert Baldyga
94e8ca09e0 Initial commit
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-03-29 08:45:50 +01:00