Message ID | 001e01cdf88d$f666ecb0$e334c610$%jun@samsung.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hi Seungwon, It looks good to me.. Acked-by: Jaehoon Chung <jh80.chung@samsung.com> On 01/22/2013 07:48 PM, Seungwon Jeon wrote: > Current request can be started newly while handling the error. > But if the card is removed, it's unnecessary to restart a request. > This makes the extra error handling. > > Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com> > --- > drivers/mmc/card/block.c | 10 ++++++++-- > 1 files changed, 8 insertions(+), 2 deletions(-) > > diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c > index f79b468..1170afe 100644 > --- a/drivers/mmc/card/block.c > +++ b/drivers/mmc/card/block.c > @@ -1456,8 +1456,14 @@ static int mmc_blk_issue_rw_rq(struct mmc_queue *mq, struct request *rqc) > > start_new_req: > if (rqc) { > - mmc_blk_rw_rq_prep(mq->mqrq_cur, card, 0, mq); > - mmc_start_req(card->host, &mq->mqrq_cur->mmc_active, NULL); > + if (mmc_card_removed(card)) { > + rqc->cmd_flags |= REQ_QUIET; > + blk_end_request_all(rqc, -EIO); > + } else { > + mmc_blk_rw_rq_prep(mq->mqrq_cur, card, 0, mq); > + mmc_start_req(card->host, > + &mq->mqrq_cur->mmc_active, NULL); > + } > } > > return 0; > -- To unsubscribe from this list: send the line "unsubscribe linux-mmc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Tested-by: Konstantin Dorfman <kdorfman@codeaurora.org> On 01/22/2013 12:48 PM, Seungwon Jeon wrote: > Current request can be started newly while handling the error. > But if the card is removed, it's unnecessary to restart a request. > This makes the extra error handling. > > Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com> > --- > drivers/mmc/card/block.c | 10 ++++++++-- > 1 files changed, 8 insertions(+), 2 deletions(-) > > diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c > index f79b468..1170afe 100644 > --- a/drivers/mmc/card/block.c > +++ b/drivers/mmc/card/block.c > @@ -1456,8 +1456,14 @@ static int mmc_blk_issue_rw_rq(struct mmc_queue *mq, struct request *rqc) > > start_new_req: > if (rqc) { > - mmc_blk_rw_rq_prep(mq->mqrq_cur, card, 0, mq); > - mmc_start_req(card->host, &mq->mqrq_cur->mmc_active, NULL); > + if (mmc_card_removed(card)) { > + rqc->cmd_flags |= REQ_QUIET; > + blk_end_request_all(rqc, -EIO); > + } else { > + mmc_blk_rw_rq_prep(mq->mqrq_cur, card, 0, mq); > + mmc_start_req(card->host, > + &mq->mqrq_cur->mmc_active, NULL); > + } > } > > return 0; >
Hi, On Tue, Jan 22 2013, Seungwon Jeon wrote: > Current request can be started newly while handling the error. > But if the card is removed, it's unnecessary to restart a request. > This makes the extra error handling. > > Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com> > --- > drivers/mmc/card/block.c | 10 ++++++++-- > 1 files changed, 8 insertions(+), 2 deletions(-) > > diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c > index f79b468..1170afe 100644 > --- a/drivers/mmc/card/block.c > +++ b/drivers/mmc/card/block.c > @@ -1456,8 +1456,14 @@ static int mmc_blk_issue_rw_rq(struct mmc_queue *mq, struct request *rqc) > > start_new_req: > if (rqc) { > - mmc_blk_rw_rq_prep(mq->mqrq_cur, card, 0, mq); > - mmc_start_req(card->host, &mq->mqrq_cur->mmc_active, NULL); > + if (mmc_card_removed(card)) { > + rqc->cmd_flags |= REQ_QUIET; > + blk_end_request_all(rqc, -EIO); > + } else { > + mmc_blk_rw_rq_prep(mq->mqrq_cur, card, 0, mq); > + mmc_start_req(card->host, > + &mq->mqrq_cur->mmc_active, NULL); > + } > } > > return 0; Thanks, pushed to mmc-next for 3.9. - Chris.
diff --git a/drivers/mmc/card/block.c b/drivers/mmc/card/block.c index f79b468..1170afe 100644 --- a/drivers/mmc/card/block.c +++ b/drivers/mmc/card/block.c @@ -1456,8 +1456,14 @@ static int mmc_blk_issue_rw_rq(struct mmc_queue *mq, struct request *rqc) start_new_req: if (rqc) { - mmc_blk_rw_rq_prep(mq->mqrq_cur, card, 0, mq); - mmc_start_req(card->host, &mq->mqrq_cur->mmc_active, NULL); + if (mmc_card_removed(card)) { + rqc->cmd_flags |= REQ_QUIET; + blk_end_request_all(rqc, -EIO); + } else { + mmc_blk_rw_rq_prep(mq->mqrq_cur, card, 0, mq); + mmc_start_req(card->host, + &mq->mqrq_cur->mmc_active, NULL); + } } return 0;
Current request can be started newly while handling the error. But if the card is removed, it's unnecessary to restart a request. This makes the extra error handling. Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com> --- drivers/mmc/card/block.c | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-)