Commit Graph

711 Commits

Author SHA1 Message Date
Michal Mielewczyk
d06f376627 Alru cleaning policy improvement
Instead of calling flush separatly for each IO class, it is called after
collecting number of dirty cache lines defined by user or after iterating
through all IO classes.

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2019-03-11 04:08:16 -04:00
Michal Mielewczyk
b611c0e67a Calling completions function in nop cleaning policy.
Unlocking cache and putting queue are perormed in cleaning completion, so all
cleaning policies has to call completion.

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2019-03-11 04:08:16 -04:00
Michal Rakowski
e5227cef89 Implement pyocf adapter with sample OCF test
PyOCF is a tool written with testing OCF functionality in mind.
It is a Python3 (3.6 version required) package which wraps OCF
by providing Python objects in place of OCF objects (volumes, queues,
etc). Thin layer of translation between OCF objects and PyOCF objects
enables using customized behaviors for OCF primitives by subclassing
PyOCF classes.

This initial version implements only WT and WI modes and single,
synchronously operating Queue.

TO DO:

  - Queues/Cleaner/MetadataUpdater implemented as Python threads
  - Loading of caches from PyOCF Volumes (fix bugs in OCF)
  - Make sure it works multi-threaded for more sophisticated tests

Co-authored-by: Jan Musial <jan.musial@intel.com>
Signed-off-by: Michal Rakowski <michal.rakowski@intel.com>
Signed-off-by: Jan Musial <jan.musial@intel.com>
2019-03-07 12:48:40 +01:00
Michal Rakowski
794b008127
Merge pull request #66 from robertbaldyga/metadata-probe-asynchronous
Make metadata probe asynchronous
2019-03-04 12:26:34 +01:00
Robert Baldyga
9b9b965b55 Add cache locking functions in trylock variant
- Add cache trylock and read trylock functions.
- Introduce new error code -OCF_ERR_NO_LOCK.
- Change trylock functions in env to return this code in case of
  lock contention.

[ENV CHANGES REQUIRED]
Following functions should return 0 on success or -OCF_ERR_NO_LOCK
in case of lock contention:
- env_mutex_trylock()
- env_rwsem_up_read_trylock()
- env_rwsem_up_write_trylock()

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-03-01 17:31:32 +01:00
Robert Baldyga
9c0390a6ce Make metadata probe asynchronous
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-03-01 15:46:16 +01:00
Robert Baldyga
c1028b2b89 Add ocf_cache_set_flush_queue() function
This is needed to enable flushing with dynamic queues.

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-02-28 10:51:51 +01:00
Jan Musiał
d5ac3035d7
Merge pull request #64 from robertbaldyga/add-has-pending-reqs-func
Add ocf_cache_has_pending_requests() function
2019-02-27 12:22:16 +01:00
Michal Mielewczyk
e53944d472 Dynamic I/O queue management
- Queue allocation is now separated from starting cache.
- Queue can be created and destroyed in runtime.
- All queue ops accept queue handle instead of queue id.
- Cache stores queues as list instead of array.

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-02-26 17:36:19 +01:00
Robert Baldyga
03bd6d6c49 Add ocf_cache_has_pending_requests() function
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-02-26 17:23:07 +01:00
Michal Mielewczyk
1771228a46 Removed starting cache from load
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2019-02-20 17:36:37 -05:00
Robert Baldyga
44ed250d41 Add API function ocf_cache_wait_for_io_finish()
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-02-20 11:16:06 +01:00
Robert Bałdyga
435cc6209a
Merge pull request #60 from robertbaldyga/make-cleaner-async
Make cleaner asynchronous
2019-02-19 16:18:21 +01:00
Robert Baldyga
404b976109 Make cleaner asynchronous
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-02-19 16:10:24 +01:00
Robert Bałdyga
163392af0b
Merge pull request #55 from MinneyJohn/metadata_improve
Improvement of metadata flush setting
2019-02-19 15:49:02 +01:00
xqzhou
bbb0e1bbb0 Improvement of metadata flush setting
Signed-off-by: xqzhou <xue.qiang.zhou@intel.com>
2019-02-19 05:14:06 -07:00
Michal Mielewczyk
f8037cb349 Added function to hanlde single request from queue. 2019-02-13 12:02:59 -05:00
Robert Baldyga
97300b1137 Rename "data object" to "volume"
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-02-08 14:13:05 +01:00
Michal Mielewczyk
2dfd6248c9 Configure all io classes at once.
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2019-01-28 08:51:26 -05:00
Michal Mielewczyk
5c81824a8d Added mechanism for preventing dirty requests.
Instead of switching write policy to pass-through, barrier is rised
by incrementing counter in ocf_cache_t structure.

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2019-01-24 05:16:16 -05:00
Robert Baldyga
3b4a666942 Enable passing priv to logger during context initialization
This may be used in logger implementations that need file
name or descriptor to initialize properly.

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-01-24 10:54:50 +01:00
Robert Baldyga
6860cdbd2c Reorganize context ops
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-01-22 13:14:35 +01:00
Robert Baldyga
03c2f142b3 Cache lock cleanup and API improvements
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-01-21 13:46:28 +01:00
Robert Baldyga
0abb4dbbca Minor coding style fixes
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-01-18 14:52:13 +01:00
Robert Bałdyga
21eb60ef1e
Merge pull request #43 from mmichal10/task-code-refactoring
Code refactoring
2019-01-16 13:56:07 +01:00
Michal Mielewczyk
916f46c893 Code refactoring
Removed few dead assignments and added variables initialization.
2019-01-16 06:46:00 -05:00
Robert Baldyga
7352f3092d Fix leak in core pool
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-01-16 11:53:54 +01:00
Robert Baldyga
d9cfab67b8 Fix compilation errors after tracing introduction
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-01-14 17:28:51 +01:00
Robert Bałdyga
dd6b074258
Merge pull request #3 from tomaszrybicki/add-tracing-support
Added tracing functionality
2019-01-14 16:37:34 +01:00
Michał Mielewczyk
f11db9c31a
Merge pull request #38 from robertbaldyga/remove-name_size
Remove name_size field from cache and core config
2019-01-14 16:04:16 +01:00
Robert Baldyga
07191c322e Express maximum io size in bytes instead of sectors
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-01-14 15:10:09 +01:00
Robert Baldyga
322f1aeffd Remove name_size field from cache and core config
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-01-14 15:09:09 +01:00
Tomasz Rybicki
1156531590 Added tracing functionality
Signed-off-by: Tomasz Rybicki <tomasz.rybicki@intel.com>
2019-01-14 14:17:48 +01:00
Michał Mielewczyk
e6dc62e09a
Merge pull request #33 from micrakow/master
Added sample env files and makefile to be used by functional tests
2019-01-08 13:32:17 +01:00
Michal Rakowski
c30f667bda Fix usage of atomic_ to env_atomic
Signed-off-by: Michal Rakowski <michal.rakowski@intel.com>
2019-01-07 17:25:47 +01:00
Vitaliy Mysak
506f0aa975 Add more missing io_set_queue
Propagate id of ocf_queue for discard io

This resolves the issue of
  bottom adapter always getting an ocf_io with io_queue = 0,
  no matter from which queue function to bottom adapter was called

This is a follow up on e69894e398

Signed-off-by: Vitaliy Mysak <vitaliy.mysak@intel.com>
2019-01-06 20:57:52 +00:00
Robert Baldyga
4cf4d6d7c7 Simplify data object API
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-01-04 17:34:39 +01:00
Robert Baldyga
67f17b9dc2 Add more missing io_put() calls
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-01-04 13:11:30 +01:00
Michal Rakowski
e139f79d6b
Merge pull request #25 from robertbaldyga/core-data-object
Core data object
2019-01-04 09:19:46 +01:00
Robert Baldyga
4be6761a18 Core data object
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-01-04 08:33:34 +01:00
Robert Baldyga
721bc647bd Add env_cond_resched() in the loop that may execute for a long time
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2019-01-02 14:49:30 +01:00
Robert Baldyga
8d127e6351 Move eviction stuff to eviction/ directory
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2018-12-31 14:51:51 +01:00
Robert Baldyga
aeef20524f Fix _ffz() function
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2018-12-21 09:16:09 +01:00
Robert Baldyga
71f1682215 Add missing io puts
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2018-12-20 14:35:26 +01:00
Robert Baldyga
d73e0512b1 Fix OCF compilation - use new macro name
This looks like during change from DIV_ROUND_UP to OCF_DIV_ROUND_UP
this one occurrence has been missed.

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2018-12-18 09:17:39 +01:00
Vitaliy Mysak
e69894e398 Set io_queue for some requests
Propagate id of ocf_queue where it is possible

This resolves the issue of
  bottom adapter always getting an ocf_io with io_queue = 0,
  no matter from which queue function to bottom adapter was called

Signed-off-by: Vitaliy Mysak <vitaliy.mysak@intel.com>
2018-12-14 22:52:39 +00:00
Mariusz Barczak
15ed5b4450 OCF provides own macros for MIN, MAX, and DIV_ROUND_UP
Signed-off-by: Mariusz Barczak <mariusz.barczak@intel.com>
2018-12-13 10:59:23 -05:00
Michal Rakowski
abb8dc5067
Merge pull request #14 from robertbaldyga/complete-naming-cleanup
Unify completion functions naming
2018-12-13 09:34:03 +01:00
Robert Baldyga
951b628fe5 Unify completion functions naming
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2018-12-13 07:49:27 +01:00
Robert Baldyga
6d81924891 Remove assembler code
Replace assembler code with C equivalent and slightly simplify
logic searching for first free core.

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2018-12-13 07:33:16 +01:00
Michal Rakowski
a643614fd6
Merge pull request #12 from robertbaldyga/req-naming-cleanup
Req naming cleanup
2018-12-12 15:20:34 +01:00
Robert Baldyga
69947bb44b Unify core naming convention (core_obj -> core)
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2018-12-12 14:49:17 +01:00
Jan Musiał
e1f7cd3875
Merge pull request #10 from wolszews/modify-logging
Change cache/core printing style
2018-12-12 13:44:38 +01:00
Robert Baldyga
db92083432 Unify req naming convention (rq -> req)
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2018-12-12 13:36:34 +01:00
Robert Baldyga
218b6b2391 utils: Simplify discard max size calculation
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2018-12-12 11:20:41 +01:00
Robert Baldyga
d862778e2b Remove legacy io completion API
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2018-12-12 11:20:41 +01:00
Wojciech Olszewski
7973dbbf41 Change cache/core printing style 2018-12-07 17:55:08 +01:00
Michał Mielewczyk
c0079e4d77
Merge pull request #8 from wolszews/remove-log-prefix
Remove OCF prefix
2018-12-07 15:40:47 +01:00
Robert Baldyga
402df33ff5 Introduce more uniform hash function
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2018-12-07 14:37:35 +01:00
wolszews
0cb11b0d3c Remove OCF prefix 2018-12-06 16:04:30 +01:00
Robert Baldyga
a8e1ce8cc5 Initial commit
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2018-11-29 15:14:21 +01:00