Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

Advertisement
[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Advertisement

Kernel v2.6.15 /drivers/mtd/mtd_blkdevs.c

Filename:/drivers/mtd/mtd_blkdevs.c
Lines Added:24
Lines Deleted:20
Also changed in: (Previous) 2.6.15-rc7  2.6.15-rc6  2.6.15-rc5  2.6.15-rc4  2.6.15-rc3  2.6.15-rc2 
(Following) 2.6.15-git5  2.6.15-git6  2.6.15-git7  2.6.15-git8  2.6.15-git9  2.6.15-git10 

Location
[  2.6.15
  [  drivers
    [  mtd
       o  mtd_blkdevs.c

Patch

diff --git a/drivers/mtd/mtd_blkdevs.c b/drivers/mtd/mtd_blkdevs.c
index f8d2185..339cb12 100644
--- a/drivers/mtd/mtd_blkdevs.c
+++ b/drivers/mtd/mtd_blkdevs.c
@@ -1,5 +1,5 @@
 /*
- * $Id: mtd_blkdevs.c,v 1.24 2004/11/16 18:28:59 dwmw2 Exp $
+ * $Id: mtd_blkdevs.c,v 1.27 2005/11/07 11:14:20 gleixner Exp $
  *
  * (C) 2003 David Woodhouse <dwmw2@infradead.org>
  *
@@ -21,7 +21,6 @@
 #include <linux/init.h>
 #include <asm/semaphore.h>
 #include <asm/uaccess.h>
-#include <linux/devfs_fs_kernel.h>
 
 static LIST_HEAD(blktrans_majors);
 
@@ -86,7 +85,7 @@ static int mtd_blktrans_thread(void *arg
    daemonize("%sd", tr->name);
 
    /* daemonize() doesn't do this for us since some kernel threads
-      actually want to deal with signals. We can't just call 
+      actually want to deal with signals. We can't just call
       exit_sighand() since that'll cause an oops when we finally
       do exit. */
    spin_lock_irq(¤t->sighand->siglock);
@@ -95,7 +94,7 @@ static int mtd_blktrans_thread(void *arg
    spin_unlock_irq(¤t->sighand->siglock);
 
    spin_lock_irq(rq->queue_lock);
-      
+
    while (!tr->blkcore_priv->exiting) {
       struct request *req;
       struct mtd_blktrans_dev *dev;
@@ -158,7 +157,7 @@ static int blktrans_open(struct inode *i
    if (!try_module_get(tr->owner))
       goto out_tr;
 
-   /* FIXME: Locking. A hot pluggable device can go away 
+   /* FIXME: Locking. A hot pluggable device can go away
       (del_mtd_device can be called for it) without its module
       being unloaded. */
    dev->mtd->usecount++;
@@ -196,7 +195,7 @@ static int blktrans_release(struct inode
 }
 
 
-static int blktrans_ioctl(struct inode *inode, struct file *file, 
+static int blktrans_ioctl(struct inode *inode, struct file *file,
                unsigned int cmd, unsigned long arg)
 {
    struct mtd_blktrans_dev *dev = inode->i_bdev->bd_disk->private_data;
@@ -265,7 +264,7 @@ int add_mtd_blktrans_dev(struct mtd_blkt
          /* Required number was free */
          list_add_tail(&new->list, &d->list);
          goto added;
-      } 
+      }
       last_devnum = d->devnum;
    }
    if (new->devnum == -1)
@@ -289,11 +288,19 @@ int add_mtd_blktrans_dev(struct mtd_blkt
    gd->major = tr->major;
    gd->first_minor = (new->devnum) << tr->part_bits;
    gd->fops = &mtd_blktrans_ops;
-   
-   snprintf(gd->disk_name, sizeof(gd->disk_name),
-       "%s%c", tr->name, (tr->part_bits?'a':'0') + new->devnum);
-   snprintf(gd->devfs_name, sizeof(gd->devfs_name),
-       "%s/%c", tr->name, (tr->part_bits?'a':'0') + new->devnum);
+
+   if (tr->part_bits)
+      if (new->devnum < 26)
+         snprintf(gd->disk_name, sizeof(gd->disk_name),
+             "%s%c", tr->name, 'a' + new->devnum);
+      else
+         snprintf(gd->disk_name, sizeof(gd->disk_name),
+             "%s%c%c", tr->name,
+             'a' - 1 + new->devnum / 26,
+             'a' + new->devnum % 26);
+   else
+      snprintf(gd->disk_name, sizeof(gd->disk_name),
+          "%s%d", tr->name, new->devnum);
 
    /* 2.5 has capacity in units of 512 bytes while still
       having BLOCK_SIZE_BITS set to 10. Just to keep us amused. */
@@ -307,7 +314,7 @@ int add_mtd_blktrans_dev(struct mtd_blkt
       set_disk_ro(gd, 1);
 
    add_disk(gd);
-   
+
    return 0;
 }
 
@@ -322,7 +329,7 @@ int del_mtd_blktrans_dev(struct mtd_blkt
 
    del_gendisk(old->blkcore_priv);
    put_disk(old->blkcore_priv);
-      
+
    return 0;
 }
 
@@ -361,12 +368,12 @@ static struct mtd_notifier blktrans_noti
    .add = blktrans_notify_add,
    .remove = blktrans_notify_remove,
 };
-      
+
 int register_mtd_blktrans(struct mtd_blktrans_ops *tr)
 {
    int ret, i;
 
-   /* Register the notifier if/when the first device type is 
+   /* Register the notifier if/when the first device type is
       registered, to prevent the link/init ordering from fucking
       us over. */
    if (!blktrans_notifier.list.next)
@@ -409,9 +416,7 @@ int register_mtd_blktrans(struct mtd_blk
       kfree(tr->blkcore_priv);
       up(&mtd_table_mutex);
       return ret;
-   } 
-
-   devfs_mk_dir(tr->name);
+   }
 
    INIT_LIST_HEAD(&tr->devs);
    list_add(&tr->list, &blktrans_majors);
@@ -445,7 +450,6 @@ int deregister_mtd_blktrans(struct mtd_b
       tr->remove_dev(dev);
    }
 
-   devfs_remove(tr->name);
    blk_cleanup_queue(tr->blkcore_priv->rq);
    unregister_blkdev(tr->major, tr->name);
 


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.