Hello,

This applies to the -pu branch of the e2fsprogs git tree.  Went to reformat my
ext3 fs and found it was taking way too long, turns out its because the undo io
manager was doing its thing.  This patch makes this an option, and turns it off
by default.  I opted for off by default so users don't wonder why their mkfs's
are all of a sudden taking alot longer than they used to.  Thank you,

Josef

diff --git a/misc/mke2fs.8.in b/misc/mke2fs.8.in
index 171df5b..613d752 100644
--- a/misc/mke2fs.8.in
+++ b/misc/mke2fs.8.in
@@ -74,6 +74,9 @@ mke2fs \- create an ext2/ext3 filesystem
 .B \-v
 ]
 [
+.B \-u
+]
+[
 .B \-F
 ]
 [
@@ -481,6 +484,11 @@ types: small, floppy, news, largefile, and largefile4.
 .B \-v
 Verbose execution.
 .TP
+.B \-u
+Turn on undo io manager.  This will check the volume you are formatting and if
+a existing filesystem is there, it will create an undo file that you can feed
+to undoe2fs to get your original filesystem back.
+.TP
 .B \-V
 Print the version number of 
 .B mke2fs
diff --git a/misc/mke2fs.c b/misc/mke2fs.c
index dbbedc0..303f6fc 100644
--- a/misc/mke2fs.c
+++ b/misc/mke2fs.c
@@ -78,6 +78,7 @@ int   force;
 int    noaction;
 int    journal_size;
 int    journal_flags;
+int    undofs;
 char   *bad_blocks_filename;
 __u32  fs_stride;
 
@@ -1001,6 +1002,8 @@ static void PRS(int argc, char *argv[])
                fs_param.s_rev_level = 0;
 #endif
 
+       undofs = 0;
+
        if (argc && *argv) {
                program_name = get_progname(*argv);
 
@@ -1010,7 +1013,7 @@ static void PRS(int argc, char *argv[])
        }
 
        while ((c = getopt (argc, argv,
-                   "b:cf:g:i:jl:m:no:qr:s:tvE:FI:J:L:M:N:O:R:ST:V")) != EOF) {
+                   "b:cf:g:i:jl:m:no:qr:s:tuvE:FI:J:L:M:N:O:R:ST:V")) != EOF) {
                switch (c) {
                case 'b':
                        blocksize = strtol(optarg, &tmp, 0);
@@ -1127,6 +1130,9 @@ static void PRS(int argc, char *argv[])
                                exit(1);
                        }
                        break;
+               case 'u':
+                       undofs = 1;
+                       break;
                case 'v':
                        verbose = 1;
                        break;
@@ -1656,7 +1662,7 @@ int main (int argc, char *argv[])
        io_ptr = test_io_manager;
        test_io_backing_manager = unix_io_manager;
 #else
-       if (filesystem_exist(device_name)) {
+       if (undofs && filesystem_exist(device_name)) {
 
                io_ptr = undo_io_manager;
                set_undo_io_backing_manager(unix_io_manager);
-
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to