summaryrefslogtreecommitdiff
path: root/packages/linux/linux-openmoko-2.6.28/0002-squashfs-initrd.patch
diff options
context:
space:
mode:
Diffstat (limited to 'packages/linux/linux-openmoko-2.6.28/0002-squashfs-initrd.patch')
-rw-r--r--packages/linux/linux-openmoko-2.6.28/0002-squashfs-initrd.patch55
1 files changed, 55 insertions, 0 deletions
diff --git a/packages/linux/linux-openmoko-2.6.28/0002-squashfs-initrd.patch b/packages/linux/linux-openmoko-2.6.28/0002-squashfs-initrd.patch
new file mode 100644
index 0000000000..cd2c678058
--- /dev/null
+++ b/packages/linux/linux-openmoko-2.6.28/0002-squashfs-initrd.patch
@@ -0,0 +1,55 @@
+diff -urN linux-2.6.23/init/do_mounts_rd.c linux-2.6.23.sqlzma-ng/init/do_mounts_rd.c
+--- linux-2.6.23/init/do_mounts_rd.c 2007-10-09 16:31:38.000000000 -0400
++++ linux-2.6.23.sqlzma-ng/init/do_mounts_rd.c 2007-11-13 18:58:41.000000000 -0500
+@@ -5,6 +5,7 @@
+ #include <linux/ext2_fs.h>
+ #include <linux/romfs_fs.h>
+ #include <linux/cramfs_fs.h>
++#include <linux/squashfs_fs.h>
+ #include <linux/initrd.h>
+ #include <linux/string.h>
+
+@@ -39,6 +40,7 @@
+ * numbers could not be found.
+ *
+ * We currently check for the following magic numbers:
++ * squashfs
+ * minix
+ * ext2
+ * romfs
+@@ -53,6 +55,7 @@
+ struct ext2_super_block *ext2sb;
+ struct romfs_super_block *romfsb;
+ struct cramfs_super *cramfsb;
++ struct squashfs_super_block *squashfsb;
+ int nblocks = -1;
+ unsigned char *buf;
+
+@@ -64,6 +67,7 @@
+ ext2sb = (struct ext2_super_block *) buf;
+ romfsb = (struct romfs_super_block *) buf;
+ cramfsb = (struct cramfs_super *) buf;
++ squashfsb = (struct squashfs_super_block *) buf;
+ memset(buf, 0xe5, size);
+
+ /*
+@@ -101,6 +105,18 @@
+ goto done;
+ }
+
++ /* squashfs is at block zero too */
++ if (squashfsb->s_magic == SQUASHFS_MAGIC) {
++ printk(KERN_NOTICE
++ "RAMDISK: squashfs filesystem found at block %d\n",
++ start_block);
++ if (squashfsb->s_major < 3)
++ nblocks = (squashfsb->bytes_used_2+BLOCK_SIZE-1)>>BLOCK_SIZE_BITS;
++ else
++ nblocks = (squashfsb->bytes_used+BLOCK_SIZE-1)>>BLOCK_SIZE_BITS;
++ goto done;
++ }
++
+ /*
+ * Read block 1 to test for minix and ext2 superblock
+ */
+