All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: Maxim Levitsky <maximlevitsky@gmail.com>
Cc: Alex Dubov <oakad@yahoo.com>,
	Artem Bityutskiy <dedekind1@gmail.com>, joern <joern@logfs.org>,
	Vitaly Wool <vitalywool@gmail.com>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	"stanley.miao" <stanley.miao@windriver.com>,
	linux-mtd <linux-mtd@lists.infradead.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	David Woodhouse <dwmw2@infradead.org>
Subject: Re: [PATCH 01/17] MTD: create lockless versions of {get,put}_mtd_device This will be used to resolve deadlock in block translation layer.
Date: Tue, 09 Feb 2010 18:14:53 +0100	[thread overview]
Message-ID: <1265735693.11509.253.camel@laptop> (raw)
In-Reply-To: <1265734665-22656-2-git-send-email-maximlevitsky@gmail.com>

On Tue, 2010-02-09 at 18:57 +0200, Maxim Levitsky wrote:
> These functions can be used as long as we don't need access to global mtd table, but have
> a pointer to the mtd device.
> 
> Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
> ---
>  drivers/mtd/mtdcore.c   |   60 ++++++++++++++++++++++++++++++----------------
>  include/linux/mtd/mtd.h |    3 +-
>  2 files changed, 41 insertions(+), 22 deletions(-)

> +int __get_mtd_device(struct mtd_info *mtd)
> +{
> +	int err;
> +
> +	if (!try_module_get(mtd->owner))
> +		return -ENODEV;
> +
> +	if (mtd->get_device) {
> +
> +		err = mtd->get_device(mtd);
> +
> +		if (err) {
> +			module_put(mtd->owner);
> +			return err;
> +		}
> +	}
> +	mtd->usecount++;
> +	return 0;
>  }

> +void __put_mtd_device(struct mtd_info *mtd)
> +{
> +	--mtd->usecount;
> +	BUG_ON(mtd->usecount < 0);
> +
>  	if (mtd->put_device)
>  		mtd->put_device(mtd);
>  
>  	module_put(mtd->owner);
>  }

That's racy, use kref.

WARNING: multiple messages have this Message-ID (diff)
From: Peter Zijlstra <peterz@infradead.org>
To: Maxim Levitsky <maximlevitsky@gmail.com>
Cc: David Woodhouse <dwmw2@infradead.org>,
	Artem Bityutskiy <dedekind1@gmail.com>,
	linux-mtd <linux-mtd@lists.infradead.org>,
	linux-kernel <linux-kernel@vger.kernel.org>,
	Alex Dubov <oakad@yahoo.com>, joern <joern@logfs.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	"stanley.miao" <stanley.miao@windriver.com>,
	Vitaly Wool <vitalywool@gmail.com>
Subject: Re: [PATCH 01/17] MTD: create lockless versions of {get,put}_mtd_device This will be used to resolve deadlock in block translation layer.
Date: Tue, 09 Feb 2010 18:14:53 +0100	[thread overview]
Message-ID: <1265735693.11509.253.camel@laptop> (raw)
In-Reply-To: <1265734665-22656-2-git-send-email-maximlevitsky@gmail.com>

On Tue, 2010-02-09 at 18:57 +0200, Maxim Levitsky wrote:
> These functions can be used as long as we don't need access to global mtd table, but have
> a pointer to the mtd device.
> 
> Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
> ---
>  drivers/mtd/mtdcore.c   |   60 ++++++++++++++++++++++++++++++----------------
>  include/linux/mtd/mtd.h |    3 +-
>  2 files changed, 41 insertions(+), 22 deletions(-)

> +int __get_mtd_device(struct mtd_info *mtd)
> +{
> +	int err;
> +
> +	if (!try_module_get(mtd->owner))
> +		return -ENODEV;
> +
> +	if (mtd->get_device) {
> +
> +		err = mtd->get_device(mtd);
> +
> +		if (err) {
> +			module_put(mtd->owner);
> +			return err;
> +		}
> +	}
> +	mtd->usecount++;
> +	return 0;
>  }

> +void __put_mtd_device(struct mtd_info *mtd)
> +{
> +	--mtd->usecount;
> +	BUG_ON(mtd->usecount < 0);
> +
>  	if (mtd->put_device)
>  		mtd->put_device(mtd);
>  
>  	module_put(mtd->owner);
>  }

That's racy, use kref.


  reply	other threads:[~2010-02-09 17:14 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-02-09 16:57 [PATCH 0/17 V7] Work to enable SmartMedia/xD support in mtd subsystem Maxim Levitsky
2010-02-09 16:57 ` Maxim Levitsky
2010-02-09 16:57 ` [PATCH 01/17] MTD: create lockless versions of {get, put}_mtd_device This will be used to resolve deadlock in block translation layer Maxim Levitsky
2010-02-09 16:57   ` [PATCH 01/17] MTD: create lockless versions of {get,put}_mtd_device " Maxim Levitsky
2010-02-09 17:14   ` Peter Zijlstra [this message]
2010-02-09 17:14     ` Peter Zijlstra
2010-02-09 17:23     ` Maxim Levitsky
2010-02-09 17:23       ` Maxim Levitsky
2010-02-09 17:46       ` Maxim Levitsky
2010-02-09 17:46         ` Maxim Levitsky
2010-02-10 21:22         ` Maxim Levitsky
2010-02-10 21:22           ` Maxim Levitsky
2010-02-09 16:57 ` [PATCH 02/17] blktrans: nuke mtd_blkcore_priv and make both thread and disk queue be per device Maxim Levitsky
2010-02-09 16:57   ` Maxim Levitsky
2010-02-09 16:57 ` [PATCH 03/17] blktrans: track open and close calls Maxim Levitsky
2010-02-09 16:57   ` Maxim Levitsky
2010-02-09 16:57 ` [PATCH 04/17] blktrans: don't free mtd_blktrans_dev, core will do that for you Maxim Levitsky
2010-02-09 16:57   ` Maxim Levitsky
2010-02-09 16:57 ` [PATCH 05/17] blktrans: add proper locking Maxim Levitsky
2010-02-09 16:57   ` Maxim Levitsky
2010-02-09 16:57 ` [PATCH 06/17] blktrans: flush all requests before we remove the device Maxim Levitsky
2010-02-09 16:57   ` Maxim Levitsky
2010-02-09 16:57 ` [PATCH 07/17] blktrans: allow FTL drivers to export sysfs attributes Maxim Levitsky
2010-02-09 16:57   ` Maxim Levitsky
2010-02-09 16:57 ` [PATCH 08/17] MTD: call remove notifiers before removing the device Maxim Levitsky
2010-02-09 16:57   ` Maxim Levitsky
2010-02-09 16:57 ` [PATCH 09/17] MTD: nand: make MTD_OOB_PLACE work correctly Maxim Levitsky
2010-02-09 16:57   ` Maxim Levitsky
2010-02-09 16:57 ` [PATCH 10/17] MTD: nand: cleanup nand_do_write_ops Maxim Levitsky
2010-02-09 16:57   ` Maxim Levitsky
2010-02-09 16:57 ` [PATCH 11/17] MTD: nand: make suspend work if device is accessed by kernel threads Maxim Levitsky
2010-02-09 16:57   ` Maxim Levitsky
2010-02-09 16:57 ` [PATCH 12/17] MTD: nand: make reads using MTD_OOB_RAW affect only ECC validation Maxim Levitsky
2010-02-09 16:57   ` Maxim Levitsky
2010-02-09 16:57 ` [PATCH 13/17] NAND: make ->check_bad more user friendly Maxim Levitsky
2010-02-09 16:57   ` Maxim Levitsky
2010-02-09 16:57 ` [PATCH 14/17] MTD: common module for smartmedia/xD support Maxim Levitsky
2010-02-09 16:57   ` Maxim Levitsky
2010-02-09 16:57 ` [PATCH 15/17] MTD: add few workarounds to nand system for SmartMedia/xD chips Maxim Levitsky
2010-02-09 16:57   ` Maxim Levitsky
2010-02-09 16:57 ` [PATCH 16/17] MTD: Add nand driver for ricoh xD/SmartMedia reader Maxim Levitsky
2010-02-09 16:57   ` Maxim Levitsky
2010-02-09 16:57 ` [PATCH 17/17] MTD: Add new SmartMedia/xD FTL Maxim Levitsky
2010-02-09 16:57   ` Maxim Levitsky
  -- strict thread matches above, loose matches on Subject: below --
2010-02-04 23:30 [PATCH V6] Work to enable SmartMedia/xD support Maxim Levitsky
2010-02-04 23:30 ` [PATCH 01/17] MTD: create lockless versions of {get, put}_mtd_device This will be used to resolve deadlock in block translation layer Maxim Levitsky
2010-02-04 23:30   ` [PATCH 01/17] MTD: create lockless versions of {get,put}_mtd_device " Maxim Levitsky
2010-01-30 15:02 [PATCH V5] Work to enable SmartMedia/xD support Maxim Levitsky
2010-01-30 15:02 ` [PATCH 01/17] MTD: create lockless versions of {get, put}_mtd_device This will be used to resolve deadlock in block translation layer Maxim Levitsky
2010-01-30 15:02   ` [PATCH 01/17] MTD: create lockless versions of {get,put}_mtd_device " Maxim Levitsky

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=1265735693.11509.253.camel@laptop \
    --to=peterz@infradead.org \
    --cc=dedekind1@gmail.com \
    --cc=dwmw2@infradead.org \
    --cc=joern@logfs.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=maximlevitsky@gmail.com \
    --cc=oakad@yahoo.com \
    --cc=stanley.miao@windriver.com \
    --cc=tglx@linutronix.de \
    --cc=vitalywool@gmail.com \
    /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.