lkml.org 
[lkml]   [2012]   [Dec]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH 18/25] TMIO MMC: don't use [delayed_]work_pending()
Hi Tejun

On Fri, 21 Dec 2012, Tejun Heo wrote:

> There's no need to test whether a (delayed) work item in pending
> before queueing, flushing or cancelling it. Most uses are unnecessary
> and quite a few of them are buggy.
>
> Remove unnecessary pending tests from tmio mmc. Only compile tested.

Thanks for the patch. It looks good to me. What happens below is upon mmc
card detection IRQs, of which there are typically several due to pin
debouncing, a delayed work is scheduled to verify a possibly new card
state (plugged in or removed). So, the code below checks, that after the
first of those interrupts the work is already scheduled and doesn't
schedule it again. IIUC, this is indeed unneeded, since
queue_delayed_work_on() only has any effect if the work isn't queued yet.
Ah, there's a nitpick - you can remove one pair of parenthesis;-)
Otherwise, I guess, this is an

Acked-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>

and Chris can take it (preferably, after the correction) via his queue. If
you give me a bit more time I can also test this, but it really looks
pretty obvious. Maybe Chris will prefer you to take this via your queue -
that's up to you two to decide.

Thanks
Guennadi

>
> Signed-off-by: Tejun Heo <tj@kernel.org>
> Cc: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
> Cc: Ian Molton <ian@mnementh.co.uk>
> Cc: linux-mmc@vger.kernel.org
> ---
> Please let me know how this patch should be routed. I can take it
> through the workqueue tree if necessary.
>
> Thanks.
>
> drivers/mmc/host/tmio_mmc_pio.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/drivers/mmc/host/tmio_mmc_pio.c b/drivers/mmc/host/tmio_mmc_pio.c
> index 50bf495..f4f18b3 100644
> --- a/drivers/mmc/host/tmio_mmc_pio.c
> +++ b/drivers/mmc/host/tmio_mmc_pio.c
> @@ -573,8 +573,7 @@ static bool __tmio_mmc_card_detect_irq(struct tmio_mmc_host *host,
> tmio_mmc_ack_mmc_irqs(host, TMIO_STAT_CARD_INSERT |
> TMIO_STAT_CARD_REMOVE);
> if ((((ireg & TMIO_STAT_CARD_REMOVE) && mmc->card) ||
> - ((ireg & TMIO_STAT_CARD_INSERT) && !mmc->card)) &&
> - !work_pending(&mmc->detect.work))
> + ((ireg & TMIO_STAT_CARD_INSERT) && !mmc->card)))
> mmc_detect_change(host->mmc, msecs_to_jiffies(100));
> return true;
> }
> --
> 1.8.0.2
>

---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/


\
 
 \ /
  Last update: 2012-12-25 00:01    [W:0.378 / U:2.932 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site