summaryrefslogtreecommitdiff
path: root/packages/linux/linux-openmoko-devel/0002-squashfs-initrd.patch
diff options
context:
space:
mode:
authorMichael Lauer <mickey@vanille-media.de>2008-07-22 12:50:02 +0000
committerMichael Lauer <mickey@vanille-media.de>2008-07-22 12:50:02 +0000
commitbe5582e5cd17e6ac56d96c2a9fa1bf7334e4cfca (patch)
tree9b2e0e2d964a1856bde2394f24de4bab5839c77b /packages/linux/linux-openmoko-devel/0002-squashfs-initrd.patch
parentc1fede3c3457ec82550e3ac0e106953db841e2f0 (diff)
parentb8a968c98e023d5d5f0b6830288853b051fb20cc (diff)
merge of '05c935a7653c0d015e410ba1c92bd8909528d2d0'
and '66afa730ae13c8e2f76b43a319e6c5be9e46c981'
Diffstat (limited to 'packages/linux/linux-openmoko-devel/0002-squashfs-initrd.patch')
-rw-r--r--packages/linux/linux-openmoko-devel/0002-squashfs-initrd.patch55
1 files changed, 55 insertions, 0 deletions
diff --git a/packages/linux/linux-openmoko-devel/0002-squashfs-initrd.patch b/packages/linux/linux-openmoko-devel/0002-squashfs-initrd.patch
new file mode 100644
index 0000000000..cd2c678058
--- /dev/null
+++ b/packages/linux/linux-openmoko-devel/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
+ */
+