Michal Mielewczyk
340ca76159
Move check for valid cache size in load.
...
Loaded cache size should be compared with acutal cache size after loading
superblock.
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2019-08-05 07:58:38 -04:00
Michal Mielewczyk
80f82cab2b
Deinitialize volume types in ocf internally.
...
Adapter can provide ops for data type deinitialization, if any additional
operations are required on deinitialization procedure.
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2019-08-05 06:16:46 -04:00
Robert Baldyga
fdf6d07b85
Fix typo "collisioin" -> "collision"
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-08-03 20:04:23 +02:00
Robert Baldyga
4b1a3fa4b5
Simplify metadata_raw interface
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-08-03 20:04:23 +02:00
Robert Baldyga
a31ddd44cb
Remove ocf_metadata_hash_entries_hash()
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-08-03 20:04:23 +02:00
Robert Baldyga
ff7583c6da
Simplify partition metadata interface
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-08-03 20:04:23 +02:00
Robert Baldyga
3108f36e42
Simplify collision matadata interface
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-08-03 20:04:23 +02:00
Robert Baldyga
0b0546302f
Remove ocf_metadata_get_core_sector()
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-08-03 20:04:23 +02:00
Robert Baldyga
0ca0ea1343
Remove ocf_metadata_line_size_is_valid()
...
This function is no longer used.
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-08-03 20:04:23 +02:00
Robert Baldyga
92c7e12549
Remove core id from public API
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-07-30 09:26:26 +02:00
Robert Baldyga
1100cb0b4f
Remove cache id from public API
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-07-30 09:26:26 +02:00
Robert Baldyga
259df7ace9
Store core name in metadata
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-07-30 09:26:26 +02:00
Robert Baldyga
eb4272afa9
Store cache name in metadata
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-07-30 09:26:17 +02:00
Robert Baldyga
4f0735b503
Ensure that core name is set and unique
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-07-29 17:37:48 +02:00
Robert Baldyga
901b39031f
Ensure that cache name is set and unique
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-07-29 17:37:43 +02:00
Robert Baldyga
331b99397f
Change ctx lock to rmutex
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-07-29 15:08:44 +02:00
Kamil Łepek
05be67a72b
Merge pull request #220 from arutk/metadata_offset_hash
...
New hash function formula
2019-07-29 13:03:04 +02:00
Jan Musiał
fa14d6a4b5
Merge pull request #221 from arutk/metadata_rename_concurrency
...
Restrutcure concurrency code
2019-07-29 09:42:37 +02:00
Robert Baldyga
3355a6cd56
engine: discard: Add missing put on error path
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-07-27 19:06:11 +02:00
Adam Rutkowski
494861c994
Rename cache_concurrency to cache_line_concurrency
...
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-07-24 15:32:12 -04:00
Adam Rutkowski
e5bed8825c
Move metadata concurrency to a separate file
...
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-07-24 15:32:09 -04:00
Adam Rutkowski
3dd4263bc8
Change hash function
...
Modify ocf_metadata_hash_func to return consecutive (modulo @hash_table_entries)
values for consecutive @core_line_num. This way it is trivial to sort all
core lines within a single request according to their hash value. This kind
of sorting will be required to assure that future hash bucket metadata locks
are always acquired in fixed order, eliminating the risk of dead locks.
This change is part of fine granularity metadata lock implementation.
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-07-24 15:02:34 -04:00
Adam Rutkowski
7184f7787c
Cleanup map_info struct
...
1. Rename hash_key -> hash
2. Better comments for hash and coll_idx
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-07-24 13:12:05 -04:00
Michal Rakowski
aa02f56b05
Merge pull request #218 from robertbaldyga/rm-includes-metadata-superblock
...
Remove unneeded includes in metadata_superblock.h
2019-07-23 13:56:39 +02:00
Jan Musiał
1fd1a6fe17
Merge pull request #209 from arutk/stop_no_queue
...
Allow to stop cache without management queue
2019-07-23 13:51:21 +02:00
Robert Baldyga
ab2f8b199a
Remove unneeded includes in metadata_superblock.h
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-07-23 13:00:05 +02:00
Jan Musiał
232f0cd8d7
Merge pull request #216 from robertbaldyga/io-and-req-in-single-allocation
...
Allocate io and req in single allocation
2019-07-23 11:40:30 +02:00
Jan Musiał
08abf69224
Merge pull request #217 from Open-CAS/remove-redundant-field
...
Remove redundant field from struct ocf_cache_device
2019-07-23 09:55:03 +02:00
Jan Musial
917cbd859a
Add promotion policy API and use it in I/O path
...
Promotion policy is supposed to perform ALRU noise filtering by
eliminating one-hit wonders being added to cache and polluting it.
Signed-off-by: Jan Musial <jan.musial@intel.com>
2019-07-19 13:52:00 +02:00
Robert Baldyga
6822ab6140
Remove redundant field from struct ocf_cache_device
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-07-19 12:59:14 +02:00
Robert Baldyga
e64bb50a4b
Allocate io and request in single allocation
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-07-17 10:31:23 +02:00
Robert Baldyga
61414f889e
Introduce OCF IO allocator
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-07-17 10:31:23 +02:00
Robert Baldyga
e254c9b587
Merge new_io and configure into one function
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-07-17 10:31:23 +02:00
Robert Baldyga
4d2d31ff76
Introduce ocf_io_internal
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-07-17 09:54:51 +02:00
Adam Rutkowski
4f04b2762f
Simplified stop path for cache detached case
...
When cache is detached we cannot assume there is a management
queue created. This change introduces simplified cache stop
path, performing all the necessary deinit without using
IO queues.
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-07-08 18:26:35 -04:00
Michal Mielewczyk
636834dae3
Check for existing metadata when attaching cache.
...
Instead of overriding existing metadata silently, return appropriate error.
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2019-07-08 09:23:32 -04:00
Jan Musial
aab3c4fbaa
Fix typo in metadata_hash_entries fcn
...
Signed-off-by: Jan Musial <jan.musial@intel.com>
2019-07-04 14:01:27 +02:00
Jan Musial
ede2bcdf48
Fix volumes deinit routine
...
Signed-off-by: Jan Musial <jan.musial@intel.com>
2019-06-28 13:03:14 +02:00
Jan Musiał
e7e0ad957d
Merge pull request #201 from mmichal10/fix-load-error-handling
...
Fix error handling in case of failed load
2019-06-26 12:24:02 +02:00
Jan Musial
2c629be4c2
Fix leaking front and core volumes
...
Signed-off-by: Jan Musial <jan.musial@intel.com>
2019-06-26 10:00:49 +02:00
Michal Mielewczyk
52f6d6280b
Fix error handling in case of failed load
...
Store default metadata values and restore them in case of failed load.
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2019-06-25 09:31:05 -04:00
Jan Musial
4a20ce9c25
Fix leaking cache references
...
Signed-off-by: Jan Musial <jan.musial@intel.com>
2019-06-25 11:43:28 +02:00
Michal Rakowski
b1a6c467a0
Introduce core_is_dirty mngt method
...
Signed-off-by: Michal Rakowski <michal.rakowski@intel.com>
2019-06-25 09:12:44 +02:00
Michal Rakowski
a818ffabfd
Move ocf_mngt_cache_is_dirty to public mngt interface
2019-06-24 15:23:06 +02:00
Michal Rakowski
2925147395
Remove reduntant dirty check
...
When flush completion is called there could be some clines marked as dirty since those could be in-use during flushing.
2019-06-24 14:24:34 +02:00
Jan Musial
aec01f216c
Revert "Disallow ocf_cache_mode_max in io_class config"
...
This reverts commit 5ad5c521df
.
This change broke setting IO-classes with allocation. We use max as a
special value to indicate that the partition should use cache global
caching mode.
2019-06-14 14:08:28 +02:00
Michał Mielewczyk
f9f75e7265
Merge branch 'master' into wo_improvements
2019-06-13 11:32:06 +02:00
Adam Rutkowski
6bb1d21489
Do not repartition cachelines in WO read
...
WO cache mode should not repartition cachelines nor affect cacheline
status in any way when servicing read. Reading data from the cache
is just an internal optimization. Also WO cache mode is designed to
be used with partitioning based on write life-time hints and read
requests do not carry write lifetime hint by definition.
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-06-13 13:14:30 -04:00
Michal Mielewczyk
e8b24d811b
Check if all required ops are provided by adapter.
...
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2019-06-13 04:46:03 -04:00
Adam Rutkowski
9dc1381b77
Refactor ocf_submit_cache_reqs map indexing
...
Refactoring ocf_submit_cache_reqs to make it clear that
req->map is accessed at index derived from offset argument,
not necesarily starting at 0.
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-06-12 18:56:40 -04:00
Adam Rutkowski
b82ed3af26
Initialize @increment in ocf_read_wo_cache_do
...
Static code analyzers fail to understand that this variable
is always assigned to before usage.
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-06-12 13:44:01 -04:00
Adam Rutkowski
b97bb6f53b
Add function to check for lazy write cache mode (WO or WB)
...
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-06-12 12:07:02 -04:00
Adam Rutkowski
82e8c55f4a
Write-only cache mode
...
Write-only cache mode is similar to writeback, however read
operations do not promote data to cache. Reads are mostly serviced
by the core device, only dirty sectors are fetched from the cache.
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-06-12 12:07:02 -04:00
Adam Rutkowski
ae6164a49c
Helper functions to get request start/end sector in cacheline
...
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-06-12 12:07:02 -04:00
Michal Mielewczyk
328d27846a
Prevent overriding null terminator in cache name
2019-06-11 12:12:07 +02:00
Michal Mielewczyk
46c17144f6
Remove redundant check for core id
2019-06-11 12:12:07 +02:00
Michal Mielewczyk
6cdbac82bc
Check for valid core_id value
2019-06-11 12:12:07 +02:00
Michal Mielewczyk
fc5334e419
Return memcpy result
2019-06-11 12:12:07 +02:00
Michal Rakowski
29199cb5d4
Added missing metadata_unlock
...
Signed-off-by: Michal Rakowski <michal.rakowski@intel.com>
2019-06-11 12:12:07 +02:00
Michal Rakowski
4789fb38f0
Added asserts in sample env for synchronization functions
...
Signed-off-by: Michal Rakowski <michal.rakowski@intel.com>
2019-06-11 11:01:06 +02:00
Michal Rakowski
b1cf6c4642
Changed always returning 0 to void foo
...
Signed-off-by: Michal Rakowski <michal.rakowski@intel.com>
2019-06-11 09:53:40 +02:00
Michal Rakowski
30ac3abd74
Small get_ram_needed fix, proper volume is initialized now.
2019-06-11 09:53:40 +02:00
Michal Mielewczyk
be64173066
Fix order of operations in cache stop completion
...
Prevent metadata updater being freed by pyocf before it's deinitialized by ocf.
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2019-06-06 09:03:26 -04:00
Michal Rakowski
d714f6235b
Use rate limited logging in case of engine error
...
Signed-off-by: Michal Rakowski <michal.rakowski@intel.com>
2019-06-06 11:27:25 +02:00
Michal Mielewczyk
e6bedb692c
Unified management functions prefix.
...
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2019-06-05 09:31:59 -04:00
Michal Rakowski
9f4536c6e3
Error codes in IO path changed to OCF-specific
...
Signed-off-by: Michal Rakowski <michal.rakowski@intel.com>
2019-06-05 09:10:54 +02:00
Robert Baldyga
f240f81641
Make request structure more compressed
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-06-03 19:19:29 +02:00
Adam Rutkowski
d7b3a187e4
Fix condition for setting req->info.dirty_all
...
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-05-31 19:10:11 -04:00
Michal Wysoczanski
d27f81c588
Add missing new line in error message
...
Signed-off-by: Michal Wysoczanski <michal.wysoczanski@intel.com>
2019-05-30 00:03:09 +02:00
Robert Baldyga
711de86bff
Associate core metadata with core object
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-28 14:49:59 +02:00
Robert Baldyga
417ea8c06f
Make atomic recovery path truly asynchronous
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-28 11:31:50 +02:00
Robert Baldyga
46ae8b2ff1
Remove unused OCF_ERR_CACHE_IN_USE error code
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-28 11:20:48 +02:00
Robert Baldyga
8a82be339f
Introduce asynchronous cache lock
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-28 11:20:48 +02:00
Robert Baldyga
f9447fda75
Remove all the trailing whitespaces
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-27 17:00:39 +02:00
Robert Baldyga
bdcd4df0ef
Remove utils_device.h
...
Move core mngt related code to ocf_mngt_core.c
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-27 17:00:39 +02:00
Robert Baldyga
7de56940a4
Move ocf_request from utils
...
ocf_request has always been first class citizen in OCF,
so lets place it along with another essential objects.
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-27 15:51:27 +02:00
Robert Baldyga
57bc19103d
Remove unused core_io_allocator
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-27 14:19:10 +02:00
Robert Baldyga
ab2fc6d3c3
Rename utils_allocator to utils_realloc
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-27 13:10:17 +02:00
Robert Baldyga
cda536a14a
Remove mpool from OCF utils
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-27 13:04:40 +02:00
Jan Musiał
93a06686a7
Merge pull request #165 from robertbaldyga/ctx-get-put
...
Give ocf_ctx get/put semantics
2019-05-24 14:29:04 +02:00
Robert Baldyga
c903d13ad2
Give ocf_ctx get/put semantics
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-23 15:50:10 +02:00
Robert Baldyga
7ff4a349ec
Use enum cache line values when validating config
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-23 13:29:49 +02:00
Robert Baldyga
efa96ef7bd
Add ocf_cache_line_size_none
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-23 13:29:49 +02:00
Michal Rakowski
8c96270ce8
Merge pull request #164 from robertbaldyga/add-open-cores-parameter
...
Add open_cores parameter to ocf_mngt_cache_device_config
2019-05-23 10:44:47 +02:00
Michal Rakowski
4216ff78f1
Merge pull request #163 from robertbaldyga/put-queue-after-deallocating-req
...
Put queue after deallocating request
2019-05-23 10:38:13 +02:00
Robert Baldyga
2cf2a59584
Add open_cores parameter to ocf_mngt_cache_device_config
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-21 18:18:33 +02:00
Robert Baldyga
dbef4b721c
Put queue after deallocating request
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-21 16:09:58 +02:00
Michal Rakowski
76bcac5b45
Merge pull request #160 from robertbaldyga/remove-unnecessary-attach-step
...
Remove unnecessary attach step
2019-05-21 14:02:19 +02:00
Michal Rakowski
9b3bf801e2
Merge pull request #159 from robertbaldyga/req-store-core-handle
...
Store core handle instead of core_id in ocf_request
2019-05-21 13:52:55 +02:00
Robert Baldyga
b551d301ff
ocf_trace: Fix req naming convention
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-21 12:30:29 +02:00
Robert Baldyga
0490dd8bd4
ocf_reqest: Store core handle instead of core_id
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-21 12:30:29 +02:00
Robert Baldyga
5ad5c521df
Disallow ocf_cache_mode_max in io_class config
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-21 09:33:33 +02:00
Robert Baldyga
e8bf299176
Remove unnecessary attach step
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-21 09:17:39 +02:00
Robert Baldyga
f5463d9a16
Set queue for metadata io submitted to cache volume
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-14 14:15:47 +02:00
Robert Baldyga
c263e3e9eb
metadata: Put io before callback invocation
...
This allows for safe volume destruction in callback function.
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-13 12:12:37 +02:00
Michal Rakowski
0412e05260
Merge pull request #73 from mmichal10/cleaner-kick
...
Add kick function for cleaner
2019-05-10 14:33:49 +02:00
Michal Mielewczyk
7165bc16c3
Add kick function for cleaner
...
ocf_kick_cleaner() allows to perfom cleaning immediately.
Nop cleaning policy now returns new 'OCF_CLEANER_DISABLE' macro which indicates
that cleaing shouldn't be performed. To enable it back, ocf_kick_cleaner()
should be called.
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2019-05-10 08:09:56 -04:00
Michał Wysoczański
a145815747
Merge pull request #149 from Donaim/master
...
Set core_id during load if user did not specify one
2019-05-10 12:59:07 +02:00
Robert Baldyga
580d5506cd
Stop treating UUID as ANSI string
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-10 12:49:51 +02:00
Vitaliy Mysak
8391300bc8
Set core_id during load if user did not specify one
...
If cfg->core_id is OCF_CORE_MAX and that core matches the UUID of
existing not opened one, then set cfg->core_id to id of that core.
This is useful when loading cache from metadata: if user does not store
the ids of cores but relies on OCF to assign them, there is no need to
not reassign them on load.
Previus behaviur when cfg->core_id != id of core with matching UUID is
maintained.
Signed-off-by: Vitaliy Mysak <vitaliy.mysak@intel.com>
2019-05-09 23:39:18 +00:00
Michal Rakowski
94ef5a5249
Merge pull request #148 from mmichal10/fix-cleaner-stopping
...
Distinguish stopping cache from attached and detached states.
2019-05-09 14:42:17 +02:00
Michal Mielewczyk
676de5254f
Distinguish stopping cache from attached and detached states.
...
If stopping attached cache, cleaner should be stopped.
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2019-05-09 08:21:36 -04:00
Michal Rakowski
78fea63178
Merge pull request #147 from robertbaldyga/fix-compilation-error-int-const-bool-context
...
Fix compilation error
2019-05-09 12:57:44 +02:00
Jan Musiał
8e4a1f10f0
Merge pull request #146 from robertbaldyga/init-core-pool-with-ctx
...
Initialize and deinitialize core pool with ctx
2019-05-09 12:41:00 +02:00
Robert Baldyga
0305fba4a3
Fix compilation error
...
Passing int constant directly to OCF_PL_NEXT_ON_SUCCESS_RET() macro caused
following compilation error (on GCC 7.4.0):
src/ocf/mngt/ocf_mngt_core.c:599:33: error: ?:
using integer constants in boolean context [-Werror=int-in-bool-context]
error ? -OCF_ERR_WRITE_CACHE : 0);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
src/ocf/mngt/../utils/utils_pipeline.h:145:6: note:
in definition of macro ‘OCF_PL_NEXT_ON_SUCCESS_RET’
if (error) \
^~~~~
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-09 12:02:41 +02:00
Robert Baldyga
6c7df8abf6
Initialize and deinitialize core pool with ctx
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-09 11:22:06 +02:00
Robert Bałdyga
1c9fe96663
Merge pull request #133 from arutk/ajrutkow_async_counters
...
Extended reference counting
2019-05-08 14:23:50 +02:00
Robert Baldyga
7b88aac56f
Remove "interruption" argument from flush() functions
...
As non-interruptible flushes are no longer triggered from OCF
internals, we can get rid of "interruption" argument and let
adapters handle it themselves.
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-07 17:23:19 +02:00
Adam Rutkowski
aafc067fa5
Combine cache ref counter and valid flag into ocf_refcnt
...
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-05-06 19:37:51 -04:00
Adam Rutkowski
4251cc63e7
Do not send zero_line request if d2c
...
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-05-06 19:37:51 -04:00
Adam Rutkowski
af4b9b13d0
Freeze / unfreeze cleaning reference counters in detach/attach
...
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-05-06 19:37:51 -04:00
Adam Rutkowski
348b0f9ab8
Async wait for cleaner completion
...
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-05-06 19:37:49 -04:00
Adam Rutkowski
0e15c693fd
Return post modification value from ocf_refcnt_inc/dec
...
If counter is frozen then increment returns 0.
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-05-06 19:23:11 -04:00
Adam Rutkowski
962f9d17d1
Remove functions to wait for cache pending requests
...
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-05-06 19:23:11 -04:00
Adam Rutkowski
92e9ae12f1
Wait for metadata requests in stop
...
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-05-06 19:23:11 -04:00
Adam Rutkowski
dc716d6a08
Use ref counter to track attach state
...
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-05-06 19:23:10 -04:00
Adam Rutkowski
979f51612f
Move dirty ref counter to cache->refcnt aggregate
...
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-05-06 19:22:29 -04:00
Adam Rutkowski
555f477248
Do not increment attached metadata counter on behalf of mngt requests
...
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-05-06 19:22:29 -04:00
Robert Baldyga
42b5cd1777
Get cache on queue creation and put it on queue destruction
...
This prevents situation when cache object is being destroyed
while some queues still exist.
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-06 17:30:32 +02:00
Robert Baldyga
a82d420ee0
Add management queue guards where needed
...
Prevent starting management operations that require pipeline
when management queue isn't set.
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-02 17:26:04 +02:00
Robert Baldyga
c2aea209db
Introduce pipeline *_RET macros
...
This simplifies code by allowing to express programmer intent
explicitly and helps to avoid missing return statements (this patch
fixes at least one bug related to this).
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-02 17:22:43 +02:00
Robert Baldyga
1373471af7
Introduce OCF_CMPL_RET() macro
...
This simplifies cases when we want to call completion callback
and immediately return from void-returning function, by allowing
to explicitly express programmers intent. That way we can avoid
cases when return statement is missing by mistake (this patch
fixes at least one bug related to this).
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-02 17:22:36 +02:00
Robert Baldyga
bcb2e670f3
metadata: Remove unnecessary check
...
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-05-02 17:22:28 +02:00
Adam Rutkowski
26579e53cd
Refactor cache mngt stop/detach for better error handling
...
_ocf_mngt_cache_unplug context is now provided by the caller.
This way _ocf_mngt_cache_unplug returns only non-critical (cache write)
errors, allowing stop/detach operation to always proceed and optionally
finish with error. This eliminates the need for rolling back previous
stop/detach operations, which might turn out to be impossible e.g.
under memory pressure.
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-04-23 16:16:18 -04:00
Vitaliy Mysak
bf2242fade
Fix immediate reassign
...
Don't reassign value of cache without any previus use.
It produced warnings when analyzing with scanbuild.
Signed-off-by: Vitaliy Mysak <vitaliy.mysak@intel.com>
2019-04-19 09:25:23 -04:00
Adam Rutkowski
c7df9161be
Use secure alloc in _raw_dynamic_get_item
...
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-04-18 23:11:12 -04:00
Michal Rakowski
3d6b3ea2e8
Added missing return in metadata_probe_cores
...
Signed-off-by: Michal Rakowski <michal.rakowski@intel.com>
2019-04-18 16:35:05 +02:00
Adam Rutkowski
c5a80cc488
Use env_secure_(alloc/free) macro for metadata allocations
...
Adapter can opt to take additional steps to securely allocate
memory used by OCF to store cache metadata. Typically this would
involve mlocking pages and zeroing memory before deallocation.
Memory allocated using secure_alloc is not expected to be zeroed
or physically continous.
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-04-18 17:54:05 -04:00
Michał Mielewczyk
2af7e7b4de
Merge pull request #125 from arutk/vol_ref_cnt
...
Wait for IO put in volume close
2019-04-18 09:02:58 +02:00
Adam Rutkowski
1efb301462
Wait for IO put in volume close
...
Volume close should not close underlying device until all
I/O targeting this volume are deallocated. To achieve this
a reference counter is added to volume. Counter value
matches number of I/O objects associated with volume. Counter
is freezed when volume is closed, blocking allocation of new
I/O objects.
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-04-17 23:12:04 -04:00
Adam Rutkowski
407470c25d
Add reference counter init routine
...
This is useful when reference counter is initialized in non-zeroed
memory (or assuming atomic variable is not properly initialized by
memseting to zero).
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-04-17 23:12:04 -04:00
Michal Mielewczyk
5e52ac4ef2
Rename 'printf' field name in logger ops to 'print'.
...
Due the aggresive security checks in compiler 'printf' might be substituded with
'__printf_chk'. However it does not differentiate whether substituted string is
library function call whether field in structure.
By renaming field we prevent it to be unintentionally subustituted by the
preprocessor.
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2019-04-17 11:37:47 -04:00
Michal Mielewczyk
ff079aa5b4
Initialize variable meant for keeping ocf_mngt_start_trace() result.
...
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2019-04-17 11:28:05 -04:00
Jan Musiał
121b3233e4
Merge pull request #120 from arutk/core-query-api
...
Add API to query for core devices associated with cache
2019-04-17 13:33:04 +02:00
Adam Rutkowski
dfd89dd43a
Probe core UUIDs from metadata
...
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-04-17 14:07:42 -04:00
Michal Rakowski
4652b009d6
Added seq_cutoff_policy check
...
Signed-off-by: Michal Rakowski <michal.rakowski@intel.com>
2019-04-16 14:48:41 +02:00
Adam Rutkowski
f0c3e049c6
Merge pull request #117 from mmichal10/null-ptr-on-cache-id-reuse
...
Fix teardown after failed start cache operation.
2019-04-11 09:03:09 -04:00
Michal Mielewczyk
fbfd17ec42
Fix teardown after failed start cache operation.
...
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2019-04-11 04:33:32 -04:00
Adam Rutkowski
a6e7ee528e
Fix error handling in cache unplug
...
Errors not related to cache disk I/O failure should force
cache stop to return with error without deinitializing cache
instance.
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-04-10 15:15:12 -04:00
Jan Musial
15fb0d04bd
Fix IO queue validation
...
Signed-off-by: Jan Musial <jan.musial@intel.com>
2019-04-08 14:40:20 +02:00
Jan Musial
5d6277e7cf
Fix flushing of volatile metadata containers
...
Before async metadata we used to return 0 on flushing volatile
containers, this way we didn't have to special-case them.
This change brings back this behavior.
Signed-off-by: Jan Musial <jan.musial@intel.com>
2019-04-08 12:39:53 +02:00
Michał Mielewczyk
f9e5d019df
Merge pull request #103 from arutk/arutk-force-separate-mngmt-io-queue
...
Do not allow top volume I/O on management queue
2019-04-05 13:22:40 +02:00
Adam Rutkowski
d88a4ac57a
Do not allow top volume I/O on management queue
...
Core volume I/O must not be queued on management queue - this would
break I/O accounting code, resulting in use-after-free type of errors
after cache detach, core remove etc.
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-04-05 14:55:28 -04:00
Adam Rutkowski
0b68e02e9a
Reset interrupted flag in core_flush
...
This line got lost in async flush rework
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-04-05 13:26:55 -04:00
Michał Wysoczański
0192f4070d
Merge pull request #96 from micrakow/volume_move_fix
...
Added original uuid deinitialization without freeing
2019-04-02 11:31:46 +02:00
Michal Rakowski
a6c75b9900
Added original uuid deinitialization without freeing
...
There is a risk that without uuid.data pointer denitialization it will
be freed during original volume deinit, zeroing uuid.data pointer
prevents that.
Signed-off-by: Michal Rakowski <michal.rakowski@intel.com>
2019-04-02 11:02:51 +02:00
Adam Rutkowski
2aba5a2843
Add volume_params argument to bottom volume open
...
This pointer is used to provide optional volume specific data
from the user down to bottom volume open callback. volume_params
is provided to OCF in ocf_mngt_cache_device_config.volume_params.
Signed-off-by: Adam Rutkowski <adam.j.rutkowski@intel.com>
2019-04-01 19:28:14 -04:00
Adam Rutkowski
7e9ff6456d
Merge pull request #92 from mmichal10/fix-preventing-metadata-override
...
Return error on start when detected old metadata of not flushed cache.
2019-03-29 16:29:22 +01:00
Michal Mielewczyk
a1075f7cf6
Return error on start when detected old metadata of not flushed cache.
...
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2019-03-29 11:22:49 -04:00
Adam Rutkowski
d34942e7e5
Merge pull request #91 from mmichal10/fix-cleaning-pol-ret-val
...
Fix inappropriate return value when setting cleaning policy
2019-03-29 15:53:21 +01:00