]> www.infradead.org Git - mtd-utils.git/commitdiff
- Update utils to build from in tree include files
authorJosh Boyer <jwboyer@gmail.com>
Wed, 12 Apr 2006 01:05:27 +0000 (20:05 -0500)
committerJosh Boyer <jwboyer@gmail.com>
Wed, 12 Apr 2006 01:05:27 +0000 (20:05 -0500)
- Revert any ebh stuff for now

Signed-off-by: Josh Boyer <jwboyer@gmail.com>
Makefile
flash_eraseall.c
ftl_check.c
ftl_format.c
jffs2dump.c
mkfs.jffs2.c

index a77c6eb0c9846c83920361e78fd0c4ed9afce962..b5401c4e53fe379b7bddb23243f731118b589a09 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -8,7 +8,7 @@ MANDIR=/usr/man
 INCLUDEDIR=/usr/include
 #CROSS=arm-linux-
 CC := $(CROSS)gcc
-CFLAGS := -I../include -O2 -Wall
+CFLAGS := -I./include -O2 -Wall
 
 TARGETS = ftl_format flash_erase flash_eraseall nanddump doc_loadbios \
        mkfs.jffs ftl_check mkfs.jffs2 flash_lock flash_unlock flash_info \
index d88246bb5679402c4e45a9f79052044a2dcea18b..3694e3d3a3c47a469d563f092436d670264cf6ad 100644 (file)
@@ -18,7 +18,7 @@
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
 
-   $Id: flash_eraseall.c,v 1.24 2005/11/07 11:15:10 gleixner Exp $
+   $Id: flash_eraseall.c,v 1.22 2005/02/17 14:55:06 hvr Exp $
 */
 #include <sys/types.h>
 #include <stdio.h>
@@ -43,7 +43,7 @@
 #include <mtd/jffs2-user.h>
 
 #define PROGRAM "flash_eraseall"
-#define VERSION "$Revision: 1.24 $"
+#define VERSION "$Revision: 1.22 $"
 
 static const char *exe_name;
 static const char *mtd_device;
@@ -53,16 +53,15 @@ static int jffs2;           // format for jffs2 usage
 static void process_options (int argc, char *argv[]);
 static void display_help (void);
 static void display_version (void);
-static struct jffs2_raw_ebh ebh;
+static struct jffs2_unknown_node cleanmarker;
 int target_endian = __BYTE_ORDER;
 
 int main (int argc, char *argv[])
 {
        mtd_info_t meminfo;
-       int fd, ebhpos = 0, ebhlen = 0;
+       int fd, clmpos = 0, clmlen = 8;
        erase_info_t erase;
        int isNAND, bbtest = 1;
-       uint32_t pages_per_eraseblock, available_oob_space;
 
        process_options(argc, argv);
 
@@ -82,19 +81,11 @@ int main (int argc, char *argv[])
        isNAND = meminfo.type == MTD_NANDFLASH ? 1 : 0;
 
        if (jffs2) {
-               ebh.magic = cpu_to_je16 (JFFS2_MAGIC_BITMASK);
-               ebh.nodetype = cpu_to_je16 (JFFS2_NODETYPE_ERASEBLOCK_HEADER);
-               ebh.totlen = cpu_to_je32(sizeof(struct jffs2_raw_ebh));
-               ebh.hdr_crc = cpu_to_je32 (crc32 (0, &ebh,  sizeof (struct jffs2_unknown_node) - 4));
-               ebh.reserved = 0;
-               ebh.compat_fset = JFFS2_EBH_COMPAT_FSET;
-               ebh.incompat_fset = JFFS2_EBH_INCOMPAT_FSET;
-               ebh.rocompat_fset = JFFS2_EBH_ROCOMPAT_FSET;
-               ebh.erase_count = cpu_to_je32(0);
-               ebh.node_crc = cpu_to_je32(crc32(0, (unsigned char *)&ebh + sizeof(struct jffs2_unknown_node) + 4,
-                                        sizeof(struct jffs2_raw_ebh) - sizeof(struct jffs2_unknown_node) - 4));
-
-               if (isNAND) {
+               cleanmarker.magic = cpu_to_je16 (JFFS2_MAGIC_BITMASK);
+               cleanmarker.nodetype = cpu_to_je16 (JFFS2_NODETYPE_CLEANMARKER);
+               if (!isNAND)
+                       cleanmarker.totlen = cpu_to_je32 (sizeof (struct jffs2_unknown_node));
+               else {
                        struct nand_oobinfo oobinfo;
 
                        if (ioctl(fd, MEMGETOOBSEL, &oobinfo) != 0) {
@@ -109,32 +100,30 @@ int main (int argc, char *argv[])
                                        fprintf (stderr, " Eeep. Autoplacement selected and no empty space in oob\n");
                                        exit(1);
                                }
-                               ebhpos = oobinfo.oobfree[0][0];
-                               ebhlen = oobinfo.oobfree[0][1];
+                               clmpos = oobinfo.oobfree[0][0];
+                               clmlen = oobinfo.oobfree[0][1];
+                               if (clmlen > 8)
+                                       clmlen = 8;
                        } else {
                                /* Legacy mode */
                                switch (meminfo.oobsize) {
                                case 8:
-                                       ebhpos = 6;
-                                       ebhlen = 2;
+                                       clmpos = 6;
+                                       clmlen = 2;
                                        break;
                                case 16:
-                                       ebhpos = 8;
-                                       ebhlen = 8;
+                                       clmpos = 8;
+                                       clmlen = 8;
                                        break;
                                case 64:
-                                       ebhpos = 16;
-                                       ebhlen = 8;
+                                       clmpos = 16;
+                                       clmlen = 8;
                                        break;
                                }
                        }
-                       pages_per_eraseblock = meminfo.erasesize/meminfo.oobblock;
-                       available_oob_space = ebhlen * pages_per_eraseblock;
-                       if (available_oob_space < sizeof(struct jffs2_raw_ebh)) {
-                               fprintf(stderr, "The OOB area(%d) is not big enough to hold eraseblock_header(%d)", available_oob_space, sizeof(struct jffs2_raw_ebh));
-                               exit(1);
-                       }
+                       cleanmarker.totlen = cpu_to_je32(8);
                }
+               cleanmarker.hdr_crc =  cpu_to_je32 (crc32 (0, &cleanmarker,  sizeof (struct jffs2_unknown_node) - 4));
        }
 
        for (erase.start = 0; erase.start < meminfo.size; erase.start += meminfo.erasesize) {
@@ -180,20 +169,11 @@ int main (int argc, char *argv[])
                /* write cleanmarker */
                if (isNAND) {
                        struct mtd_oob_buf oob;
-                       uint32_t i = 0, written = 0;
-
-                       while (written < sizeof(struct jffs2_raw_ebh)) {
-                               oob.ptr = (unsigned char *) &ebh + written;
-                               oob.start = erase.start + meminfo.oobblock*i + ebhpos;
-                               oob.length = (sizeof(struct jffs2_raw_ebh) - written) < ebhlen ? (sizeof(struct jffs2_raw_ebh) - written) : ebhlen;
-                               if (ioctl (fd, MEMWRITEOOB, &oob) != 0) {
-                                       fprintf(stderr, "\n%s: %s: MTD writeoob failure: %s\n", exe_name, mtd_device, strerror(errno));
-                                       break;
-                               }
-                               i++;
-                               written += oob.length;
-                       }
-                       if (written < sizeof(struct jffs2_raw_ebh)) {
+                       oob.ptr = (unsigned char *) &cleanmarker;
+                       oob.start = erase.start + clmpos;
+                       oob.length = clmlen;
+                       if (ioctl (fd, MEMWRITEOOB, &oob) != 0) {
+                               fprintf(stderr, "\n%s: %s: MTD writeoob failure: %s\n", exe_name, mtd_device, strerror(errno));
                                continue;
                        }
                } else {
@@ -201,7 +181,7 @@ int main (int argc, char *argv[])
                                fprintf(stderr, "\n%s: %s: MTD lseek failure: %s\n", exe_name, mtd_device, strerror(errno));
                                continue;
                        }
-                       if (write (fd , &ebh, sizeof (ebh)) != sizeof (ebh)) {
+                       if (write (fd , &cleanmarker, sizeof (cleanmarker)) != sizeof (cleanmarker)) {
                                fprintf(stderr, "\n%s: %s: MTD write failure: %s\n", exe_name, mtd_device, strerror(errno));
                                continue;
                        }
index 1a64f6b07ee4a98d2ddece1ee356f0ce76a29937..f5398ed8fe4b7d7a00446a3be0539f47997ee97f 100644 (file)
@@ -48,7 +48,7 @@
 #include <sys/stat.h>
 
 #include <mtd/mtd-user.h>
-#include <linux/mtd/ftl.h>
+#include <mtd/ftl-user.h>
 
 #include <byteswap.h>
 #include <endian.h>
index 231fb3f58a96ee83ed1297e1c4389ba6059f62c0..8739fab02f9570805c4045163bdb1d4aff2cddad 100644 (file)
@@ -48,7 +48,7 @@
 #include <sys/stat.h>
 
 #include <mtd/mtd-user.h>
-#include <linux/mtd/ftl.h>
+#include <mtd/ftl-user.h>
 
 #include <byteswap.h>
 #include <endian.h>
index c5179a6b09d7fab411f2cfedd39d0b451c1dedac..0db0cd740e8f27ca233f0ff52c065ba550a928d6 100644 (file)
@@ -3,7 +3,7 @@
  *
  *  Copyright (C) 2003 Thomas Gleixner (tglx@linutronix.de)
  *
- * $Id: jffs2dump.c,v 1.12 2005/11/07 11:15:12 gleixner Exp $
+ * $Id: jffs2dump.c,v 1.10 2005/09/26 11:49:39 havasi Exp $
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
@@ -37,7 +37,7 @@
 #include "summary.h"
 
 #define PROGRAM "jffs2dump"
-#define VERSION "$Revision: 1.12 $"
+#define VERSION "$Revision: 1.10 $"
 
 #define PAD(x) (((x)+3)&~3)
 
@@ -379,22 +379,6 @@ void do_dumpcontent (void)
                        break;
                }
 
-               case JFFS2_NODETYPE_ERASEBLOCK_HEADER:
-                       printf ("%8s EBH        node at 0x%08x, totlen 0x%08x, compat_fset 0x%02x, incompat_fset 0x%02x, rocompat_fset 0x%02x, erase_count 0x%08x\n",
-                               obsolete ? "Obsolete" : "", p - data, je32_to_cpu (node->eh.totlen), node->eh.compat_fset,
-                               node->eh.incompat_fset, node->eh.rocompat_fset, je32_to_cpu (node->eh.erase_count));
-
-                       crc = crc32(0, p + sizeof(struct jffs2_unknown_node) + 4, je32_to_cpu(node->eh.totlen) - sizeof(struct jffs2_unknown_node) - 4);
-                       if (crc != je32_to_cpu(node->eh.node_crc)) {
-                               printf ("Wrong node_crc at  0x%08x, 0x%08x instead of 0x%08x\n", p - data, je32_to_cpu (node->eh.node_crc), crc);
-                               p += PAD(je32_to_cpu (node->eh.totlen));
-                               dirty += PAD(je32_to_cpu (node->eh.totlen));;
-                               continue;
-                       }
-
-                       p += PAD(je32_to_cpu (node->eh.totlen));
-                       break;
-
                case JFFS2_NODETYPE_CLEANMARKER:
                        if (verbose) {
                                printf ("%8s Cleanmarker     at 0x%08x, totlen 0x%08x\n",
@@ -631,23 +615,6 @@ void do_endianconvert (void)
                        break;
                }
 
-               case JFFS2_NODETYPE_ERASEBLOCK_HEADER:
-                       newnode.eh.magic = cnv_e16 (node->eh.magic);
-                       newnode.eh.nodetype = cnv_e16 (node->eh.nodetype);
-                       newnode.eh.totlen = cnv_e32 (node->eh.totlen);
-                       newnode.eh.hdr_crc = cpu_to_e32 (crc32 (0, &newnode, sizeof (struct jffs2_unknown_node) - 4));
-                       newnode.eh.reserved = node->eh.reserved;
-                       newnode.eh.compat_fset = node->eh.compat_fset;
-                       newnode.eh.incompat_fset = node->eh.incompat_fset;
-                       newnode.eh.rocompat_fset = node->eh.rocompat_fset;
-                       newnode.eh.erase_count = cnv_e32 (node->eh.erase_count);
-                       newnode.eh.node_crc = cpu_to_e32 (crc32 (0, (unsigned char *)&newnode + sizeof(struct jffs2_unknown_node) + 4,
-                                                               je32_to_cpu(node->eh.totlen) - sizeof(struct jffs2_unknown_node) + 4));
-                       write(fd, &newnode, sizeof(struct jffs2_raw_ebh));
-                       write(fd, p + sizeof(struct jffs2_raw_ebh), PAD(je32_to_cpu(node->eh.totlen) - sizeof(struct jffs2_raw_ebh)));
-                       p += PAD(je32_to_cpu (node->eh.totlen));
-                       break;
-
                case 0xffff:
                        write (fd, p, 4);
                        p += 4;
index 82439e5367a378a9cc1ed2b016157bd1a138c9e7..feac88da0b0de9a5599d1ae69499f86c3681315a 100644 (file)
@@ -659,9 +659,9 @@ static uint8_t *file_buffer = NULL;         /* file buffer contains the actual erase bl
 static int out_ofs = 0;
 static int erase_block_size = 65536;
 static int pad_fs_size = 0;
-static int add_ebhs = 1;
-static struct jffs2_raw_ebh ebh;
-static int ebh_size = sizeof(ebh);
+static int add_cleanmarkers = 1;
+static struct jffs2_unknown_node cleanmarker;
+static int cleanmarker_size = sizeof(cleanmarker);
 static unsigned char ffbuf[16] =
        { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
        0xff, 0xff, 0xff, 0xff, 0xff
@@ -722,20 +722,20 @@ static inline void padword(void)
 
 static inline void pad_block_if_less_than(int req)
 {
-       if (add_ebhs) {
+       if (add_cleanmarkers) {
                if ((out_ofs % erase_block_size) == 0) {
-                       full_write(out_fd, &ebh, sizeof(ebh));
-                       pad(ebh_size - sizeof(ebh));
+                       full_write(out_fd, &cleanmarker, sizeof(cleanmarker));
+                       pad(cleanmarker_size - sizeof(cleanmarker));
                        padword();
                }
        }
        if ((out_ofs % erase_block_size) + req > erase_block_size) {
                padblock();
        }
-       if (add_ebhs) {
+       if (add_cleanmarkers) {
                if ((out_ofs % erase_block_size) == 0) {
-                       full_write(out_fd, &ebh, sizeof(ebh));
-                       pad(ebh_size - sizeof(ebh));
+                       full_write(out_fd, &cleanmarker, sizeof(cleanmarker));
+                       pad(cleanmarker_size - sizeof(cleanmarker));
                        padword();
                }
        }
@@ -862,14 +862,11 @@ static void write_regular_file(struct filesystem_entry *e)
                        full_write(out_fd, wbuf, space);
                        padword();
 
-                        if (tbuf != cbuf) {
-                               free(cbuf);
-                               cbuf = NULL;
-                       }
-
                        tbuf += dsize;
                        len -= dsize;
                        offset += dsize;
+
+                        if (tbuf!=cbuf) if (!cbuf) free(cbuf);
                }
        }
        if (!je32_to_cpu(ri.version)) {
@@ -1115,17 +1112,10 @@ static void recursive_populate_directory(struct filesystem_entry *dir)
 
 static void create_target_filesystem(struct filesystem_entry *root)
 {
-       ebh.magic    = cpu_to_je16(JFFS2_MAGIC_BITMASK);
-       ebh.nodetype = cpu_to_je16(JFFS2_NODETYPE_ERASEBLOCK_HEADER);
-       ebh.totlen   = cpu_to_je32(sizeof(ebh));
-       ebh.hdr_crc  = cpu_to_je32(crc32(0, &ebh, sizeof(struct jffs2_unknown_node)-4));
-       ebh.reserved = 0;
-       ebh.compat_fset = JFFS2_EBH_COMPAT_FSET;
-       ebh.incompat_fset = JFFS2_EBH_INCOMPAT_FSET;
-       ebh.rocompat_fset = JFFS2_EBH_ROCOMPAT_FSET;
-       ebh.erase_count = cpu_to_je32(0);
-       ebh.node_crc = cpu_to_je32(crc32(0, (unsigned char *)&ebh + sizeof(struct jffs2_unknown_node) + 4,
-                                                       sizeof(struct jffs2_raw_ebh) - sizeof(struct jffs2_unknown_node) - 4));
+       cleanmarker.magic    = cpu_to_je16(JFFS2_MAGIC_BITMASK);
+       cleanmarker.nodetype = cpu_to_je16(JFFS2_NODETYPE_CLEANMARKER);
+       cleanmarker.totlen   = cpu_to_je32(cleanmarker_size);
+       cleanmarker.hdr_crc  = cpu_to_je32(crc32(0, &cleanmarker, sizeof(struct jffs2_unknown_node)-4));
 
        if (ino == 0)
                ino = 1;
@@ -1136,11 +1126,11 @@ static void create_target_filesystem(struct filesystem_entry *root)
        if (pad_fs_size == -1) {
                padblock();
        } else {
-               if (pad_fs_size && add_ebhs){
+               if (pad_fs_size && add_cleanmarkers){
                        padblock();
                        while (out_ofs < pad_fs_size) {
-                               full_write(out_fd, &ebh, sizeof(ebh));
-                               pad(ebh_size - sizeof(ebh));
+                               full_write(out_fd, &cleanmarker, sizeof(cleanmarker));
+                               pad(cleanmarker_size - sizeof(cleanmarker));
                                padblock();
                        }
                } else {
@@ -1163,8 +1153,8 @@ static struct option long_options[] = {
        {"version", 0, NULL, 'V'},
        {"big-endian", 0, NULL, 'b'},
        {"little-endian", 0, NULL, 'l'},
-       {"no-eraseblock-headers", 0, NULL, 'n'},
-       {"eraseblock-header", 1, NULL, 'c'},
+       {"no-cleanmarkers", 0, NULL, 'n'},
+       {"cleanmarker", 1, NULL, 'c'},
        {"squash", 0, NULL, 'q'},
        {"squash-uids", 0, NULL, 'U'},
        {"squash-perms", 0, NULL, 'P'},
@@ -1188,7 +1178,7 @@ static char *helptext =
        "  -r, -d, --root=DIR      Build file system from directory DIR (default: cwd)\n"
        "  -s, --pagesize=SIZE     Use page size (max data node size) SIZE (default: 4KiB)\n"
        "  -e, --eraseblock=SIZE   Use erase block size SIZE (default: 64KiB)\n"
-       "  -c, --eraseblock-header=SIZE  Size of eraseblock header (default 28)\n"
+       "  -c, --cleanmarker=SIZE  Size of cleanmarker (default 12)\n"
        "  -m, --compr-mode=MODE   Select compression mode (default: priortiry)\n"
         "  -x, --disable-compressor=COMPRESSOR_NAME\n"
         "                          Disable a compressor\n"
@@ -1198,7 +1188,7 @@ static char *helptext =
         "                          Set the priority of a compressor\n"
         "  -L, --list-compressors  Show the list of the avaiable compressors\n"
         "  -t, --test-compression  Call decompress and compare with the original (for test)\n"
-       "  -n, --no-eraseblock-headers   Don't add a eraseblock header to every eraseblock\n"
+       "  -n, --no-cleanmarkers   Don't add a cleanmarker to every eraseblock\n"
        "  -o, --output=FILE       Output to FILE (default: stdout)\n"
        "  -l, --little-endian     Create a little-endian filesystem\n"
        "  -b, --big-endian        Create a big-endian filesystem\n"
@@ -1212,7 +1202,7 @@ static char *helptext =
        "  -V, --version           Display version information\n"
        "  -i, --incremental=FILE  Parse FILE and generate appendage output for it\n\n";
 
-static char *revtext = "$Revision: 1.50 $";
+static char *revtext = "$Revision: 1.45 $";
 
 int load_next_block() {
 
@@ -1302,15 +1292,6 @@ void process_buffer(int inp_size) {
                                p += PAD(je32_to_cpu (node->u.totlen));
                                break;
 
-                       case JFFS2_NODETYPE_ERASEBLOCK_HEADER:
-                               if (verbose) {
-                                       printf ("%8s Eraseblock header at 0x%08x, totlen 0x%08x\n",
-                                               obsolete ? "Obsolete" : "",
-                                               p - file_buffer, je32_to_cpu (node->eh.totlen));
-                               }
-                               p += PAD(je32_to_cpu (node->eh.totlen));
-                               break;
-
                        case JFFS2_NODETYPE_PADDING:
                                if (verbose) {
                                        printf ("%8s Padding    node at 0x%08x, totlen 0x%08x\n",
@@ -1481,15 +1462,15 @@ int main(int argc, char **argv)
                                        pad_fs_size = -1;
                                break;
                        case 'n':
-                               add_ebhs = 0;
+                               add_cleanmarkers = 0;
                                break;
                        case 'c':
-                               ebh_size = strtol(optarg, NULL, 0);
-                               if (ebh_size < sizeof(ebh)) {
-                                       error_msg_and_die("ebh size must be >= 28");
+                               cleanmarker_size = strtol(optarg, NULL, 0);
+                               if (cleanmarker_size < sizeof(cleanmarker)) {
+                                       error_msg_and_die("cleanmarker size must be >= 12");
                                }
-                               if (ebh_size >= erase_block_size) {
-                                       error_msg_and_die("ebh size must be < eraseblock size");
+                               if (cleanmarker_size >= erase_block_size) {
+                                       error_msg_and_die("cleanmarker size must be < eraseblock size");
                                }
                                break;
                         case 'm':