[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

ext3 - support



> The patches are ready. I am going to split them into 3 series:
> 
> - ext3 patches

Done. Note: I changed is_reiserfs and is_e3 to "match" a partial string,
ie. udma66-reiserfs.

--- boot-floppies-cvs.orig/utilities/dbootstrap/partition_config.c
+++ boot-floppies-cvs/utilities/dbootstrap/partition_config.c
@@ -10,7 +10,9 @@
 #include "util.h"
 #include "notail.h"
 
-#define is_rfs (bootargs.flavor && !strcmp ("reiserfs", bootargs.flavor))
+/* strstr allows something like flavor="2.2.19-udma100-reiserfs" */
+#define is_rfs (bootargs.flavor && (strstr(bootargs.flavor,"reiserfs") != NULL))
+#define is_e3 (bootargs.flavor &&  (strstr (bootargs.flavor, "ext3") != NULL))
 
 int check_for_native_partition (struct fdisk_disk **d, int first);
 
@@ -484,15 +500,16 @@
     }
     else  /* ext2  - with reiserfs aware kernel */
     { /* this block is the same as the one below */
-      sprintf(prtbuf, "mount -t %s %s %s",
-	  type, partition->name, real_mount_point);
+      sprintf(prtbuf, "mount -t auto %s %s",
+	  partition->name, real_mount_point);
       status = execlog(prtbuf, LOG_INFO);
     }
   }
   else /* ext2 */
-  { /* this block is the same as the one above */
-    sprintf(prtbuf, "mount -t %s %s %s",
-	  type, partition->name, real_mount_point);
+  { /* this block is the same as the one above
+     will detect ext3 or ext2 automaticaly */
+    sprintf(prtbuf, "mount -t auto %s %s",
+	   partition->name, real_mount_point);
     status = execlog(prtbuf, LOG_INFO);
   }
 
@@ -579,14 +596,13 @@
 
 int init_linux (void) {
   struct fdisk_partition *p;
-  int Oflag, cflag, status;
-
+  int Oflag, e3flag = DLG_NO, cflag, status;
+  
   if (is_rfs)
   {
     if (!twoButtonBox (_("Ext2 is the defacto standard filesystem for GNU/Linux. It is well tested and proven. It supports extended file attributes, and has more maintenance utilities.\n\nReiserFS is newer, faster, more space efficient, and has meta-data journalling.\n\nIf in doubt, use Ext2.\n\nWould you like to create an Ext2 or a ReiserFS filesystem?"), _("Choose Filesystem Type"), _("Ext2"), _("ReiserFS"), 1))
     return (init_reiser());
   }
-	  
   sync();
   p = select_not_mounted(_("Please select the partition to initialize as a Linux \"ext2\" filesystem.") ,_("Select Partition"),1,FSTYPE_EXT2);
   if (! p)
@@ -598,10 +614,13 @@
   if (! bootargs.isquiet) {
 #if #cpu(arm)
     /* ARM wants ext2 from kernel 2.0 for the boot-loader */
-    Oflag = yesNoBox(_("This 2.2 version of the Linux kernel has new \"ext2\" filesystem features not present in earlier kernel versions. Using these features, however, means that you will not be able to use this filesystem with earlier kernels, such as Linux 2.0 or with the Netwinder firmware.\n\nDo you want to retain Linux kernel 2.0 compatibility?"), _("Pre-2.2 Linux Kernel Compatibility?"));
+    Oflag = yesNoBox(_("This version of the Linux kernel has new \"ext2\" filesystem features not present in kernel versions prior to 2.2.x. Using these features, however, means that you will not be able to use this filesystem with earlier kernels, such as Linux 2.0 or with the Netwinder firmware.\n\nDo you want to retain Linux kernel 2.0 compatibility?"), _("Pre-2.2 Linux Kernel Compatibility?"));
 #else
+    if(is_e3) {
+      e3flag = twoButtonBox( _("This set of boot floppies has support for the new Journaling Extension for the Ext2 filesystem, also known as Ext3. Journaling means faster recovery process after crashes and better performance in certain conditions.\n\nBE WARNED:Though stable enough for most people, Journaling feature is new and not well-tested. It is suspected to have bugs affecting the Quota support.\n\nEnable Ext3 support and create Journal on this filesystem?\n"), _("Ext3 Journaling support?"), _("Yes"), _("No"), 1);
+    }
     /* nobody else needs the old linux 2.0 version ext2 */
-    Oflag = twoButtonBox( _("This 2.2 version of the Linux kernel has new \"ext2\" filesystem features not present in earlier kernel versions. Using these features, however, means that you will not be able to use this filesystem with earlier kernels, such as Linux 2.0.\n\nDo you want to retain Linux kernel 2.0 compatibility?"), _("Pre-2.2 Linux Kernel Compatibility?"), _("Yes"), _("No"), 2);
+    Oflag = twoButtonBox( _("This version of the Linux kernel has new \"ext2\" filesystem features not present in kernel versions prior to 2.2.x. Using these features, however, means that you will not be able to use this filesystem with earlier kernels, such as Linux 2.0.\n\nDo you want to retain Linux kernel 2.0 compatibility?"), _("Pre-2.2 Linux Kernel Compatibility?"), _("Yes"), _("No"), 2);
 #endif
   } else {
     /* be quiet and pick the right default */
@@ -609,36 +628,37 @@
     Oflag = DLG_YES;
 #else
     Oflag = DLG_NO;
+    e3flag = DLG_NO;
 #endif
   }
 
   cflag = get_cflag(p->name);
 
   if (! bootargs.isquiet) {
-    sprintf(prtbuf,_("You have chosen to initialize %s as a Linux \"ext2\" filesystem. This will permanently erase any data on this partition. Are you sure you want to do this?"),
-	    p->name);
+    sprintf(prtbuf,_("You have chosen to initialize %s as a Linux \"ext%s\" filesystem. This will permanently erase any data on this partition. Are you sure you want to do this?"),
+	    p->name, (e3flag == DLG_YES) ? "3" : "2");
     if (yesNoBox(prtbuf, _("Are You Sure?")) == DLG_NO)
       return 1;
   }
 
-  INFOMSG("formatting partition %s as ext2 for kernel %s or better", 
-          p->name, 
-          ( Oflag == DLG_NO ? "2.2" : "2.0"));
+  INFOMSG("formatting partition %s as ext%s for kernel %s or better", 
+          p->name, (e3flag == DLG_YES) ? "3" : "2", ( Oflag == DLG_NO ? "2.2" : "2.0"));
 #if #cpu(alpha)
   /* Alpha-specific workaround for MILO's failure to support 4k blocks */
   if (!(srm_boot || strcmp(Arch2, "nautilus") == 0))
-    sprintf(prtbuf, "mkfs.ext2 -O none -b 1024 %s %s",
-	    ( cflag ? "-c" : ""), p->name);
+    sprintf(prtbuf, "mkfs.ext2 -O none -b 1024 %s %s %s",
+	    ( cflag ? "-c" : ""), (e3flag == DLG_YES) ? "-j" : "", p->name);
   else
 #endif
-  sprintf(prtbuf, "mkfs.ext2 %s %s %s", ( Oflag == DLG_NO ? "" : "-O none"),
-	  ( cflag ? "-c" : ""), p->name);
+  sprintf(prtbuf, "mkfs.ext2 %s %s %s %s", ( Oflag == DLG_NO ? "" : "-O none"),
+	  ( cflag ? "-c" : ""),  (e3flag == DLG_YES) ? "-j" : "", p->name);
   boxSuspend();
   printf(CLEAR);
   if ( Oflag == DLG_YES )
-    printf(_("Creating filesystem (with 2.0 kernel compatibility)...\n"));
+    printf(_("Creating filesystem (with 2.0 kernel compatibility%s)...\n"),
+          (e3flag == DLG_YES) ? " and Journaling" : "");
   else
-    printf(_("Creating filesystem (for 2.2 kernels only)...\n"));
+    printf(_("Creating filesystem%s (for 2.2 and newer kernels only)...\n"), (e3flag == DLG_YES) ? " with Journaling" : "");
   DEBUGMSG("make filesystem with '%s'", prtbuf);
   status = system(prtbuf);
   boxResume();
--- boot-floppies-cvs.orig/utilities/dbootstrap/extract_kernel.c
+++ boot-floppies-cvs/utilities/dbootstrap/extract_kernel.c
@@ -17,7 +17,7 @@
 extern int patidx;
 
 char *driver_filenames[] = { "drv12", "drv14", "drv14compact", "drv14idepci", 
-	"drv14ide", "drv14reiserfs", "drv14pmac", "drv14chrp", "drv14prep", 
+	"drv14ide", "drv14reiserfs", "drv14udma100-ext3", "drv14pmac", "drv14chrp", "drv14prep", 
 	"drv14apus", "drv14-sun4cdm", "drv14-sun4u", "drv14-sun4dm-pci",
         "drv14generic", "drv14jensen", "drv14nautilus", NULL };
 
--- boot-floppies-cvs.orig/utilities/dbootstrap/baseconfig.c
+++ boot-floppies-cvs/utilities/dbootstrap/baseconfig.c
@@ -273,6 +273,8 @@
 	else
 	{
 	  fsname = "ext2";
+     if(is_fstype("/target", "ext3") == 1)
+        fsname = "ext3";
 	  fsopts="defaults,errors=remount-ro";
 	  pass = 1;
 	}
--- boot-floppies-cvs.orig/scripts/dos/install-udma100-ext3.bat
+++ boot-floppies-cvs/scripts/dos/install-udma100-ext3.bat
@@ -0,0 +1 @@
+..\dosutils\loadlin linux root=/dev/ram initrd=../images-1.44/ext3/root.bin disksize=1.44 flavor=udma100-ext3
--- boot-floppies-cvs.orig/documentation/README-udma100-ext3
+++ boot-floppies-cvs/documentation/README-udma100-ext3
@@ -0,0 +1,20 @@
+udma100-ext3 variant of boot floppies uses a kernel patched with the latest
+ext3 and Hedrick's IDE patch
+
+The patch supports the Promise and Highpoint chipsets used on EIDE
+controler cards or builtin on modern boards with VIA chipset. If you
+install the standard kernel-image package you may not be able to
+reboot, since the standard package does not contain the necessary IDE
+patch.
+
+An additional extra feature is ext3fs (aka Journaling for ext2). This
+extension is up and backward compatible with ext2. Though you must not
+expect real reliability and safeness for your data.
+
+See the file 'kernel-config' for the complete list of devices included
+in this flavor.
+
+See the top-level README.txt file for a description of what the files
+in this directory are for.  To get a complete description of what
+files are required for various installation methods, see the
+Installation Manual.
--- boot-floppies-cvs.orig/release.sh
+++ boot-floppies-cvs/release.sh
@@ -228,7 +228,6 @@
   gunzip -c $TOP/config.gz > $release/kernel-config
   gunzip -c $TOP/config.gz > $release/images-1.44/kernel-config
   cp $release/images-1.44/kernel-config $release/images-2.88/kernel-config
-
   # safe "flavor"
   for size in 1.20 1.44; do
     safedir=$release/images-$size/safe
@@ -239,7 +238,7 @@
     cp $TOP/documentation/README-safe $safedir/README.txt
   done
 
-  for _flavor in compact ide idepci reiserfs; do
+  for _flavor in compact ide idepci reiserfs udma100-ext3; do
     mkdir  -p $release/$_flavor
     cp linux$_flavor $release/$_flavor/linux
     recode latin1..ibmpc <scripts/dos/install-$_flavor.bat >$release/$_flavor/install.bat
@@ -293,19 +292,21 @@
   	$bfinstall
   rm -rf images-1.44
 
-  tar cz --remove-files -f bf-common${suffix}.tar.gz *.tgz images-2.88 compact ide idepci reiserfs dosutils kernel-config
+  tar cz --remove-files -f bf-common${suffix}.tar.gz *.tgz images-2.88 compact ide idepci reiserfs udma100-ext3 dosutils kernel-config
   echo "tar -xzf bf-common${suffix}.tar.gz ; rm -f bf-common${suffix}.tar.gz" >> \
   	$bfinstall
   rmdir images-2.88/compact
   rmdir images-2.88/ide
   rmdir images-2.88/idepci
   rmdir images-2.88/reiserfs
+  rmdir images-2.88/udma100-ext3
   rmdir images-2.88
   rmdir compact
   rmdir ide
   rmdir idepci
   rmdir reiserfs
   rmdir dosutils
+  rmdir udma100-ext3
 
   tar cz --remove-files -f bf-misc${suffix}.tar.gz \
   	README.txt install.bat linux md5sum.txt \
--- boot-floppies-cvs.orig/Makefile
+++ boot-floppies-cvs/Makefile
@@ -64,7 +64,9 @@
 	$(MAKE) driverside.tgz
 	$(MAKE) resc1440idepci.bin
 	$(MAKE) resc1440reiserfs.bin
+	$(MAKE) resc1440udma100-ext3.bin
 	$(MAKE) driversreiserfs.tgz
+	$(MAKE) driversudma100-ext3.tgz
 	$(MAKE) driversidepci.tgz
 	$(MAKE) resc1200.bin resc1200-s.bin
 	$(MAKE) resc2880.bin
@@ -72,6 +74,7 @@
 	$(MAKE) resc2880ide.bin
 	$(MAKE) resc2880idepci.bin
 	$(MAKE) resc2880reiserfs.bin
+	$(MAKE) resc2880udma100-ext3.bin
 	$(MAKE) drivers.tgz
 else 
 ifeq ($(architecture), m68k)

Attachment: pgpdLjit7bfX3.pgp
Description: PGP signature


Reply to: