#include <linux/string.h>
  
  #include "do_mounts.h"
+ #include "../fs/squashfs/squashfs_fs.h"
  
 +#include <linux/decompress/generic.h>
 +
 +
  int __initdata rd_prompt = 1;/* 1 = prompt for RAM disk, 0 = don't prompt */
  
  static int __init prompt_ramdisk(char *str)
   * numbers could not be found.
   *
   * We currently check for the following magic numbers:
 - *    minix
 - *    ext2
 + *    minix
 + *    ext2
   *    romfs
   *    cramfs
 - *    gzip
+  *    squashfs
 + *    gzip
   */
 -static int __init 
 -identify_ramdisk_image(int fd, int start_block)
 +static int __init
 +identify_ramdisk_image(int fd, int start_block, decompress_fn *decompressor)
  {
        const int size = 512;
        struct minix_super_block *minixsb;
        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;
 +      const char *compress_name;
  
        buf = kmalloc(size, GFP_KERNEL);
        if (!buf)