lkml.org 
[lkml]   [2010]   [Jan]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 08/17] MTD: call remove notifiers before removing the device
    Date
    Now that mtd block common layer is prepared for proper hotplug support, enable it here
    Now all users of the mtd device have a chance to put the mtd device
    when they are notified to do so, and they have to do so to make hotplug work.

    Signed-off-by: Maxim Levitsky <maximlevitsky@gmail.com>
    ---
    drivers/mtd/mtdcore.c | 21 +++++++++++----------
    1 files changed, 11 insertions(+), 10 deletions(-)
    diff --git a/drivers/mtd/mtdcore.c b/drivers/mtd/mtdcore.c
    index 3bdb7e8..0e86208 100644
    --- a/drivers/mtd/mtdcore.c
    +++ b/drivers/mtd/mtdcore.c
    @@ -341,31 +341,32 @@ int add_mtd_device(struct mtd_info *mtd)
    int del_mtd_device (struct mtd_info *mtd)
    {
    int ret;
    + struct mtd_notifier *not;

    mutex_lock(&mtd_table_mutex);

    if (mtd_table[mtd->index] != mtd) {
    ret = -ENODEV;
    - } else if (mtd->usecount) {
    + goto out_error;
    + }
    +
    + /* No need to get a refcount on the module containing
    + the notifier, since we hold the mtd_table_mutex */
    + list_for_each_entry(not, &mtd_notifiers, list)
    + not->remove(mtd);
    +
    + if (mtd->usecount) {
    printk(KERN_NOTICE "Removing MTD device #%d (%s) with use count %d\n",
    mtd->index, mtd->name, mtd->usecount);
    ret = -EBUSY;
    } else {
    - struct mtd_notifier *not;
    -
    device_unregister(&mtd->dev);
    -
    - /* No need to get a refcount on the module containing
    - the notifier, since we hold the mtd_table_mutex */
    - list_for_each_entry(not, &mtd_notifiers, list)
    - not->remove(mtd);
    -
    mtd_table[mtd->index] = NULL;
    -
    module_put(THIS_MODULE);
    ret = 0;
    }

    +out_error:
    mutex_unlock(&mtd_table_mutex);
    return ret;
    }
    --
    1.6.3.3


    \
     
     \ /
      Last update: 2010-01-30 16:05    [from the cache]
    ©2003-2014 Jasper Spaans. Advertise on this site