]> www.infradead.org Git - mtd-utils.git/commitdiff
mkfs.ubifs: correct devtable increment handling
authorDaniel Neukomm <Neukomm@vtxmail.ch>
Tue, 11 Aug 2009 08:33:23 +0000 (11:33 +0300)
committerArtem Bityutskiy <Artem.Bityutskiy@nokia.com>
Tue, 11 Aug 2009 08:35:46 +0000 (11:35 +0300)
With the device table one can add /dev entries to the root file system
image. The device table file contains among others the fields minor,
start, increment and count. If there is an entry with minor=0 start=0
increment=32 and count=4 the mkfs.ubifs makes 128 device entries, with
minor numbers from 0 to 127. The correct version makes 4 entries with
minor number 0,32,64,96.

/dev/mtd c 640 0 0 90 0 0  2 7
This gives 14 devices /dev/mtdXX instead of  7 devices.
Due to this error mtd_debug info /dev/mtd3 delivers the information of
/dev/mtd1 instead of.

Signed-off-by: Daniel Neukomm <Neukomm@vtxmail.ch>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
mkfs.ubifs/devtable.c

index 236a6e729123dac541917d956dcd21cd3cbd629a..dee035d5e948835ca728c2e824cd6609893cd625 100644 (file)
@@ -248,7 +248,7 @@ static int interpret_table_entry(const char *line)
                        goto out_free;
                }
        } else {
-               int i, num = start + increment * count, len = strlen(name) + 20;
+               int i, num = start + count, len = strlen(name) + 20;
                char *nm;
 
                for (i = start; i < num; i++) {
@@ -262,7 +262,7 @@ static int interpret_table_entry(const char *line)
                        nh_elt->mode = mode;
                        nh_elt->uid = uid;
                        nh_elt->gid = gid;
-                       nh_elt->dev = makedev(major, minor + i - start);
+                       nh_elt->dev = makedev(major, minor + (i - start) * increment);
 
                        nm = malloc(len);
                        if (!nm) {