Avoid stack overflow when pending read misses list is blocked
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
This commit is contained in:
parent
740bf06c4b
commit
a2b300d465
@ -120,7 +120,8 @@ int ocf_read_pt(struct ocf_request *req)
|
|||||||
/* Traverse request to check if there are mapped cache lines */
|
/* Traverse request to check if there are mapped cache lines */
|
||||||
ocf_engine_traverse(req);
|
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;
|
use_cache = true;
|
||||||
} else {
|
} else {
|
||||||
if (ocf_engine_mapped_count(req)) {
|
if (ocf_engine_mapped_count(req)) {
|
||||||
|
@ -224,6 +224,7 @@ int ocf_read_generic(struct ocf_request *req)
|
|||||||
|
|
||||||
if (env_atomic_read(&cache->pending_read_misses_list_blocked)) {
|
if (env_atomic_read(&cache->pending_read_misses_list_blocked)) {
|
||||||
/* There are conditions to bypass IO */
|
/* There are conditions to bypass IO */
|
||||||
|
req->bf_blocked = true;
|
||||||
ocf_get_io_if(ocf_cache_mode_pt)->read(req);
|
ocf_get_io_if(ocf_cache_mode_pt)->read(req);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -185,6 +185,9 @@ struct ocf_request {
|
|||||||
uint8_t seq_cutoff : 1;
|
uint8_t seq_cutoff : 1;
|
||||||
/*!< Sequential cut off set for this request */
|
/*!< Sequential cut off set for this request */
|
||||||
|
|
||||||
|
uint8_t bf_blocked : 1;
|
||||||
|
/*!< Backfill pending read misses list blocked */
|
||||||
|
|
||||||
uint8_t wi_second_pass : 1;
|
uint8_t wi_second_pass : 1;
|
||||||
/*!< Set after first pass of WI write is completed */
|
/*!< Set after first pass of WI write is completed */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user