[MTD][MTDPART] Cleanup and document the erase region handling
authorAtsushi Nemoto <anemo@mba.ocn.ne.jp>
Fri, 18 Jul 2008 16:00:57 +0000 (01:00 +0900)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Fri, 25 Jul 2008 13:59:52 +0000 (09:59 -0400)
Mostly simplifying the loops.  Now everything fits into 80 columns,
is easier to read and the finer details have extra comments.

Signed-off-by: Jörn Engel <joern@logfs.org>
Signed-off-by: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
drivers/mtd/mtdpart.c

index 9cf73d3..5aac59c 100644 (file)
@@ -424,18 +424,24 @@ static struct mtd_part *add_one_partition(struct mtd_info *master,
        }
        if (master->numeraseregions > 1) {
                /* Deal with variable erase size stuff */
-               int i;
+               int i, max = master->numeraseregions;
+               u32 end = slave->offset + slave->mtd.size;
                struct mtd_erase_region_info *regions = master->eraseregions;
 
-               /* Find the first erase regions which is part of this partition. */
-               for (i = 0; i < master->numeraseregions && regions[i].offset <= slave->offset; i++)
+               /* Find the first erase regions which is part of this
+                * partition. */
+               for (i = 0; i < max && regions[i].offset <= slave->offset; i++)
                        ;
+               /* The loop searched for the region _behind_ the first one */
+               i--;
 
-               for (i--; i < master->numeraseregions && regions[i].offset < slave->offset + slave->mtd.size; i++) {
+               /* Pick biggest erasesize */
+               for (; i < max && regions[i].offset < end; i++) {
                        if (slave->mtd.erasesize < regions[i].erasesize) {
                                slave->mtd.erasesize = regions[i].erasesize;
                        }
                }
+               BUG_ON(slave->mtd.erasesize == 0);
        } else {
                /* Single erase size */
                slave->mtd.erasesize = master->erasesize;