mkfs.jffs2.c rework

Kenneth Johansson kenneth.johansson at etx.ericsson.se
Mon Nov 25 07:39:15 EST 2002


On Mon, 2002-11-25 at 13:21, Erik Andersen wrote:
> I've got these changes done.  Shall I check it in?  Adding
> support for cleanmarkers can be done soon (after I get a chance

Here is a patch I did for eraseall to add cleanmarker. Big endian system
only.


-- 
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 --------------
--- /home/innkeon/src/mtd/mtd/util/eraseall.c	Wed Apr 25 09:11:19 2001
+++ eraseall.c	Mon Oct 14 14:50:43 2002
@@ -16,7 +16,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: eraseall.c,v 1.7 2001/04/25 07:11:19 ollie Exp $
+   $Id: eraseall.c,v 1.1 2002/10/14 12:50:43 innkeon Exp $
 */
 #include <unistd.h>
 #include <stdlib.h>
@@ -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