diff options
author | Felix Fietkau <nbd@openwrt.org> | 2007-08-19 21:53:17 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2007-08-19 21:53:17 +0000 |
commit | 5558e7ca164fdf1c7837f36aeb21c5080db15362 (patch) | |
tree | db621bbbcf125de8fa026cd6f3882a7c4a94d372 /target/linux/generic-2.6/patches-2.6.22/065-block2mtd_init.patch | |
parent | 374d10e35907c2775e1b9955dab11bbe8db8ccde (diff) | |
download | upstream-5558e7ca164fdf1c7837f36aeb21c5080db15362.tar.gz upstream-5558e7ca164fdf1c7837f36aeb21c5080db15362.tar.bz2 upstream-5558e7ca164fdf1c7837f36aeb21c5080db15362.zip |
add refresh ioctl to mtd (for rescanning partitions after reflash)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@8438 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/generic-2.6/patches-2.6.22/065-block2mtd_init.patch')
-rw-r--r-- | target/linux/generic-2.6/patches-2.6.22/065-block2mtd_init.patch | 113 |
1 files changed, 0 insertions, 113 deletions
diff --git a/target/linux/generic-2.6/patches-2.6.22/065-block2mtd_init.patch b/target/linux/generic-2.6/patches-2.6.22/065-block2mtd_init.patch deleted file mode 100644 index bae70d41b6..0000000000 --- a/target/linux/generic-2.6/patches-2.6.22/065-block2mtd_init.patch +++ /dev/null @@ -1,113 +0,0 @@ -diff -urN linux-2.6.21.1.old/drivers/mtd/devices/block2mtd.c linux-2.6.21.1.dev/drivers/mtd/devices/block2mtd.c ---- linux-2.6.21.1.old/drivers/mtd/devices/block2mtd.c 2007-04-27 23:49:26.000000000 +0200 -+++ linux-2.6.21.1.dev/drivers/mtd/devices/block2mtd.c 2007-05-26 20:06:13.547923960 +0200 -@@ -16,6 +16,7 @@ - #include <linux/list.h> - #include <linux/init.h> - #include <linux/mtd/mtd.h> -+#include <linux/mtd/partitions.h> - #include <linux/buffer_head.h> - #include <linux/mutex.h> - #include <linux/mount.h> -@@ -237,10 +238,11 @@ - - - /* FIXME: ensure that mtd->size % erase_size == 0 */ --static struct block2mtd_dev *add_device(char *devname, int erase_size) -+static struct block2mtd_dev *add_device(char *devname, int erase_size, char *mtdname) - { - struct block_device *bdev; - struct block2mtd_dev *dev; -+ struct mtd_partition *part; - - if (!devname) - return NULL; -@@ -279,14 +281,18 @@ - - /* Setup the MTD structure */ - /* make the name contain the block device in */ -- dev->mtd.name = kmalloc(sizeof("block2mtd: ") + strlen(devname), -- GFP_KERNEL); -+ -+ if (!mtdname) -+ mtdname = devname; -+ -+ dev->mtd.name = kmalloc(strlen(mtdname) + 1, GFP_KERNEL); -+ - if (!dev->mtd.name) - goto devinit_err; -+ -+ strcpy(dev->mtd.name, mtdname); - -- sprintf(dev->mtd.name, "block2mtd: %s", devname); -- -- dev->mtd.size = dev->blkdev->bd_inode->i_size & PAGE_MASK; -+ dev->mtd.size = dev->blkdev->bd_inode->i_size & PAGE_MASK & ~(erase_size - 1); - dev->mtd.erasesize = erase_size; - dev->mtd.writesize = 1; - dev->mtd.type = MTD_RAM; -@@ -298,15 +304,18 @@ - dev->mtd.read = block2mtd_read; - dev->mtd.priv = dev; - dev->mtd.owner = THIS_MODULE; -- -- if (add_mtd_device(&dev->mtd)) { -+ -+ part = kzalloc(sizeof(struct mtd_partition), GFP_KERNEL); -+ part->name = dev->mtd.name; -+ part->offset = 0; -+ part->size = dev->mtd.size; -+ if (add_mtd_partitions(&dev->mtd, part, 1)) { - /* Device didnt get added, so free the entry */ - goto devinit_err; - } - list_add(&dev->list, &blkmtd_device_list); - INFO("mtd%d: [%s] erase_size = %dKiB [%d]", dev->mtd.index, -- dev->mtd.name + strlen("blkmtd: "), -- dev->mtd.erasesize >> 10, dev->mtd.erasesize); -+ mtdname, dev->mtd.erasesize >> 10, dev->mtd.erasesize); - return dev; - - devinit_err: -@@ -379,9 +388,9 @@ - - static int block2mtd_setup2(const char *val) - { -- char buf[80 + 12]; /* 80 for device, 12 for erase size */ -+ char buf[80 + 12 + 80]; /* 80 for device, 12 for erase size, 80 for name */ - char *str = buf; -- char *token[2]; -+ char *token[3]; - char *name; - size_t erase_size = PAGE_SIZE; - int i, ret; -@@ -392,7 +401,7 @@ - strcpy(str, val); - kill_final_newline(str); - -- for (i = 0; i < 2; i++) -+ for (i = 0; i < 3; i++) - token[i] = strsep(&str, ","); - - if (str) -@@ -412,8 +421,10 @@ - parse_err("illegal erase size"); - } - } -+ if (token[2] && (strlen(token[2]) + 1 > 80)) -+ parse_err("mtd device name too long"); - -- add_device(name, erase_size); -+ add_device(name, erase_size, token[2]); - - return 0; - } -@@ -447,7 +458,7 @@ - - - module_param_call(block2mtd, block2mtd_setup, NULL, NULL, 0200); --MODULE_PARM_DESC(block2mtd, "Device to use. \"block2mtd=<dev>[,<erasesize>]\""); -+MODULE_PARM_DESC(block2mtd, "Device to use. \"block2mtd=<dev>[,<erasesize>[,<name>]]\""); - - static int __init block2mtd_init(void) - { |