All of lore.kernel.org
 help / color / mirror / Atom feed
From: Seungwon Jeon <tgih.jun@samsung.com>
To: 'Subhash Jadavani' <subhashj@codeaurora.org>
Cc: 'Konstantin Dorfman' <kdorfman@codeaurora.org>,
	'Chris Ball' <cjb@laptop.org>,
	linux-mmc@vger.kernel.org
Subject: RE: [PATCH 1/2] mmc: core: fix permanent sleep of mmcqd during card removal
Date: Tue, 05 Feb 2013 14:57:17 +0900	[thread overview]
Message-ID: <001f01ce0365$a7e7f560$f7b7e020$%jun@samsung.com> (raw)
In-Reply-To: <510F9ED6.2030402@codeaurora.org>

On Monday, February 04, 2013, Subhash Jadavani wrote:
> On 1/30/2013 12:00 PM, Seungwon Jeon wrote:
> > Hi Konstantin.
> >
> > Could you check this patch with [2/2]?
> > [PATCH 2/2] mmc: block: don't start new request when the card is removed
> >
> > mmcqd is often sleeping with acquiring the claim(mmc_claim_host) when a card is removed.
> > As a result, mmc_rescan can be blocked for the insertion of a card newly. It's a dead lock.
> >
> > Thanks,
> > Seungwon Jeon
> >
> > On Tuesday, January 22, 2013, Seungwon Jeon wrote:
> >> This patch is derived from 'mmc: fix async request mechanism ...'.
> >> According as async transfer, a request is handled with twice mmc_start_req.
> >> When the card is removed, the request is actually not issued in the first
> >> mmc_start_req [__mmc_start_data_req]. And then mmc_wait_for_data_req_done
> >> will come in the next mmc_start_req. But there is no event for completions.
> >> wake_up_interruptible is needed in __mmc_start_data_req for the case of
> >> removed card.
> 
> Hi Seungwon,
> 
> I looked at this again and i guess there is something wrong with
> mmc_start_req() itself.
> As per your commit text, first call to mmc_start_req() calls the
> __mmc_start_data_req() function and __mmc_start_data_req() returns the
> -ENOMEDIUM error (as card is removed) without starting the request on
> host controller. so now in mmc_start_req(), "start_err" should be set.
> But currently mmc_start_req() incorrectly marks the "host->areq" to
> "areq" in even if the start_err is set which i guess is wrong. what do
> you think about it?
> 
> So how about this fix? I guess this is better and it should fix the
> deadlock issue as well. Do let me know you thoughts on this. If it looks
> reasonable, i can post the formal patch.

Hi Subhash,

I tested your fix, but there is still problem.
I didn't look into the reason.

Thanks,
Seungwon Jeon
> 
> 
> diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
> index 39f28af..1aa7dbe 100644
> --- a/drivers/mmc/core/core.c
> +++ b/drivers/mmc/core/core.c
> @@ -546,7 +546,7 @@ struct mmc_async_req *mmc_start_req(struct mmc_host
> *host,
> if ((err || start_err) && areq)
> mmc_post_req(host, areq->mrq, -EINVAL);
> 
> - if (err)
> + if (err || start_err)
> host->areq = NULL;
> else
> host->areq = areq;
> 
> Regards,
> Subhash
> 
> >>
> >> Signed-off-by: Seungwon Jeon <tgih.jun@samsung.com>
> >> ---
> >>  drivers/mmc/core/core.c |    1 +
> >>  1 files changed, 1 insertions(+), 0 deletions(-)
> >>
> >> diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
> >> index 8b3a122..997b257 100644
> >> --- a/drivers/mmc/core/core.c
> >> +++ b/drivers/mmc/core/core.c
> >> @@ -350,6 +350,7 @@ static int __mmc_start_data_req(struct mmc_host *host, struct mmc_request *mrq)
> >>  	mrq->host = host;
> >>  	if (mmc_card_removed(host->card)) {
> >>  		mrq->cmd->error = -ENOMEDIUM;
> >> +		mmc_wait_data_done(mrq);
> >>  		return -ENOMEDIUM;
> >>  	}
> >>  	mmc_start_request(host, mrq);
> >> --
> >> 1.7.0.4
> >
> > --
> > 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
> 
> --
> 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


  reply	other threads:[~2013-02-05  5:57 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <n@samsung.com>
2012-08-05 13:08 ` [RFC/PATCH] mmc: core: Add support for idle time BKOPs Maya Erez
2012-08-05 13:08   ` Maya Erez
2012-08-30  7:36   ` Jaehoon Chung
2012-09-04  5:42     ` merez
2012-09-04  5:42       ` merez
2012-10-04 22:28 ` [PATCH v2] mmc: core: Add support for idle time BKOPS Maya Erez
2012-10-04 22:28   ` Maya Erez
2012-10-09  3:52   ` merez
2012-10-09  3:52     ` merez
2012-10-16  7:53   ` Jaehoon Chung
2012-11-07  4:28     ` merez
2012-11-07  4:28       ` merez
2012-11-08  5:26       ` Jaehoon Chung
2012-11-11  9:25   ` Subhash Jadavani
2012-10-18 16:31 ` [PATCH 1/6] mmc: core: sdio_io.c: Fixed lines with > 80 chars Sangho Yi
2012-10-18 16:31   ` [PATCH 2/6] mmc: core: sdio_bus.c: Removed trailing whitespace error Sangho Yi
2012-10-18 16:31   ` [PATCH 3/6] mmc: core: sdio_bus.c: Fixed lines > 80 chars Sangho Yi
2012-10-18 23:54     ` Jaehoon Chung
2012-10-18 16:31   ` [PATCH 4/6] mmc: core: sdio_bus.c: Removed space between func name and () Sangho Yi
2012-10-18 16:31   ` [PATCH 5/6] mmc: core: sdio_bus.c: Fixed a warning for the pr_warning( Sangho Yi
2012-10-18 16:31   ` [PATCH 6/6] mmc: core: sdio_bus.c: Removed unnecessary NULL check routine Sangho Yi
2012-10-18 16:47   ` [PATCH 1/6] mmc: core: sdio_io.c: Fixed lines with > 80 chars Joe Perches
2012-11-01 14:40 ` [PATCH v2] mmc: fix async request mechanism for sequential read scenarios Konstantin Dorfman
2012-11-05  6:20   ` Per Förlin
2012-11-05  7:15     ` Jaehoon Chung
2012-11-12 12:10       ` Konstantin Dorfman
2012-11-08 10:41     ` Jaehoon Chung
2012-11-08 12:51       ` merez
2012-11-09  5:46         ` Jaehoon Chung
2012-11-12 12:49     ` Konstantin Dorfman
2012-11-06  8:40   ` Jaehoon Chung
2012-11-12 12:42     ` Konstantin Dorfman
2012-11-12 16:51 ` [PATCH v3] " Konstantin Dorfman
2012-11-13 13:42   ` Seungwon Jeon
2012-11-15 10:23     ` Seungwon Jeon
2012-11-20  2:05       ` Seungwon Jeon
2012-11-25 11:56 ` [PATCH v3] mmc: core: Add support for idle time BKOPS Maya Erez
2012-11-25 11:56   ` Maya Erez
2012-11-25 12:46   ` merez
2012-11-25 12:46     ` merez
2012-11-28 14:22     ` Chris Ball
2012-11-29 12:40   ` Jaehoon Chung
2012-12-03  9:49     ` merez
2012-12-04  9:52       ` Ulf Hansson
2012-12-04 21:17         ` merez
2012-12-06 10:18           ` Ulf Hansson
2012-12-12 12:32             ` merez
2012-12-13 10:17               ` Ulf Hansson
2012-12-21  8:35                 ` Maya Erez
2012-12-21  8:35                   ` Maya Erez
2012-12-21  9:56                   ` Ulf Hansson
2012-12-21 10:24                     ` Jaehoon Chung
2012-12-05 13:38 ` [PATCH v4] mmc: fix async request mechanism for sequential read scenarios Konstantin Dorfman
2012-12-06  5:24   ` Seungwon Jeon
2012-12-06 14:23     ` Konstantin Dorfman
2012-12-10 14:23 ` [RESEND PATCH " Konstantin Dorfman
2012-12-12  9:26   ` Seungwon Jeon
2012-12-17 12:26   ` Seungwon Jeon
2012-12-18 16:00     ` Konstantin Dorfman
2012-12-18 16:19       ` Chris Ball
2012-12-20  7:39       ` Seungwon Jeon
2012-12-26  9:26 ` [PATCH v5] " Konstantin Dorfman
2012-12-28 10:16   ` Seungwon Jeon
2013-01-14 19:31     ` Chris Ball
2013-01-15 12:00       ` Konstantin Dorfman
2013-01-22 10:48   ` [PATCH 1/2] mmc: core: fix permanent sleep of mmcqd during card removal Seungwon Jeon
2013-01-31 11:05     ` Jaehoon Chung
2013-01-31 11:25       ` Seungwon Jeon
2013-02-08 12:07     ` Konstantin Dorfman
2013-02-11 17:00     ` Chris Ball
2013-01-30  6:30   ` Seungwon Jeon
2013-01-31  6:53     ` Subhash Jadavani
2013-02-04 11:43     ` Subhash Jadavani
2013-02-05  5:57       ` Seungwon Jeon [this message]
2013-02-05  7:05         ` Jaehoon Chung
2013-02-05  7:32           ` Subhash Jadavani
2013-02-04 19:27     ` Konstantin Dorfman
2013-01-10 20:15 ` [PATCH v5 0/3] Add support for periodic BKOPS Maya Erez
2013-01-11 11:33   ` Jaehoon Chung
2014-11-10 17:13 ` [PATCH 0/3] mmc: Support FFU for eMMC v5.0 Avi Shchislowski
2014-11-11  3:33   ` Jaehoon Chung
2014-11-10 17:13 ` [PATCH 1/3] " Avi Shchislowski
2014-11-10 17:13   ` Avi Shchislowski
2014-11-11  3:07   ` Jaehoon Chung
2014-11-11  8:44     ` Avi Shchislowski
2014-11-10 17:18 ` [PATCH 2/3] " Avi Shchislowski
2014-11-10 17:18   ` Avi Shchislowski
2014-11-11  3:30   ` Jaehoon Chung

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='001f01ce0365$a7e7f560$f7b7e020$%jun@samsung.com' \
    --to=tgih.jun@samsung.com \
    --cc=cjb@laptop.org \
    --cc=kdorfman@codeaurora.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=subhashj@codeaurora.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.