/*
* MTD methods which simply translate the effective address and pass through
-@@ -503,6 +505,150 @@ out_register:
+@@ -503,6 +505,152 @@ out_register:
return slave;
}
+{
+ struct mtd_partition *dpart;
+ struct mtd_part *slave = NULL;
++ struct mtd_part *spart;
+ int split_offset = 0;
+ int ret;
+
-+ ret = split_squashfs(master, part->offset, &split_offset);
++ spart = PART(rpart);
++ ret = split_squashfs(master, spart->offset, &split_offset);
+ if (ret)
+ return ret;
+
+ dpart->name = (unsigned char *)&dpart[1];
+ strcpy(dpart->name, ROOTFS_SPLIT_NAME);
+
-+ dpart->size -= split_offset - dpart->offset;
++ dpart->size = rpart->size - (split_offset - spart->offset);
+ dpart->offset = split_offset;
+
+ if (dpart == NULL)
/*
* This function, given a master MTD object and a partition table, creates
* and registers slave MTD objects which are bound to the master according to
-@@ -518,7 +664,7 @@ int add_mtd_partitions(struct mtd_info *
+@@ -518,7 +666,7 @@ int add_mtd_partitions(struct mtd_info *
{
struct mtd_part *slave;
uint64_t cur_offset = 0;
printk(KERN_NOTICE "Creating %d MTD partitions on \"%s\":\n", nbparts, master->name);
-@@ -526,6 +672,21 @@ int add_mtd_partitions(struct mtd_info *
+@@ -526,6 +674,21 @@ int add_mtd_partitions(struct mtd_info *
slave = add_one_partition(master, parts + i, i, cur_offset);
if (!slave)
return -ENOMEM;
cur_offset = slave->offset + slave->mtd.size;
}
-@@ -533,6 +694,32 @@ int add_mtd_partitions(struct mtd_info *
+@@ -533,6 +696,32 @@ int add_mtd_partitions(struct mtd_info *
}
EXPORT_SYMBOL(add_mtd_partitions);