rpms/kernel/devel kernel.spec, 1.304, 1.305 linux-2.6-squashfs.patch, 1.25, 1.26

Dave Jones (davej) fedora-extras-commits at redhat.com
Thu Dec 13 21:53:15 UTC 2007


Author: davej

Update of /cvs/pkgs/rpms/kernel/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv20732

Modified Files:
	kernel.spec linux-2.6-squashfs.patch 
Log Message:
* Thu Dec 13 2007 Dave Jones <davej at redhat.com>
- Update to squashfs 3.3



Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.304
retrieving revision 1.305
diff -u -r1.304 -r1.305
--- kernel.spec	13 Dec 2007 21:41:27 -0000	1.304
+++ kernel.spec	13 Dec 2007 21:52:38 -0000	1.305
@@ -1742,6 +1742,9 @@
 
 %changelog
 * Thu Dec 13 2007 Dave Jones <davej at redhat.com>
+- Update to squashfs 3.3
+
+* Thu Dec 13 2007 Dave Jones <davej at redhat.com>
 - bridge: assign random address.
 
 * Thu Dec 13 2007 Kyle McMartin <kmcmartin at redhat.com>

linux-2.6-squashfs.patch:

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.25 -r 1.26 linux-2.6-squashfs.patch
Index: linux-2.6-squashfs.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-squashfs.patch,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- linux-2.6-squashfs.patch	31 Oct 2007 21:30:48 -0000	1.25
+++ linux-2.6-squashfs.patch	13 Dec 2007 21:52:38 -0000	1.26
@@ -1,26 +1,27 @@
-diff -x .gitignore -Nurp linux-2.6.20/fs/Kconfig linux-2.6.20-squashfs3.2-r2/fs/Kconfig
---- linux-2.6.20/fs/Kconfig	2006-12-25 01:13:12.000000000 +0000
-+++ linux-2.6.20-squashfs3.2-r2/fs/Kconfig	2007-01-16 02:06:03.000000000 +0000
-@@ -1404,6 +1404,71 @@ config CRAMFS
+diff -x .gitignore -Nurp linux-2.6.24/fs/Kconfig linux-2.6.24-squashfs3.3/fs/Kconfig
+--- linux-2.6.24/fs/Kconfig	2007-10-25 17:41:45.000000000 +0100
++++ linux-2.6.24-squashfs3.3/fs/Kconfig	2007-11-01 05:06:25.000000000 +0000
+@@ -1396,6 +1396,56 @@ config CRAMFS
  
  	  If unsure, say N.
  
 +config SQUASHFS
-+	tristate "SquashFS 3.2 - Squashed file system support"
++	tristate "SquashFS 3.3 - Squashed file system support"
 +	select ZLIB_INFLATE
 +	help
-+	  Saying Y here includes support for SquashFS 3.2 (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.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
-+	  use (i.e. in cases where a .tar.gz file may be used), and in embedded
-+	  systems where low overhead is needed.  Further information and filesystem tools
-+	  are available from http://squashfs.sourceforge.net.
++	  Saying Y here includes support for SquashFS 3.3 (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 1 Mbytes (default
++	  block size 128K).  SquashFS 3.3 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 use (i.e. in cases where a .tar.gz file may be used), and in
++	  embedded systems where low overhead is needed.  Further information
++	  and filesystem tools are available from http://squashfs.sourceforge.net.
 +
 +	  If you want to compile this as a module ( = code which can be
 +	  inserted in and removed from the running kernel whenever you want),
@@ -32,13 +33,11 @@
 +
 +config SQUASHFS_EMBEDDED
 +
-+	bool "Additional options for memory-constrained systems" 
++	bool "Additional option for memory-constrained systems" 
 +	depends on SQUASHFS
 +	default n
 +	help
-+	  Saying Y here allows you to specify cache sizes and how Squashfs
-+	  allocates memory.  This is only intended for memory constrained
-+	  systems.
++	  Saying Y here allows you to specify cache size.
 +
 +	  If unsure, say N.
 +
@@ -56,25 +55,12 @@
 +	  Note there must be at least one cached fragment.  Anything
 +	  much more than three will probably not make much difference.
 +
-+config SQUASHFS_VMALLOC
-+	bool "Use Vmalloc rather than Kmalloc" if SQUASHFS_EMBEDDED
-+	depends on SQUASHFS
-+	default n
-+	help
-+	  By default SquashFS uses kmalloc to obtain fragment cache memory.
-+	  Kmalloc memory is the standard kernel allocator, but it can fail
-+	  on memory constrained systems.  Because of the way Vmalloc works,
-+	  Vmalloc can succeed when kmalloc fails.  Specifying this option
-+	  will make SquashFS always use Vmalloc to allocate the
-+	  fragment cache memory.
-+
-+	  If unsure, say N.
-+
  config VXFS_FS
  	tristate "FreeVxFS file system support (VERITAS VxFS(TM) compatible)"
  	depends on BLOCK
---- linux-2.6.23.noarch/fs/Makefile~	2007-10-17 17:02:57.000000000 -0400
-+++ linux-2.6.23.noarch/fs/Makefile	2007-10-17 17:03:07.000000000 -0400
+diff -x .gitignore -Nurp linux-2.6.24/fs/Makefile linux-2.6.24-squashfs3.3/fs/Makefile
+--- linux-2.6.24/fs/Makefile	2007-10-25 17:41:45.000000000 +0100
++++ linux-2.6.24-squashfs3.3/fs/Makefile	2007-11-01 05:08:09.000000000 +0000
 @@ -72,6 +72,7 @@ obj-$(CONFIG_JBD)		+= jbd/
  obj-$(CONFIG_JBD2)		+= jbd2/
  obj-$(CONFIG_EXT2_FS)		+= ext2/
@@ -83,15 +69,15 @@
  obj-y				+= ramfs/
  obj-$(CONFIG_HUGETLBFS)		+= hugetlbfs/
  obj-$(CONFIG_CODA_FS)		+= coda/
-diff -x .gitignore -Nurp linux-2.6.20/fs/squashfs/inode.c linux-2.6.20-squashfs3.2-r2/fs/squashfs/inode.c
---- linux-2.6.20/fs/squashfs/inode.c	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.20-squashfs3.2-r2/fs/squashfs/inode.c	2007-01-16 02:28:36.000000000 +0000
-@@ -0,0 +1,2328 @@
+diff -x .gitignore -Nurp linux-2.6.24/fs/squashfs/inode.c linux-2.6.24-squashfs3.3/fs/squashfs/inode.c
+--- linux-2.6.24/fs/squashfs/inode.c	1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.24-squashfs3.3/fs/squashfs/inode.c	2007-11-01 05:05:00.000000000 +0000
+@@ -0,0 +1,2192 @@
 +/*
 + * Squashfs - a compressed read only filesystem for Linux
 + *
 + * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007
-+ * Phillip Lougher <phillip at lougher.org.uk>
++ * Phillip Lougher <phillip at lougher.demon.co.uk>
 + *
 + * This program is free software; you can redistribute it and/or
 + * modify it under the terms of the GNU General Public License
@@ -124,6 +110,8 @@
 +
 +#include "squashfs.h"
 +
++int squashfs_cached_blks;
++
 +static void vfs_read_inode(struct inode *i);
 +static struct dentry *squashfs_get_parent(struct dentry *child);
 +static int squashfs_read_inode(struct inode *i, squashfs_inode_t inode);
@@ -133,7 +121,6 @@
 +				int readahead_blks, char *block_list,
 +				unsigned short **block_p, unsigned int *bsize);
 +static int squashfs_readpage(struct file *file, struct page *page);
-+static int squashfs_readpage4K(struct file *file, struct page *page);
 +static int squashfs_readdir(struct file *, void *, filldir_t);
 +static struct dentry *squashfs_lookup(struct inode *, struct dentry *,
 +				struct nameidata *);
@@ -186,10 +173,6 @@
 +	.readpage = squashfs_readpage
 +};
 +
-+SQSH_EXTERN const struct address_space_operations squashfs_aops_4K = {
-+	.readpage = squashfs_readpage4K
-+};
-+
 +static const struct file_operations squashfs_dir_ops = {
 +	.read = generic_read_dir,
 +	.readdir = squashfs_readdir
@@ -273,30 +256,36 @@
 +{
 +	struct squashfs_sb_info *msblk = s->s_fs_info;
 +	struct squashfs_super_block *sblk = &msblk->sblk;
-+	struct buffer_head *bh[((SQUASHFS_FILE_MAX_SIZE - 1) >>
-+			msblk->devblksize_log2) + 2];
++	struct buffer_head **bh;
 +	unsigned int offset = index & ((1 << msblk->devblksize_log2) - 1);
 +	unsigned int cur_index = index >> msblk->devblksize_log2;
 +	int bytes, avail_bytes, b = 0, k = 0;
 +	unsigned int compressed;
 +	unsigned int c_byte = length;
 +
++	bh = kmalloc(((sblk->block_size >> msblk->devblksize_log2) + 1) *
++								sizeof(struct buffer_head *), GFP_KERNEL);
++	if (bh == NULL)
++		goto read_failure;
++
 +	if (c_byte) {
 +		bytes = msblk->devblksize - offset;
 +		compressed = SQUASHFS_COMPRESSED_BLOCK(c_byte);
 +		c_byte = SQUASHFS_COMPRESSED_SIZE_BLOCK(c_byte);
 +
-+		TRACE("Block @ 0x%llx, %scompressed size %d, src size %d\n", index, compressed
-+					? "" : "un", (unsigned int) c_byte, srclength);
++		TRACE("Block @ 0x%llx, %scompressed size %d, src size %d\n", index,
++					compressed ? "" : "un", (unsigned int) c_byte, srclength);
 +
 +		if (c_byte > srclength || index < 0 || (index + c_byte) > sblk->bytes_used)
 +			goto read_failure;
 +
-+		if (!(bh[0] = sb_getblk(s, cur_index)))
++		bh[0] = sb_getblk(s, cur_index);
++		if (bh[0] == NULL)
 +			goto block_release;
 +
 +		for (b = 1; bytes < c_byte; b++) {
-+			if (!(bh[b] = sb_getblk(s, ++cur_index)))
++			bh[b] = sb_getblk(s, ++cur_index);
++			if (bh[b] == NULL)
 +				goto block_release;
 +			bytes += msblk->devblksize;
 +		}
@@ -305,8 +294,8 @@
 +		if (index < 0 || (index + 2) > sblk->bytes_used)
 +			goto read_failure;
 +
-+		if (!(bh[0] = get_block_length(s, &cur_index, &offset,
-+								&c_byte)))
++		bh[0] = get_block_length(s, &cur_index, &offset, &c_byte);
++		if (bh[0] == NULL)
 +			goto read_failure;
 +
[...1855 lines suppressed...]
 +			SQUASHFS_I(i)->start_block = inodep->start_block;
 +			SQUASHFS_I(i)->u.s1.block_list_start = next_block;
 +			SQUASHFS_I(i)->offset = next_offset;
-+			if (sblk->block_size > 4096)
-+				i->i_data.a_ops = &squashfs_aops;
-+			else
-+				i->i_data.a_ops = &squashfs_aops_4K;
++			i->i_data.a_ops = &squashfs_aops;
 +
 +			TRACE("File inode %x:%x, start_block %x, "
 +					"block_list_start %llx, offset %x\n",
@@ -3172,15 +3020,15 @@
 +
 +	return 1;
 +}
-diff -x .gitignore -Nurp linux-2.6.20/fs/squashfs/squashfs.h linux-2.6.20-squashfs3.2-r2/fs/squashfs/squashfs.h
---- linux-2.6.20/fs/squashfs/squashfs.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.20-squashfs3.2-r2/fs/squashfs/squashfs.h	2007-01-12 01:42:11.000000000 +0000
-@@ -0,0 +1,87 @@
+diff -x .gitignore -Nurp linux-2.6.24/fs/squashfs/squashfs.h linux-2.6.24-squashfs3.3/fs/squashfs/squashfs.h
+--- linux-2.6.24/fs/squashfs/squashfs.h	1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.24-squashfs3.3/fs/squashfs/squashfs.h	2007-08-19 04:23:16.000000000 +0100
+@@ -0,0 +1,86 @@
 +/*
 + * Squashfs - a compressed read only filesystem for Linux
 + *
 + * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007
-+ * Phillip Lougher <phillip at lougher.org.uk>
++ * Phillip Lougher <phillip at lougher.demon.co.uk>
 + *
 + * This program is free software; you can redistribute it and/or
 + * modify it under the terms of the GNU General Public License
@@ -3228,7 +3076,7 @@
 +extern unsigned int squashfs_read_data(struct super_block *s, char *buffer,
 +				long long index, unsigned int length,
 +				long long *next_index, int srclength);
-+extern int squashfs_get_cached_block(struct super_block *s, char *buffer,
++extern int squashfs_get_cached_block(struct super_block *s, void *buffer,
 +				long long block, unsigned int offset,
 +				int length, long long *next_block,
 +				unsigned int *next_offset);
@@ -3240,7 +3088,6 @@
 +extern struct inode *squashfs_iget(struct super_block *s, squashfs_inode_t inode, unsigned int inode_number);
 +extern const struct address_space_operations squashfs_symlink_aops;
 +extern const struct address_space_operations squashfs_aops;
-+extern const struct address_space_operations squashfs_aops_4K;
 +extern struct inode_operations squashfs_dir_inode_ops;
 +#else
 +#define SQSH_EXTERN static
@@ -3263,10 +3110,10 @@
 +	return 0;
 +}
 +#endif
-diff -x .gitignore -Nurp linux-2.6.20/include/linux/squashfs_fs.h linux-2.6.20-squashfs3.2-r2/include/linux/squashfs_fs.h
---- linux-2.6.20/include/linux/squashfs_fs.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.20-squashfs3.2-r2/include/linux/squashfs_fs.h	2007-01-12 00:06:09.000000000 +0000
-@@ -0,0 +1,934 @@
+diff -x .gitignore -Nurp linux-2.6.24/include/linux/squashfs_fs.h linux-2.6.24-squashfs3.3/include/linux/squashfs_fs.h
+--- linux-2.6.24/include/linux/squashfs_fs.h	1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.24-squashfs3.3/include/linux/squashfs_fs.h	2007-11-01 03:50:57.000000000 +0000
+@@ -0,0 +1,935 @@
 +#ifndef SQUASHFS_FS
 +#define SQUASHFS_FS
 +
@@ -3274,7 +3121,7 @@
 + * Squashfs
 + *
 + * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007
-+ * Phillip Lougher <phillip at lougher.org.uk>
++ * Phillip Lougher <phillip at lougher.demon.co.uk>
 + *
 + * This program is free software; you can redistribute it and/or
 + * modify it under the terms of the GNU General Public License
@@ -3297,16 +3144,9 @@
 +#define CONFIG_SQUASHFS_2_0_COMPATIBILITY
 +#endif
 +
-+#ifdef	CONFIG_SQUASHFS_VMALLOC
-+#define SQUASHFS_ALLOC(a)		vmalloc(a)
-+#define SQUASHFS_FREE(a)		vfree(a)
-+#else
-+#define SQUASHFS_ALLOC(a)		kmalloc(a, GFP_KERNEL)
-+#define SQUASHFS_FREE(a)		kfree(a)
-+#endif
 +#define SQUASHFS_CACHED_FRAGMENTS	CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE	
 +#define SQUASHFS_MAJOR			3
-+#define SQUASHFS_MINOR			0
++#define SQUASHFS_MINOR			1
 +#define SQUASHFS_MAGIC			0x73717368
 +#define SQUASHFS_MAGIC_SWAP		0x68737173
 +#define SQUASHFS_START			0
@@ -3316,10 +3156,10 @@
 +#define SQUASHFS_METADATA_LOG		13
 +
 +/* default size of data blocks */
-+#define SQUASHFS_FILE_SIZE		65536
-+#define SQUASHFS_FILE_LOG		16
++#define SQUASHFS_FILE_SIZE		131072
++#define SQUASHFS_FILE_LOG		17
 +
-+#define SQUASHFS_FILE_MAX_SIZE		65536
++#define SQUASHFS_FILE_MAX_SIZE		1048576
 +
 +/* Max number of uids and gids */
 +#define SQUASHFS_UIDS			256
@@ -3400,9 +3240,8 @@
 +
 +#define SQUASHFS_COMPRESSED_BIT_BLOCK		(1 << 24)
 +
-+#define SQUASHFS_COMPRESSED_SIZE_BLOCK(B)	(((B) & \
-+	~SQUASHFS_COMPRESSED_BIT_BLOCK) ? (B) & \
-+	~SQUASHFS_COMPRESSED_BIT_BLOCK : SQUASHFS_COMPRESSED_BIT_BLOCK)
++#define SQUASHFS_COMPRESSED_SIZE_BLOCK(B)	((B) & \
++	~SQUASHFS_COMPRESSED_BIT_BLOCK)
 +
 +#define SQUASHFS_COMPRESSED_BLOCK(B)	(!((B) & SQUASHFS_COMPRESSED_BIT_BLOCK))
 +
@@ -3898,6 +3737,15 @@
 +	unsigned int		start_block:24;
 +} __attribute__  ((packed));
 +
++union squashfs_inode_header_1 {
++	struct squashfs_base_inode_header_1	base;
++	struct squashfs_dev_inode_header_1	dev;
++	struct squashfs_symlink_inode_header_1	symlink;
++	struct squashfs_reg_inode_header_1	reg;
++	struct squashfs_dir_inode_header_1	dir;
++	struct squashfs_ipc_inode_header_1	ipc;
++};
++
 +#define SQUASHFS_SWAP_BASE_INODE_CORE_1(s, d, n) \
 +	SQUASHFS_MEMSET(s, d, n);\
 +	SQUASHFS_SWAP((s)->inode_type, d, 0, 4);\
@@ -4201,9 +4049,9 @@
 +
 +#endif
 +#endif
-diff -x .gitignore -Nurp linux-2.6.20/include/linux/squashfs_fs_i.h linux-2.6.20-squashfs3.2-r2/include/linux/squashfs_fs_i.h
---- linux-2.6.20/include/linux/squashfs_fs_i.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.20-squashfs3.2-r2/include/linux/squashfs_fs_i.h	2007-01-12 00:06:09.000000000 +0000
+diff -x .gitignore -Nurp linux-2.6.24/include/linux/squashfs_fs_i.h linux-2.6.24-squashfs3.3/include/linux/squashfs_fs_i.h
+--- linux-2.6.24/include/linux/squashfs_fs_i.h	1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.24-squashfs3.3/include/linux/squashfs_fs_i.h	2007-08-19 04:24:08.000000000 +0100
 @@ -0,0 +1,45 @@
 +#ifndef SQUASHFS_FS_I
 +#define SQUASHFS_FS_I
@@ -4211,7 +4059,7 @@
 + * Squashfs
 + *
 + * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007
-+ * Phillip Lougher <phillip at lougher.org.uk>
++ * Phillip Lougher <phillip at lougher.demon.co.uk>
 + *
 + * This program is free software; you can redistribute it and/or
 + * modify it under the terms of the GNU General Public License
@@ -4250,17 +4098,17 @@
 +	struct inode	vfs_inode;
 +};
 +#endif
-diff -x .gitignore -Nurp linux-2.6.20/include/linux/squashfs_fs_sb.h linux-2.6.20-squashfs3.2-r2/include/linux/squashfs_fs_sb.h
---- linux-2.6.20/include/linux/squashfs_fs_sb.h	1970-01-01 01:00:00.000000000 +0100
-+++ linux-2.6.20-squashfs3.2-r2/include/linux/squashfs_fs_sb.h	2007-01-12 01:23:47.000000000 +0000
-@@ -0,0 +1,74 @@
+diff -x .gitignore -Nurp linux-2.6.24/include/linux/squashfs_fs_sb.h linux-2.6.24-squashfs3.3/include/linux/squashfs_fs_sb.h
+--- linux-2.6.24/include/linux/squashfs_fs_sb.h	1970-01-01 01:00:00.000000000 +0100
++++ linux-2.6.24-squashfs3.3/include/linux/squashfs_fs_sb.h	2007-08-19 04:24:26.000000000 +0100
+@@ -0,0 +1,76 @@
 +#ifndef SQUASHFS_FS_SB
 +#define SQUASHFS_FS_SB
 +/*
 + * Squashfs
 + *
 + * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007
-+ * Phillip Lougher <phillip at lougher.org.uk>
++ * Phillip Lougher <phillip at lougher.demon.co.uk>
 + *
 + * This program is free software; you can redistribute it and/or
 + * modify it under the terms of the GNU General Public License
@@ -4320,6 +4168,8 @@
 +	struct meta_index	*meta_index;
 +	z_stream		stream;
 +	long long		*inode_lookup_table;
++	int			unused_cache_blks;
++	int			unused_frag_blks;
 +	int			(*read_inode)(struct inode *i,  squashfs_inode_t \
 +				inode);
 +	long long		(*read_blocklist)(struct inode *inode, int \
@@ -4328,9 +4178,9 @@
 +	int			(*read_fragment_index_table)(struct super_block *s);
 +};
 +#endif
-diff -x .gitignore -Nurp linux-2.6.20/init/do_mounts_rd.c linux-2.6.20-squashfs3.2-r2/init/do_mounts_rd.c
---- linux-2.6.20/init/do_mounts_rd.c	2006-11-29 21:57:37.000000000 +0000
-+++ linux-2.6.20-squashfs3.2-r2/init/do_mounts_rd.c	2007-01-16 02:06:03.000000000 +0000
+diff -x .gitignore -Nurp linux-2.6.24/init/do_mounts_rd.c linux-2.6.24-squashfs3.3/init/do_mounts_rd.c
+--- linux-2.6.24/init/do_mounts_rd.c	2007-10-25 17:41:49.000000000 +0100
++++ linux-2.6.24-squashfs3.3/init/do_mounts_rd.c	2007-11-01 05:06:25.000000000 +0000
 @@ -5,6 +5,7 @@
  #include <linux/ext2_fs.h>
  #include <linux/romfs_fs.h>




More information about the fedora-extras-commits mailing list