Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d08071ee authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "mmc: core: use blk_cleanup_queue() during shutdown/reboot"

parents e9475fe6 18cf2a36
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -3794,7 +3794,7 @@ static struct mmc_blk_data *mmc_blk_alloc_req(struct mmc_card *card,
	INIT_LIST_HEAD(&md->part);
	md->usage = 1;

	ret = mmc_init_queue(&md->queue, card, &md->lock, subname, area_type);
	ret = mmc_init_queue(&md->queue, card, NULL, subname, area_type);
	if (ret)
		goto err_putdisk;

+6 −6
Original line number Diff line number Diff line
@@ -415,6 +415,7 @@ int mmc_init_queue(struct mmc_queue *mq, struct mmc_card *card,
		mq->queue = blk_alloc_queue(GFP_KERNEL);
		if (!mq->queue)
			return -ENOMEM;
		if (lock)
			mq->queue->queue_lock = lock;
		mq->queue->request_fn = mmc_cmdq_dispatch_req;
		mq->queue->init_rq_fn = mmc_init_request;
@@ -455,6 +456,7 @@ int mmc_init_queue(struct mmc_queue *mq, struct mmc_card *card,
	mq->queue = blk_alloc_queue(GFP_KERNEL);
	if (!mq->queue)
		return -ENOMEM;
	if (lock)
		mq->queue->queue_lock = lock;
	mq->queue->request_fn = mmc_request_fn;
	mq->queue->init_rq_fn = mmc_init_request;
@@ -549,15 +551,13 @@ int mmc_queue_suspend(struct mmc_queue *mq, int wait)
		if (wait) {

			/*
			 * After blk_stop_queue is called, wait for all
			 * After blk_cleanup_queue is called, wait for all
			 * active_reqs to complete.
			 * Then wait for cmdq thread to exit before calling
			 * cmdq shutdown to avoid race between issuing
			 * requests and shutdown of cmdq.
			 */
			spin_lock_irqsave(q->queue_lock, flags);
			blk_stop_queue(q);
			spin_unlock_irqrestore(q->queue_lock, flags);
			blk_cleanup_queue(q);

			if (host->cmdq_ctx.active_reqs)
				wait_for_completion(