how to change size of MTD partitions at runtime
William J Beksi
wjbeksi at setabox.com
Wed Sep 1 11:34:32 EDT 2004
Hi,
Kuefmann Andreas ICM CP RD SD 1 wrote:
>Hi all,
>
>I'm searching for a solution to dynamically change the size of
>MTD partitions at runtime.
>
>This functionality is required for a flash update of kernel and/or
>rootfs in the special case that the new kernel/rootfs is larger
>than the old one. (in an embedded environment)
>
>1.)
>there is no problem in erasing the flash, e.g eraseall /dev/mtd?,
>(acting from a chrooted environment)
>
>2.)
>However, reprogramming the flash with a larger image (now
>exceeding the limits of the previous partition) isn't as
>easy as a cp newimage.img /dev/mtd?.
>
>The MTD layer will still rely on the (old) partition sizes
>that were valid during system startup. (taken over from a
>U-BOOT environment)
>
>
I'm using the proc filesytem to dynamically change the mtd partition
sizes on my flash at runtime. I added a function to mtdcore.c that looks
like this:
static int mtd_write_proc (struct file *filp, const char *buf, unsigned
long count, void *data)
{
int value;
struct mtd_info *this;
unsigned long pos = (unsigned long)(filp->f_pos);
down(&mtd_table_mutex);
while (pos < count) {
/* Get the partition number. */
if (pos == 0) {
value = antoi(buf, pos, count);
this = mtd_table[value];
}
/* Change size of the partition (in Mb). */
if (pos == 2) {
value = antoi(buf, pos, count);
this->size = value*1024*1024;
}
pos++;
}
up(&mtd_table_mutex);
return count;
}
The partition table values can be changed by writing the partition
number and size (in megabytes) to /proc/mtd: echo 1 3 > /proc/mtd ||
||I'm not sure if this is the best way to dynamically change the
partition sizes at runtime, nor is it very safe.
>My question now is:
>- How can I manage to force a re-read of the partition table?
>
>
>
>
Where do you keep your partition table? I'm using a cramfs filesystem
and LinuxBIOS on nand flash. I reserve the first block of the flash to
store a partition table, bad block list, and other information. I have a
set of user space utilites for reading and writing the partition table.
--
William J Beksi
>______________________________________________________
>Linux MTD discussion mailing list
>http://lists.infradead.org/mailman/listinfo/linux-mtd/
>
>
>
More information about the linux-mtd
mailing list