Merge tag 'mmc-v4.21' of git://git.kernel.org/pub/scm/linux/kernel/git/ulfh/mmc
[sfrench/cifs-2.6.git] / drivers / mmc / core / block.c
index 48386473dcd7dcbf151dee6e736a5b3091f10689..aef1185f383d42f3a3f7192b2003d521471acd18 100644 (file)
@@ -100,7 +100,6 @@ static DEFINE_IDA(mmc_rpmb_ida);
  * There is one mmc_blk_data per slot.
  */
 struct mmc_blk_data {
-       spinlock_t      lock;
        struct device   *parent;
        struct gendisk  *disk;
        struct mmc_queue queue;
@@ -1488,7 +1487,7 @@ static void mmc_blk_cqe_complete_rq(struct mmc_queue *mq, struct request *req)
                blk_mq_end_request(req, BLK_STS_OK);
        }
 
-       spin_lock_irqsave(q->queue_lock, flags);
+       spin_lock_irqsave(&mq->lock, flags);
 
        mq->in_flight[mmc_issue_type(mq, req)] -= 1;
 
@@ -1496,7 +1495,7 @@ static void mmc_blk_cqe_complete_rq(struct mmc_queue *mq, struct request *req)
 
        mmc_cqe_check_busy(mq);
 
-       spin_unlock_irqrestore(q->queue_lock, flags);
+       spin_unlock_irqrestore(&mq->lock, flags);
 
        if (!mq->cqe_busy)
                blk_mq_run_hw_queues(q, true);
@@ -1993,17 +1992,16 @@ static void mmc_blk_mq_poll_completion(struct mmc_queue *mq,
 
 static void mmc_blk_mq_dec_in_flight(struct mmc_queue *mq, struct request *req)
 {
-       struct request_queue *q = req->q;
        unsigned long flags;
        bool put_card;
 
-       spin_lock_irqsave(q->queue_lock, flags);
+       spin_lock_irqsave(&mq->lock, flags);
 
        mq->in_flight[mmc_issue_type(mq, req)] -= 1;
 
        put_card = (mmc_tot_in_flight(mq) == 0);
 
-       spin_unlock_irqrestore(q->queue_lock, flags);
+       spin_unlock_irqrestore(&mq->lock, flags);
 
        if (put_card)
                mmc_put_card(mq->card, &mq->ctx);
@@ -2099,11 +2097,11 @@ static void mmc_blk_mq_req_done(struct mmc_request *mrq)
                 * request does not need to wait (although it does need to
                 * complete complete_req first).
                 */
-               spin_lock_irqsave(q->queue_lock, flags);
+               spin_lock_irqsave(&mq->lock, flags);
                mq->complete_req = req;
                mq->rw_wait = false;
                waiting = mq->waiting;
-               spin_unlock_irqrestore(q->queue_lock, flags);
+               spin_unlock_irqrestore(&mq->lock, flags);
 
                /*
                 * If 'waiting' then the waiting task will complete this
@@ -2122,10 +2120,10 @@ static void mmc_blk_mq_req_done(struct mmc_request *mrq)
        /* Take the recovery path for errors or urgent background operations */
        if (mmc_blk_rq_error(&mqrq->brq) ||
            mmc_blk_urgent_bkops_needed(mq, mqrq)) {
-               spin_lock_irqsave(q->queue_lock, flags);
+               spin_lock_irqsave(&mq->lock, flags);
                mq->recovery_needed = true;
                mq->recovery_req = req;
-               spin_unlock_irqrestore(q->queue_lock, flags);
+               spin_unlock_irqrestore(&mq->lock, flags);
                wake_up(&mq->wait);
                schedule_work(&mq->recovery_work);
                return;
@@ -2141,7 +2139,6 @@ static void mmc_blk_mq_req_done(struct mmc_request *mrq)
 
 static bool mmc_blk_rw_wait_cond(struct mmc_queue *mq, int *err)
 {
-       struct request_queue *q = mq->queue;
        unsigned long flags;
        bool done;
 
@@ -2149,7 +2146,7 @@ static bool mmc_blk_rw_wait_cond(struct mmc_queue *mq, int *err)
         * Wait while there is another request in progress, but not if recovery
         * is needed. Also indicate whether there is a request waiting to start.
         */
-       spin_lock_irqsave(q->queue_lock, flags);
+       spin_lock_irqsave(&mq->lock, flags);
        if (mq->recovery_needed) {
                *err = -EBUSY;
                done = true;
@@ -2157,7 +2154,7 @@ static bool mmc_blk_rw_wait_cond(struct mmc_queue *mq, int *err)
                done = !mq->rw_wait;
        }
        mq->waiting = !done;
-       spin_unlock_irqrestore(q->queue_lock, flags);
+       spin_unlock_irqrestore(&mq->lock, flags);
 
        return done;
 }
@@ -2334,12 +2331,11 @@ static struct mmc_blk_data *mmc_blk_alloc_req(struct mmc_card *card,
                goto err_kfree;
        }
 
-       spin_lock_init(&md->lock);
        INIT_LIST_HEAD(&md->part);
        INIT_LIST_HEAD(&md->rpmbs);
        md->usage = 1;
 
-       ret = mmc_init_queue(&md->queue, card, &md->lock, subname);
+       ret = mmc_init_queue(&md->queue, card);
        if (ret)
                goto err_putdisk;