Avoid stack overflow when pending read misses list is blocked

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
This commit is contained in:
Robert Baldyga 2021-07-14 13:04:03 +02:00
parent 740bf06c4b
commit a2b300d465
3 changed files with 6 additions and 1 deletions

View File

@ -120,7 +120,8 @@ int ocf_read_pt(struct ocf_request *req)
/* Traverse request to check if there are mapped cache lines */
ocf_engine_traverse(req);
if (req->seq_cutoff && ocf_engine_is_dirty_all(req)) {
if (req->seq_cutoff && ocf_engine_is_dirty_all(req) &&
!req->bf_blocked) {
use_cache = true;
} else {
if (ocf_engine_mapped_count(req)) {

View File

@ -224,6 +224,7 @@ int ocf_read_generic(struct ocf_request *req)
if (env_atomic_read(&cache->pending_read_misses_list_blocked)) {
/* There are conditions to bypass IO */
req->bf_blocked = true;
ocf_get_io_if(ocf_cache_mode_pt)->read(req);
return 0;
}

View File

@ -185,6 +185,9 @@ struct ocf_request {
uint8_t seq_cutoff : 1;
/*!< Sequential cut off set for this request */
uint8_t bf_blocked : 1;
/*!< Backfill pending read misses list blocked */
uint8_t wi_second_pass : 1;
/*!< Set after first pass of WI write is completed */