Author: sparky Date: Sun Nov 19 00:24:39 2006 GMT Module: SOURCES Tag: HEAD ---- Log message: - updated, from squashfs3.1-r2, for 2.6.18.1
---- Files affected: SOURCES: kernel-desktop-squashfs.patch (1.1 -> 1.2) ---- Diffs: ================================================================ Index: SOURCES/kernel-desktop-squashfs.patch diff -u SOURCES/kernel-desktop-squashfs.patch:1.1 SOURCES/kernel-desktop-squashfs.patch:1.2 --- SOURCES/kernel-desktop-squashfs.patch:1.1 Mon Jun 19 13:39:04 2006 +++ SOURCES/kernel-desktop-squashfs.patch Sun Nov 19 01:24:33 2006 @@ -1,20 +1,20 @@ -diff --new-file -urp linux-2.6.15/fs/Kconfig linux-2.6.15-squashfs3.0/fs/Kconfig ---- linux-2.6.15/fs/Kconfig 2006-03-01 22:37:27.000000000 +0000 -+++ linux-2.6.15-squashfs3.0/fs/Kconfig 2006-03-07 21:12:37.000000000 +0000 -@@ -1151,6 +1151,71 @@ config CRAMFS +diff --new-file -urp linux-2.6.8.1/fs/Kconfig linux-2.6.8.1-squashfs3.1/fs/Kconfig +--- linux-2.6.8.1/fs/Kconfig 2004-08-14 11:55:33.000000000 +0100 ++++ linux-2.6.8.1-squashfs3.1/fs/Kconfig 2006-08-20 01:16:58.000000000 +0100 +@@ -1231,6 +1231,71 @@ config CRAMFS If unsure, say N. +config SQUASHFS -+ tristate "SquashFS 3.0 - Squashed file system support" ++ tristate "SquashFS 3.1 - Squashed file system support" + select ZLIB_INFLATE + help -+ Saying Y here includes support for SquashFS 3.0 (a Compressed Read-Only File ++ Saying Y here includes support for SquashFS 3.1 (a Compressed Read-Only File + System). Squashfs is a highly compressed read-only filesystem for Linux. + It uses zlib compression to compress both files, inodes and directories. + Inodes in the system are very small and all blocks are packed to minimise + data overhead. Block sizes greater than 4K are supported up to a maximum of 64K. -+ SquashFS 3.0 supports 64 bit filesystems and files (larger than 4GB), full ++ SquashFS 3.1 supports 64 bit filesystems and files (larger than 4GB), full + uid/gid information, hard links and timestamps. + + Squashfs is intended for general read-only filesystem use, for archival @@ -73,10 +73,10 @@ config VXFS_FS tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)" help -diff --new-file -urp linux-2.6.15/fs/Makefile linux-2.6.15-squashfs3.0/fs/Makefile ---- linux-2.6.15/fs/Makefile 2006-03-01 22:37:27.000000000 +0000 -+++ linux-2.6.15-squashfs3.0/fs/Makefile 2006-03-07 21:12:37.000000000 +0000 -@@ -55,6 +55,7 @@ obj-$(CONFIG_EXT3_FS) += ext3/ # Before +diff --new-file -urp linux-2.6.8.1/fs/Makefile linux-2.6.8.1-squashfs3.1/fs/Makefile +--- linux-2.6.8.1/fs/Makefile 2004-08-14 11:55:33.000000000 +0100 ++++ linux-2.6.8.1-squashfs3.1/fs/Makefile 2006-08-11 09:34:50.000000000 +0100 +@@ -50,6 +50,7 @@ obj-$(CONFIG_EXT3_FS) += ext3/ # Before obj-$(CONFIG_JBD) += jbd/ obj-$(CONFIG_EXT2_FS) += ext2/ obj-$(CONFIG_CRAMFS) += cramfs/ @@ -84,10 +84,10 @@ obj-$(CONFIG_RAMFS) += ramfs/ obj-$(CONFIG_HUGETLBFS) += hugetlbfs/ obj-$(CONFIG_CODA_FS) += coda/ -diff --new-file -urp linux-2.6.15/fs/squashfs/inode.c linux-2.6.15-squashfs3.0/fs/squashfs/inode.c ---- linux-2.6.15/fs/squashfs/inode.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.15-squashfs3.0/fs/squashfs/inode.c 2006-03-07 21:12:37.000000000 +0000 -@@ -0,0 +1,2127 @@ +diff --new-file -urp linux-2.6.8.1/fs/squashfs/inode.c linux-2.6.8.1-squashfs3.1/fs/squashfs/inode.c +--- linux-2.6.8.1/fs/squashfs/inode.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.8.1-squashfs3.1/fs/squashfs/inode.c 2006-08-20 01:16:58.000000000 +0100 +@@ -0,0 +1,2155 @@ +/* + * Squashfs - a compressed read only filesystem for Linux + * @@ -116,6 +116,7 @@ +#include <linux/module.h> +#include <linux/errno.h> +#include <linux/slab.h> ++#include <linux/zlib.h> +#include <linux/fs.h> +#include <linux/smp_lock.h> +#include <linux/slab.h> @@ -126,7 +127,6 @@ +#include <linux/init.h> +#include <linux/dcache.h> +#include <linux/wait.h> -+#include <linux/zlib.h> +#include <linux/blkdev.h> +#include <linux/vmalloc.h> +#include <asm/uaccess.h> @@ -153,9 +153,6 @@ +static struct super_block *squashfs_get_sb(struct file_system_type *, int, + const char *, void *); + -+ -+static z_stream stream; -+ +static struct file_system_type squashfs_fs_type = { + .owner = THIS_MODULE, + .name = "squashfs", @@ -339,20 +336,20 @@ + if (compressed) { + int zlib_err; + -+ stream.next_in = c_buffer; -+ stream.avail_in = c_byte; -+ stream.next_out = buffer; -+ stream.avail_out = msblk->read_size; ++ msblk->stream.next_in = c_buffer; ++ msblk->stream.avail_in = c_byte; ++ msblk->stream.next_out = buffer; ++ msblk->stream.avail_out = msblk->read_size; + -+ if (((zlib_err = zlib_inflateInit(&stream)) != Z_OK) || -+ ((zlib_err = zlib_inflate(&stream, Z_FINISH)) ++ if (((zlib_err = zlib_inflateInit(&msblk->stream)) != Z_OK) || ++ ((zlib_err = zlib_inflate(&msblk->stream, Z_FINISH)) + != Z_STREAM_END) || ((zlib_err = -+ zlib_inflateEnd(&stream)) != Z_OK)) { ++ zlib_inflateEnd(&msblk->stream)) != Z_OK)) { + ERROR("zlib_fs returned unexpected result 0x%x\n", + zlib_err); + bytes = 0; + } else -+ bytes = stream.total_out; ++ bytes = msblk->stream.total_out; + + up(&msblk->read_data_mutex); + } @@ -1057,6 +1054,10 @@ + } + memset(s->s_fs_info, 0, sizeof(struct squashfs_sb_info)); + msblk = s->s_fs_info; ++ if (!(msblk->stream.workspace = vmalloc(zlib_inflate_workspacesize()))) { ++ ERROR("Failed to allocate zlib workspace\n"); ++ goto failure; ++ } + sblk = &msblk->sblk; + + msblk->devblksize = sb_min_blocksize(s, BLOCK_SIZE); @@ -1229,6 +1230,7 @@ + kfree(msblk->read_data); + kfree(msblk->block_cache); + kfree(msblk->fragment_index_2); ++ vfree(msblk->stream.workspace); + kfree(s->s_fs_info); + s->s_fs_info = NULL; + return -EINVAL; @@ -1571,7 +1573,7 @@ + struct inode *inode = page->mapping->host; + struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info; + struct squashfs_super_block *sblk = &msblk->sblk; -+ unsigned char block_list[SIZE]; ++ unsigned char *block_list; + long long block; + unsigned int bsize, i = 0, bytes = 0, byte_offset = 0; + int index = page->index >> (sblk->block_log - PAGE_CACHE_SHIFT); @@ -1587,6 +1589,11 @@ + page->index, + SQUASHFS_I(inode)->start_block); + ++ if (!(block_list = kmalloc(SIZE, GFP_KERNEL))) { ++ ERROR("Failed to allocate block_list\n"); ++ goto skip_read; ++ } ++ + if (page->index >= ((i_size_read(inode) + PAGE_CACHE_SIZE - 1) >> + PAGE_CACHE_SHIFT)) + goto skip_read; @@ -1669,6 +1676,7 @@ + else + release_cached_fragment(msblk, fragment); + ++ kfree(block_list); + return 0; + +skip_read: @@ -1679,6 +1687,7 @@ + SetPageUptodate(page); + unlock_page(page); + ++ kfree(block_list); + return 0; +} + @@ -1688,7 +1697,7 @@ + struct inode *inode = page->mapping->host; + struct squashfs_sb_info *msblk = inode->i_sb->s_fs_info; + struct squashfs_super_block *sblk = &msblk->sblk; -+ unsigned char block_list[SIZE]; ++ unsigned char *block_list; + long long block; + unsigned int bsize, bytes = 0; + void *pageaddr; @@ -1700,6 +1709,14 @@ + if (page->index >= ((i_size_read(inode) + PAGE_CACHE_SIZE - 1) >> + PAGE_CACHE_SHIFT)) { + pageaddr = kmap_atomic(page, KM_USER0); ++ block_list = NULL; ++ goto skip_read; ++ } ++ ++ if (!(block_list = kmalloc(SIZE, GFP_KERNEL))) { ++ ERROR("Failed to allocate block_list\n"); ++ pageaddr = kmap_atomic(page, KM_USER0); ++ block_list = NULL; + goto skip_read; + } + @@ -1745,6 +1762,7 @@ + SetPageUptodate(page); + unlock_page(page); + ++ kfree(block_list); + return 0; +} + @@ -1808,12 +1826,18 @@ + struct squashfs_sb_info *msblk = s->s_fs_info; + struct squashfs_super_block *sblk = &msblk->sblk; + int i, length = 0; -+ char buffer[sizeof(struct squashfs_dir_index) + SQUASHFS_NAME_LEN + 1]; -+ struct squashfs_dir_index *index = (struct squashfs_dir_index *) buffer; -+ char str[SQUASHFS_NAME_LEN + 1]; ++ struct squashfs_dir_index *index; ++ char *str; + + TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count); + ++ if (!(str = kmalloc(sizeof(struct squashfs_dir_index) + ++ (SQUASHFS_NAME_LEN + 1) * 2, GFP_KERNEL))) { ++ ERROR("Failed to allocate squashfs_dir_index\n"); ++ goto failure; ++ } ++ ++ index = (struct squashfs_dir_index *) (str + SQUASHFS_NAME_LEN + 1); + strncpy(str, name, size); + str[size] = '\0'; + @@ -1845,6 +1869,8 @@ + } + + *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE; ++ kfree(str); ++failure: + return length + 3; +} + @@ -1856,14 +1882,19 @@ + struct squashfs_super_block *sblk = &msblk->sblk; + long long next_block = SQUASHFS_I(i)->start_block + + sblk->directory_table_start; -+ int next_offset = SQUASHFS_I(i)->offset, length = 0, dirs_read = 0, ++ int next_offset = SQUASHFS_I(i)->offset, length = 0, + dir_count; + struct squashfs_dir_header dirh; -+ char buffer[sizeof(struct squashfs_dir_entry) + SQUASHFS_NAME_LEN + 1]; -+ struct squashfs_dir_entry *dire = (struct squashfs_dir_entry *) buffer; ++ struct squashfs_dir_entry *dire; + + TRACE("Entered squashfs_readdir [%llx:%x]\n", next_block, next_offset); + ++ if (!(dire = kmalloc(sizeof(struct squashfs_dir_entry) + ++ SQUASHFS_NAME_LEN + 1, GFP_KERNEL))) { ++ ERROR("Failed to allocate squashfs_dir_entry\n"); ++ goto finish; ++ } ++ + while(file->f_pos < 3) { + char *name; + int size, i_ino; @@ -1889,7 +1920,6 @@ + goto finish; + } + file->f_pos += size; -+ dirs_read++; + } + + length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset, @@ -1970,16 +2000,17 @@ + goto finish; + } + file->f_pos = length; -+ dirs_read++; + } + } + +finish: -+ return dirs_read; ++ kfree(dire); ++ return 0; + +failed_read: + ERROR("Unable to read directory block [%llx:%x]\n", next_block, + next_offset); ++ kfree(dire); + return 0; +} + @@ -1997,11 +2028,16 @@ + int next_offset = SQUASHFS_I(i)->offset, length = 0, + dir_count; + struct squashfs_dir_header dirh; -+ char buffer[sizeof(struct squashfs_dir_entry) + SQUASHFS_NAME_LEN]; -+ struct squashfs_dir_entry *dire = (struct squashfs_dir_entry *) buffer; ++ struct squashfs_dir_entry *dire; + + TRACE("Entered squashfs_lookup [%llx:%x]\n", next_block, next_offset); + ++ if (!(dire = kmalloc(sizeof(struct squashfs_dir_entry) + ++ SQUASHFS_NAME_LEN + 1, GFP_KERNEL))) { ++ ERROR("Failed to allocate squashfs_dir_entry\n"); ++ goto exit_loop; ++ } ++ + if (len > SQUASHFS_NAME_LEN) + goto exit_loop; + @@ -2082,6 +2118,7 @@ + } + +exit_loop: ++ kfree(dire); + d_add(dentry, inode); + return ERR_PTR(0); + @@ -2114,6 +2151,7 @@ + kfree(sbi->fragment_index); + kfree(sbi->fragment_index_2); + kfree(sbi->meta_index); ++ vfree(sbi->stream.workspace); + kfree(s->s_fs_info); + s->s_fs_info = NULL; + } @@ -2133,20 +2171,11 @@ + if (err) + goto out; + -+ printk(KERN_INFO "squashfs: version 3.0 (2006/03/15) " ++ printk(KERN_INFO "squashfs: version 3.1 (2006/08/19) " + "Phillip Lougher\n"); + -+ if (!(stream.workspace = vmalloc(zlib_inflate_workspacesize()))) { -+ ERROR("Failed to allocate zlib workspace\n"); -+ destroy_inodecache(); -+ err = -ENOMEM; -+ goto out; -+ } -+ -+ if ((err = register_filesystem(&squashfs_fs_type))) { -+ vfree(stream.workspace); ++ if ((err = register_filesystem(&squashfs_fs_type))) + destroy_inodecache(); -+ } + +out: + return err; @@ -2155,7 +2184,6 @@ + +static void __exit exit_squashfs_fs(void) +{ -+ vfree(stream.workspace); + unregister_filesystem(&squashfs_fs_type); + destroy_inodecache(); +} @@ -2212,12 +2240,12 @@ + +module_init(init_squashfs_fs); +module_exit(exit_squashfs_fs); -+MODULE_DESCRIPTION("squashfs, a compressed read-only filesystem"); ++MODULE_DESCRIPTION("squashfs 3.1, a compressed read-only filesystem"); +MODULE_AUTHOR("Phillip Lougher <[EMAIL PROTECTED]>"); +MODULE_LICENSE("GPL"); -diff --new-file -urp linux-2.6.15/fs/squashfs/Makefile linux-2.6.15-squashfs3.0/fs/squashfs/Makefile ---- linux-2.6.15/fs/squashfs/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.15-squashfs3.0/fs/squashfs/Makefile 2006-03-07 21:12:37.000000000 +0000 +diff --new-file -urp linux-2.6.8.1/fs/squashfs/Makefile linux-2.6.8.1-squashfs3.1/fs/squashfs/Makefile +--- linux-2.6.8.1/fs/squashfs/Makefile 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.8.1-squashfs3.1/fs/squashfs/Makefile 2006-08-11 09:34:50.000000000 +0100 @@ -0,0 +1,7 @@ +# +# Makefile for the linux squashfs routines. @@ -2226,10 +2254,10 @@ +obj-$(CONFIG_SQUASHFS) += squashfs.o +squashfs-y += inode.o +squashfs-y += squashfs2_0.o -diff --new-file -urp linux-2.6.15/fs/squashfs/squashfs2_0.c linux-2.6.15-squashfs3.0/fs/squashfs/squashfs2_0.c ---- linux-2.6.15/fs/squashfs/squashfs2_0.c 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.15-squashfs3.0/fs/squashfs/squashfs2_0.c 2006-03-07 21:12:37.000000000 +0000 -@@ -0,0 +1,758 @@ +diff --new-file -urp linux-2.6.8.1/fs/squashfs/squashfs2_0.c linux-2.6.8.1-squashfs3.1/fs/squashfs/squashfs2_0.c +--- linux-2.6.8.1/fs/squashfs/squashfs2_0.c 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.8.1-squashfs3.1/fs/squashfs/squashfs2_0.c 2006-08-20 01:16:58.000000000 +0100 +@@ -0,0 +1,779 @@ +/* + * Squashfs - a compressed read only filesystem for Linux + * @@ -2258,6 +2286,7 @@ +#include <linux/module.h> +#include <linux/errno.h> +#include <linux/slab.h> ++#include <linux/zlib.h> +#include <linux/fs.h> +#include <linux/smp_lock.h> +#include <linux/slab.h> @@ -2717,12 +2746,18 @@ + struct squashfs_sb_info *msblk = s->s_fs_info; + struct squashfs_super_block *sblk = &msblk->sblk; + int i, length = 0; -+ char buffer[sizeof(struct squashfs_dir_index_2) + SQUASHFS_NAME_LEN + 1]; -+ struct squashfs_dir_index_2 *index = (struct squashfs_dir_index_2 *) buffer; -+ char str[SQUASHFS_NAME_LEN + 1]; ++ struct squashfs_dir_index_2 *index; ++ char *str; + + TRACE("Entered get_dir_index_using_name, i_count %d\n", i_count); + ++ if (!(str = kmalloc(sizeof(struct squashfs_dir_index) + ++ (SQUASHFS_NAME_LEN + 1) * 2, GFP_KERNEL))) { ++ ERROR("Failed to allocate squashfs_dir_index\n"); ++ goto failure; ++ } ++ ++ index = (struct squashfs_dir_index_2 *) (str + SQUASHFS_NAME_LEN + 1); + strncpy(str, name, size); + str[size] = '\0'; + @@ -2754,6 +2789,8 @@ + } + + *next_offset = (length + *next_offset) % SQUASHFS_METADATA_SIZE; ++ kfree(str); ++failure: + return length; +} + @@ -2765,14 +2802,19 @@ + struct squashfs_super_block *sblk = &msblk->sblk; + long long next_block = SQUASHFS_I(i)->start_block + + sblk->directory_table_start; -+ int next_offset = SQUASHFS_I(i)->offset, length = 0, dirs_read = 0, ++ int next_offset = SQUASHFS_I(i)->offset, length = 0, + dir_count; + struct squashfs_dir_header_2 dirh; -+ char buffer[sizeof(struct squashfs_dir_entry_2) + SQUASHFS_NAME_LEN + 1]; -+ struct squashfs_dir_entry_2 *dire = (struct squashfs_dir_entry_2 *) buffer; ++ struct squashfs_dir_entry_2 *dire; + + TRACE("Entered squashfs_readdir_2 [%llx:%x]\n", next_block, next_offset); + ++ if (!(dire = kmalloc(sizeof(struct squashfs_dir_entry) + ++ SQUASHFS_NAME_LEN + 1, GFP_KERNEL))) { ++ ERROR("Failed to allocate squashfs_dir_entry\n"); ++ goto finish; ++ } ++ + length = get_dir_index_using_offset(i->i_sb, &next_block, &next_offset, + SQUASHFS_I(i)->u.s2.directory_index_start, + SQUASHFS_I(i)->u.s2.directory_index_offset, @@ -2850,16 +2892,17 @@ + goto finish; + } + file->f_pos = length; -+ dirs_read++; + } + } + +finish: -+ return dirs_read; ++ kfree(dire); ++ return 0; + +failed_read: + ERROR("Unable to read directory block [%llx:%x]\n", next_block, + next_offset); ++ kfree(dire); + return 0; +} + @@ -2877,11 +2920,16 @@ + int next_offset = SQUASHFS_I(i)->offset, length = 0, + dir_count; + struct squashfs_dir_header_2 dirh; -+ char buffer[sizeof(struct squashfs_dir_entry_2) + SQUASHFS_NAME_LEN]; -+ struct squashfs_dir_entry_2 *dire = (struct squashfs_dir_entry_2 *) buffer; ++ struct squashfs_dir_entry_2 *dire; + int sorted = sblk->s_major == 2 && sblk->s_minor >= 1; + -+ TRACE("Entered squashfs_lookup [%llx:%x]\n", next_block, next_offset); ++ TRACE("Entered squashfs_lookup_2 [%llx:%x]\n", next_block, next_offset); ++ ++ if (!(dire = kmalloc(sizeof(struct squashfs_dir_entry) + ++ SQUASHFS_NAME_LEN + 1, GFP_KERNEL))) { ++ ERROR("Failed to allocate squashfs_dir_entry\n"); ++ goto exit_loop; ++ } + + if (len > SQUASHFS_NAME_LEN) + goto exit_loop; @@ -2962,6 +3010,7 @@ + } + +exit_loop: ++ kfree(dire); + d_add(dentry, inode); + return ERR_PTR(0); + @@ -2988,9 +3037,9 @@ + + return 1; +} -diff --new-file -urp linux-2.6.15/fs/squashfs/squashfs.h linux-2.6.15-squashfs3.0/fs/squashfs/squashfs.h ---- linux-2.6.15/fs/squashfs/squashfs.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.15-squashfs3.0/fs/squashfs/squashfs.h 2006-03-07 21:12:37.000000000 +0000 +diff --new-file -urp linux-2.6.8.1/fs/squashfs/squashfs.h linux-2.6.8.1-squashfs3.1/fs/squashfs/squashfs.h +--- linux-2.6.8.1/fs/squashfs/squashfs.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.8.1-squashfs3.1/fs/squashfs/squashfs.h 2006-08-11 09:34:50.000000000 +0100 @@ -0,0 +1,86 @@ +/* + * Squashfs - a compressed read only filesystem for Linux @@ -3078,9 +3127,9 @@ + return 0; +} +#endif -diff --new-file -urp linux-2.6.15/include/linux/squashfs_fs.h linux-2.6.15-squashfs3.0/include/linux/squashfs_fs.h ---- linux-2.6.15/include/linux/squashfs_fs.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.15-squashfs3.0/include/linux/squashfs_fs.h 2006-03-07 21:12:37.000000000 +0000 +diff --new-file -urp linux-2.6.8.1/include/linux/squashfs_fs.h linux-2.6.8.1-squashfs3.1/include/linux/squashfs_fs.h +--- linux-2.6.8.1/include/linux/squashfs_fs.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.8.1-squashfs3.1/include/linux/squashfs_fs.h 2006-08-11 09:34:50.000000000 +0100 @@ -0,0 +1,911 @@ +#ifndef SQUASHFS_FS +#define SQUASHFS_FS @@ -3993,9 +4042,9 @@ + +#endif +#endif -diff --new-file -urp linux-2.6.15/include/linux/squashfs_fs_i.h linux-2.6.15-squashfs3.0/include/linux/squashfs_fs_i.h ---- linux-2.6.15/include/linux/squashfs_fs_i.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.15-squashfs3.0/include/linux/squashfs_fs_i.h 2006-03-07 21:12:37.000000000 +0000 +diff --new-file -urp linux-2.6.8.1/include/linux/squashfs_fs_i.h linux-2.6.8.1-squashfs3.1/include/linux/squashfs_fs_i.h +--- linux-2.6.8.1/include/linux/squashfs_fs_i.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.8.1-squashfs3.1/include/linux/squashfs_fs_i.h 2006-08-11 09:34:50.000000000 +0100 @@ -0,0 +1,45 @@ +#ifndef SQUASHFS_FS_I +#define SQUASHFS_FS_I @@ -4042,10 +4091,10 @@ + struct inode vfs_inode; +}; +#endif -diff --new-file -urp linux-2.6.15/include/linux/squashfs_fs_sb.h linux-2.6.15-squashfs3.0/include/linux/squashfs_fs_sb.h ---- linux-2.6.15/include/linux/squashfs_fs_sb.h 1970-01-01 01:00:00.000000000 +0100 -+++ linux-2.6.15-squashfs3.0/include/linux/squashfs_fs_sb.h 2006-03-07 21:12:37.000000000 +0000 -@@ -0,0 +1,74 @@ +diff --new-file -urp linux-2.6.8.1/include/linux/squashfs_fs_sb.h linux-2.6.8.1-squashfs3.1/include/linux/squashfs_fs_sb.h +--- linux-2.6.8.1/include/linux/squashfs_fs_sb.h 1970-01-01 01:00:00.000000000 +0100 ++++ linux-2.6.8.1-squashfs3.1/include/linux/squashfs_fs_sb.h 2006-08-20 01:16:58.000000000 +0100 +@@ -0,0 +1,75 @@ +#ifndef SQUASHFS_FS_SB +#define SQUASHFS_FS_SB +/* @@ -4112,17 +4161,18 @@ + wait_queue_head_t waitq; + wait_queue_head_t fragment_wait_queue; + struct meta_index *meta_index; -+ struct inode *(*iget)(struct super_block *s, squashfs_inode_t \ ++ z_stream stream; ++ struct inode *(*iget)(struct super_block *s, squashfs_inode_t + inode); -+ long long (*read_blocklist)(struct inode *inode, int \ -+ index, int readahead_blks, char *block_list, \ ++ long long (*read_blocklist)(struct inode *inode, int ++ index, int readahead_blks, char *block_list, + unsigned short **block_p, unsigned int *bsize); + int (*read_fragment_index_table)(struct super_block *s); +}; +#endif -diff --new-file -urp linux-2.6.15/init/do_mounts_rd.c linux-2.6.15-squashfs3.0/init/do_mounts_rd.c ---- linux-2.6.15/init/do_mounts_rd.c 2006-03-01 22:37:27.000000000 +0000 -+++ linux-2.6.15-squashfs3.0/init/do_mounts_rd.c 2006-03-07 21:12:37.000000000 +0000 +diff --new-file -urp linux-2.6.8.1/init/do_mounts_rd.c linux-2.6.8.1-squashfs3.1/init/do_mounts_rd.c +--- linux-2.6.8.1/init/do_mounts_rd.c 2004-08-14 11:55:48.000000000 +0100 ++++ linux-2.6.8.1-squashfs3.1/init/do_mounts_rd.c 2006-08-20 01:16:58.000000000 +0100 @@ -5,6 +5,7 @@ #include <linux/ext2_fs.h> #include <linux/romfs_fs.h> @@ -4155,7 +4205,7 @@ memset(buf, 0xe5, size); /* -@@ -101,6 +105,15 @@ identify_ramdisk_image(int fd, int start +@@ -101,6 +105,18 @@ identify_ramdisk_image(int fd, int start goto done; } @@ -4164,7 +4214,10 @@ + printk(KERN_NOTICE + "RAMDISK: squashfs filesystem found at block %d\n", + start_block); -+ nblocks = (squashfsb->bytes_used+BLOCK_SIZE-1)>>BLOCK_SIZE_BITS; ++ 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; + } + ================================================================ ---- CVS-web: http://cvs.pld-linux.org/SOURCES/kernel-desktop-squashfs.patch?r1=1.1&r2=1.2&f=u _______________________________________________ pld-cvs-commit mailing list pld-cvs-commit@lists.pld-linux.org http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit