diff options
Diffstat (limited to 'drivers/mmc/core')
| -rw-r--r-- | drivers/mmc/core/block.c | 3 | ||||
| -rw-r--r-- | drivers/mmc/core/queue.c | 16 | 
2 files changed, 7 insertions, 12 deletions
| diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c index 8499b56a15a8..c5367e2c8487 100644 --- a/drivers/mmc/core/block.c +++ b/drivers/mmc/core/block.c @@ -1370,6 +1370,7 @@ static void mmc_blk_cqe_complete_rq(struct mmc_queue *mq, struct request *req)  	struct mmc_request *mrq = &mqrq->brq.mrq;  	struct request_queue *q = req->q;  	struct mmc_host *host = mq->card->host; +	enum mmc_issue_type issue_type = mmc_issue_type(mq, req);  	unsigned long flags;  	bool put_card;  	int err; @@ -1399,7 +1400,7 @@ static void mmc_blk_cqe_complete_rq(struct mmc_queue *mq, struct request *req)  	spin_lock_irqsave(&mq->lock, flags); -	mq->in_flight[mmc_issue_type(mq, req)] -= 1; +	mq->in_flight[issue_type] -= 1;  	put_card = (mmc_tot_in_flight(mq) == 0); diff --git a/drivers/mmc/core/queue.c b/drivers/mmc/core/queue.c index 25bee3daf9e2..4b1eb89b401d 100644 --- a/drivers/mmc/core/queue.c +++ b/drivers/mmc/core/queue.c @@ -107,11 +107,10 @@ static enum blk_eh_timer_return mmc_cqe_timed_out(struct request *req)  	case MMC_ISSUE_DCMD:  		if (host->cqe_ops->cqe_timeout(host, mrq, &recovery_needed)) {  			if (recovery_needed) -				__mmc_cqe_recovery_notifier(mq); +				mmc_cqe_recovery_notifier(mrq);  			return BLK_EH_RESET_TIMER;  		} -		/* No timeout (XXX: huh? comment doesn't make much sense) */ -		blk_mq_complete_request(req); +		/* The request has gone already */  		return BLK_EH_DONE;  	default:  		/* Timeout is handled by mmc core */ @@ -127,18 +126,13 @@ static enum blk_eh_timer_return mmc_mq_timed_out(struct request *req,  	struct mmc_card *card = mq->card;  	struct mmc_host *host = card->host;  	unsigned long flags; -	int ret; +	bool ignore_tout;  	spin_lock_irqsave(&mq->lock, flags); - -	if (mq->recovery_needed || !mq->use_cqe || host->hsq_enabled) -		ret = BLK_EH_RESET_TIMER; -	else -		ret = mmc_cqe_timed_out(req); - +	ignore_tout = mq->recovery_needed || !mq->use_cqe || host->hsq_enabled;  	spin_unlock_irqrestore(&mq->lock, flags); -	return ret; +	return ignore_tout ? BLK_EH_RESET_TIMER : mmc_cqe_timed_out(req);  }  static void mmc_mq_recovery_handler(struct work_struct *work) |