diff options
Diffstat (limited to 'drivers/md/dm-cache-policy-mq.c')
| -rw-r--r-- | drivers/md/dm-cache-policy-mq.c | 13 | 
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/md/dm-cache-policy-mq.c b/drivers/md/dm-cache-policy-mq.c index 416b7b752a6e..64780ad73bb0 100644 --- a/drivers/md/dm-cache-policy-mq.c +++ b/drivers/md/dm-cache-policy-mq.c @@ -730,15 +730,18 @@ static int pre_cache_entry_found(struct mq_policy *mq, struct entry *e,  	int r = 0;  	bool updated = updated_this_tick(mq, e); -	requeue_and_update_tick(mq, e); -  	if ((!discarded_oblock && updated) || -	    !should_promote(mq, e, discarded_oblock, data_dir)) +	    !should_promote(mq, e, discarded_oblock, data_dir)) { +		requeue_and_update_tick(mq, e);  		result->op = POLICY_MISS; -	else if (!can_migrate) + +	} else if (!can_migrate)  		r = -EWOULDBLOCK; -	else + +	else { +		requeue_and_update_tick(mq, e);  		r = pre_cache_to_cache(mq, e, result); +	}  	return r;  }  | 
