[PATCH] mkfs.jffs2 format option

Kenneth Johansson kenneth.johansson at etx.ericsson.se
Tue Sep 24 12:54:13 EDT 2002


This adds an option to eraseall that formats the block for jffs2.
This avoids the double erase that happens if you directly mount the
erased partition without first copying a jffs2 image to it.
 
-- 
Kenneth Johansson	
Ericsson AB                       Tel: +46 8 404 71 83
Borgafjordsgatan 9                Fax: +46 8 404 72 72
164 80 Stockholm                  kenneth.johansson at etx.ericsson.se

-------------- next part --------------
--- mtd/util/eraseall.c	Wed Apr 25 09:11:19 2001
+++ ppc-20020923/util/eraseall.c	Tue Sep 24 18:47:16 2002
@@ -32,8 +32,10 @@
 #include <linux/mtd/mtd.h>
 
 #define PROGRAM "eraseall"
-#define VERSION "0.1.0"
+#define VERSION "0.2.0"
 
+static char cleanmarker[]={0x19,0x85,0x20,0x03,0x00,0x00,0x00,0x0c,0xf0,0x60,0xdc,0x98};
+static int jffs2_format;
 static const char *exe_name;
 static const char *mtd_device;
 static int quiet; /* true -- don't output progress */
@@ -68,7 +70,7 @@
 	erase.start += meminfo.erasesize) {
        
        if( !quiet ) {
-	   printf( "\rErasing %ld Kibyte @ %lx -- %2ld %% complete.", 
+	   printf( "\rErasing %d Kibyte @ %x -- %2d %% complete.", 
 		   meminfo.erasesize/1024, erase.start,
 		   erase.start*100/meminfo.size );
        }
@@ -80,9 +82,15 @@
 			mtd_device, strerror( errno) );
 	       //exit( 1 );
        }
+       if(jffs2_format){
+	       if(erase.start != lseek(fd,erase.start,SEEK_SET))
+		       fprintf( stderr, "Could not seek to pos %x on %s",erase.start,mtd_device);
+	       write(fd,cleanmarker,sizeof(cleanmarker));
+       }
+
    }
    if( !quiet ) {
-       printf( "\rErased %ld Kibyte @ %lx -- 100%% complete.       \n",
+       printf( "\rErased %d Kibyte @ %lx -- 100%% complete.       \n",
 	       meminfo.size/1024, 0L );
    }
    
@@ -98,10 +106,11 @@
 
     for(;;) {
         int option_index = 0;
-        static const char* short_options="q";
+        static const char* short_options="qf";
         static const struct option long_options[] = {
             {"help", no_argument, 0, 0},
             {"version", no_argument, 0, 0},
+	    {"format", no_argument, 0, 'f'},
 	    {"quiet", no_argument, 0, 'q'},
 	    {"silent", no_argument, 0, 'q'},
 
@@ -126,8 +135,11 @@
             }
             break;
 	case 'q' :
-	    quiet=1;
+	   quiet=1;
 	    break;
+	case 'f' :
+	   jffs2_format=1;
+	   break;
         case '?' :
             error=1;
             break;
@@ -151,6 +163,7 @@
     printf( "Usage: %s [OPTION] MTD_DEVICE\n"
             "Erases all of the specified MTD device.\n"
             "\n"
+            "  -f, --format   write cleanmarker for jffs2\n"
             "  -q, --quiet    don't display progress messages\n"
 	    "      --silent   same as --quiet\n"
             "      --help     display this help and exit\n"


More information about the linux-mtd mailing list