[oe-commits] org.oe.dev merge of '976e971fd6884363d9d2b100c0b842a538ba851b'

philippe commit openembedded-commits at lists.openembedded.org
Mon Oct 8 12:25:26 UTC 2007


merge of '976e971fd6884363d9d2b100c0b842a538ba851b'
     and 'b0c4563563205076478d883b26a26f7ad87afd8a'

Author: philippe at openembedded.org
Branch: org.openembedded.dev
Revision: 6dbc754c42e248771938edac13b6a108628e7151
ViewMTN: http://monotone.openembedded.org/revision/info/6dbc754c42e248771938edac13b6a108628e7151
Files:
1
packages/linux/linux-openmoko-devel/squashfs-2.6.23.patch
conf/machine/cm-x270.conf
packages/dropbear/dropbear.inc
packages/hal/ohm_git.bb
packages/linux/linux-2.6.21/gumstix-verdex/defconfig
packages/linux/linux-openmoko-devel/defconfig-2.6.23-rc9
packages/linux/linux-openmoko-devel_svn+2.6.23-rc9.bb
packages/linux/linux_2.6.21.bb
packages/openmoko2/libmokojournal2_svn.bb
packages/gtk-webcore/osb-jscore_svn.bb
packages/gtk-webcore/osb-nrcit_svn.bb
packages/gtk-webcore/osb-nrcore_svn.bb
Diffs:

#
# mt diff -r976e971fd6884363d9d2b100c0b842a538ba851b -r6dbc754c42e248771938edac13b6a108628e7151
#
# 
# 
# add_file "packages/linux/linux-openmoko-devel/squashfs-2.6.23.patch"
#  content [774b40f972150561e8bf90e11e373f9ff33a686a]
# 
# patch "conf/machine/cm-x270.conf"
#  from [01698d66d048f367f36e135294ce9ba30856378a]
#    to [f9429eb200a306ada78b0ff137d01a378b020fbb]
# 
# patch "packages/dropbear/dropbear.inc"
#  from [ff532d8bfcc0f308eacabcd31bb48bd7f126f0e8]
#    to [0fb89381d326f94dcaca0c7cff61ec28480a313d]
# 
# patch "packages/hal/ohm_git.bb"
#  from [690f87493050de6333be4cd4a7b98e07531dffd3]
#    to [d3df01f4d425f234e0cffc1cd255366453514a1e]
# 
# patch "packages/linux/linux-2.6.21/gumstix-verdex/defconfig"
#  from [3c348910dbfa861d1ba26d1ab8fb948547758c3d]
#    to [45142279000d3236f9ef9f751c7b2f9378335a73]
# 
# patch "packages/linux/linux-openmoko-devel/defconfig-2.6.23-rc9"
#  from [c712c7b820f987c72295a446ee186c011e5a3fe1]
#    to [2deb299a86ffff85deec61aa5209451d8d0ce92a]
# 
# patch "packages/linux/linux-openmoko-devel_svn+2.6.23-rc9.bb"
#  from [a5485d1ea24491c6ccc650293b1a09ec963c6ed3]
#    to [f6cbf2d77d77b3aff58554ab202e92e402972e55]
# 
# patch "packages/linux/linux_2.6.21.bb"
#  from [7c17cb4df270798a771c151cfe56f55916a73fae]
#    to [ea3e4abd8395bae51a2fa300c1079ee0a5041860]
# 
# patch "packages/openmoko2/libmokojournal2_svn.bb"
#  from [b541bf1dc97e0d821a14b471c2dda846d8f49d77]
#    to [2771924ff02a687386dd05a09a18eee904337bcb]
# 
============================================================
--- packages/linux/linux-openmoko-devel/squashfs-2.6.23.patch	774b40f972150561e8bf90e11e373f9ff33a686a
+++ packages/linux/linux-openmoko-devel/squashfs-2.6.23.patch	774b40f972150561e8bf90e11e373f9ff33a686a
@@ -0,0 +1,4395 @@
+Index: linux-2.6.22/fs/Kconfig
+===================================================================
+--- linux-2.6.22.orig/fs/Kconfig
++++ linux-2.6.22/fs/Kconfig
+@@ -1368,6 +1368,71 @@
+ 
+ 	  If unsure, say N.
+ 
++config SQUASHFS
++	tristate "SquashFS 3.2 - 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.
++
++	  If you want to compile this as a module ( = code which can be
++	  inserted in and removed from the running kernel whenever you want),
++	  say M here and read <file:Documentation/modules.txt>.  The module
++	  will be called squashfs.  Note that the root file system (the one
++	  containing the directory /) cannot be compiled as a module.
++
++	  If unsure, say N.
++
++config SQUASHFS_EMBEDDED
++
++	bool "Additional options 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.
++
++	  If unsure, say N.
++
++config SQUASHFS_FRAGMENT_CACHE_SIZE
++	int "Number of fragments cached" if SQUASHFS_EMBEDDED
++	depends on SQUASHFS
++	default "3"
++	help
++	  By default SquashFS caches the last 3 fragments read from
++	  the filesystem.  Increasing this amount may mean SquashFS
++	  has to re-read fragments less often from disk, at the expense
++	  of extra system memory.  Decreasing this amount will mean
++	  SquashFS uses less memory at the expense of extra reads from disk.
++
++	  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
+Index: linux-2.6.22/fs/Makefile
+===================================================================
+--- linux-2.6.22.orig/fs/Makefile
++++ linux-2.6.22/fs/Makefile
+@@ -72,6 +72,7 @@
+ obj-$(CONFIG_JBD2)		+= jbd2/
+ obj-$(CONFIG_EXT2_FS)		+= ext2/
+ obj-$(CONFIG_CRAMFS)		+= cramfs/
++obj-$(CONFIG_SQUASHFS)		+= squashfs/
+ obj-$(CONFIG_RAMFS)		+= ramfs/
+ obj-$(CONFIG_HUGETLBFS)		+= hugetlbfs/
+ obj-$(CONFIG_CODA_FS)		+= coda/
+Index: linux-2.6.22/fs/squashfs/inode.c
+===================================================================
+--- /dev/null
++++ linux-2.6.22/fs/squashfs/inode.c
+@@ -0,0 +1,2328 @@
++/*
++ * Squashfs - a compressed read only filesystem for Linux
++ *
++ * Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007
++ * Phillip Lougher <phillip at lougher.org.uk>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2,
++ * or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
++ *
++ * inode.c
++ */
++
++#include <linux/squashfs_fs.h>
++#include <linux/module.h>
++#include <linux/zlib.h>
++#include <linux/fs.h>
++#include <linux/squashfs_fs_sb.h>
++#include <linux/squashfs_fs_i.h>
++#include <linux/buffer_head.h>
++#include <linux/vfs.h>
++#include <linux/vmalloc.h>
++#include <linux/smp_lock.h>
++#include <linux/exportfs.h>
++
++#include "squashfs.h"
++
++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);
++static int squashfs_statfs(struct dentry *, struct kstatfs *);
++static int squashfs_symlink_readpage(struct file *file, struct page *page);
++static long long read_blocklist(struct inode *inode, int index,
++				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 *);
++static int squashfs_remount(struct super_block *s, int *flags, char *data);
++static void squashfs_put_super(struct super_block *);
++static int squashfs_get_sb(struct file_system_type *,int, const char *, void *,
++				struct vfsmount *);
++static struct inode *squashfs_alloc_inode(struct super_block *sb);
++static void squashfs_destroy_inode(struct inode *inode);
++static int init_inodecache(void);
++static void destroy_inodecache(void);
++
++static struct file_system_type squashfs_fs_type = {
++	.owner = THIS_MODULE,
++	.name = "squashfs",
++	.get_sb = squashfs_get_sb,
++	.kill_sb = kill_block_super,
++	.fs_flags = FS_REQUIRES_DEV
++};
++
++static const unsigned char squashfs_filetype_table[] = {
++	DT_UNKNOWN, DT_DIR, DT_REG, DT_LNK, DT_BLK, DT_CHR, DT_FIFO, DT_SOCK
++};
++
++static struct super_operations squashfs_super_ops = {
++	.alloc_inode = squashfs_alloc_inode,
++	.destroy_inode = squashfs_destroy_inode,
++	.statfs = squashfs_statfs,
++	.put_super = squashfs_put_super,
++	.remount_fs = squashfs_remount
++};
++
++static struct super_operations squashfs_export_super_ops = {
++	.alloc_inode = squashfs_alloc_inode,
++	.destroy_inode = squashfs_destroy_inode,
++	.statfs = squashfs_statfs,
++	.put_super = squashfs_put_super,
++	.read_inode = vfs_read_inode
++};
++
++static struct export_operations squashfs_export_ops = {
++	.get_parent = squashfs_get_parent
++};
++
++SQSH_EXTERN const struct address_space_operations squashfs_symlink_aops = {
++	.readpage = squashfs_symlink_readpage
++};
++
++SQSH_EXTERN const struct address_space_operations squashfs_aops = {
++	.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
++};
++
++SQSH_EXTERN struct inode_operations squashfs_dir_inode_ops = {
++	.lookup = squashfs_lookup
++};
++
++
++static struct buffer_head *get_block_length(struct super_block *s,
++				int *cur_index, int *offset, int *c_byte)
++{
++	struct squashfs_sb_info *msblk = s->s_fs_info;
++	unsigned short temp;
++	struct buffer_head *bh;
++
++	if (!(bh = sb_bread(s, *cur_index)))
++		goto out;
++
++	if (msblk->devblksize - *offset == 1) {
++		if (msblk->swap)
++			((unsigned char *) &temp)[1] = *((unsigned char *)
++				(bh->b_data + *offset));
++		else
++			((unsigned char *) &temp)[0] = *((unsigned char *)
++				(bh->b_data + *offset));
++		brelse(bh);
++		if (!(bh = sb_bread(s, ++(*cur_index))))
++			goto out;
++		if (msblk->swap)
++			((unsigned char *) &temp)[0] = *((unsigned char *)
++				bh->b_data); 
++		else
++			((unsigned char *) &temp)[1] = *((unsigned char *)
++				bh->b_data); 
++		*c_byte = temp;
++		*offset = 1;
++	} else {
++		if (msblk->swap) {
++			((unsigned char *) &temp)[1] = *((unsigned char *)
++				(bh->b_data + *offset));
++			((unsigned char *) &temp)[0] = *((unsigned char *)
++				(bh->b_data + *offset + 1)); 
++		} else {
++			((unsigned char *) &temp)[0] = *((unsigned char *)
++				(bh->b_data + *offset));
++			((unsigned char *) &temp)[1] = *((unsigned char *)
++				(bh->b_data + *offset + 1)); 
++		}
++		*c_byte = temp;
++		*offset += 2;
++	}
++
++	if (SQUASHFS_CHECK_DATA(msblk->sblk.flags)) {
++		if (*offset == msblk->devblksize) {
++			brelse(bh);
++			if (!(bh = sb_bread(s, ++(*cur_index))))
++				goto out;
++			*offset = 0;
++		}
++		if (*((unsigned char *) (bh->b_data + *offset)) !=
++						SQUASHFS_MARKER_BYTE) {
++			ERROR("Metadata block marker corrupt @ %x\n",
++						*cur_index);
++			brelse(bh);
++			goto out;
++		}
++		(*offset)++;
++	}
++	return bh;
++
++out:
++	return NULL;
++}
++
++
++SQSH_EXTERN unsigned int squashfs_read_data(struct super_block *s, char *buffer,
++			long long index, unsigned int length,
++			long long *next_index, int srclength)
++{
++	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];
++	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;
++
++	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);
++
++		if (c_byte > srclength || index < 0 || (index + c_byte) > sblk->bytes_used)
++			goto read_failure;
++
++		if (!(bh[0] = sb_getblk(s, cur_index)))
++			goto block_release;
++
++		for (b = 1; bytes < c_byte; b++) {
++			if (!(bh[b] = sb_getblk(s, ++cur_index)))
++				goto block_release;
++			bytes += msblk->devblksize;
++		}
++		ll_rw_block(READ, b, bh);
++	} else {
++		if (index < 0 || (index + 2) > sblk->bytes_used)
++			goto read_failure;
++
++		if (!(bh[0] = get_block_length(s, &cur_index, &offset,
++								&c_byte)))
++			goto read_failure;
++
++		bytes = msblk->devblksize - offset;
++		compressed = SQUASHFS_COMPRESSED(c_byte);
++		c_byte = SQUASHFS_COMPRESSED_SIZE(c_byte);
++
++		TRACE("Block @ 0x%llx, %scompressed size %d\n", index, compressed
++					? "" : "un", (unsigned int) c_byte);
++
++		if (c_byte > srclength || (index + c_byte) > sblk->bytes_used)
++			goto read_failure;
++
++		for (b = 1; bytes < c_byte; b++) {
++			if (!(bh[b] = sb_getblk(s, ++cur_index)))
++				goto block_release;
++			bytes += msblk->devblksize;
++		}
++		ll_rw_block(READ, b - 1, bh + 1);
++	}
++
++	if (compressed) {
++		int zlib_err = 0;
++
++		/*
++	 	* uncompress block
++	 	*/
++
++		mutex_lock(&msblk->read_data_mutex);
++
++		msblk->stream.next_out = buffer;
++		msblk->stream.avail_out = srclength;
++
++		for (bytes = 0; k < b; k++) {
++			avail_bytes = (c_byte - bytes) > (msblk->devblksize - offset) ?
++					msblk->devblksize - offset :
++					c_byte - bytes;
++			wait_on_buffer(bh[k]);
++			if (!buffer_uptodate(bh[k]))
++				goto release_mutex;
++
++			msblk->stream.next_in = bh[k]->b_data + offset;
++			msblk->stream.avail_in = avail_bytes;
++
++			if (k == 0) {
++				zlib_err = zlib_inflateInit(&msblk->stream);
++				if (zlib_err != Z_OK) {
++					ERROR("zlib_inflateInit returned unexpected result 0x%x, srclength %d\n",
++						zlib_err, srclength);
++					goto release_mutex;
++				}
++
++				if (avail_bytes == 0) {
++					offset = 0;
++					brelse(bh[k]);
++					continue;
++				}
++			}
++
++			zlib_err = zlib_inflate(&msblk->stream, Z_NO_FLUSH);
++			if (zlib_err != Z_OK && zlib_err != Z_STREAM_END) {
++				ERROR("zlib_inflate returned unexpected result 0x%x, srclength %d, avail_in %d, avail_out %d\n",
++					zlib_err, srclength, msblk->stream.avail_in, msblk->stream.avail_out);
++				goto release_mutex;
++			}
++
++			bytes += avail_bytes;
++			offset = 0;
++			brelse(bh[k]);
++		}
++
++		if (zlib_err != Z_STREAM_END)
++			goto release_mutex;
++
++		zlib_err = zlib_inflateEnd(&msblk->stream);
++		if (zlib_err != Z_OK) {
++			ERROR("zlib_inflateEnd returned unexpected result 0x%x, srclength %d\n",
++				zlib_err, srclength);
++			goto release_mutex;
++		}
++		bytes = msblk->stream.total_out;
++		mutex_unlock(&msblk->read_data_mutex);
++	} else {
++		int i;
++
++		for(i = 0; i < b; i++) {
++			wait_on_buffer(bh[i]);
++			if(!buffer_uptodate(bh[i]))
++				goto block_release;
++		}
++
++		for (bytes = 0; k < b; k++) {
++			avail_bytes = (c_byte - bytes) > (msblk->devblksize - offset) ?
++					msblk->devblksize - offset :
++					c_byte - bytes;
++			memcpy(buffer + bytes, bh[k]->b_data + offset, avail_bytes);
++			bytes += avail_bytes;
++			offset = 0;
++			brelse(bh[k]);
++		}
++	}
++
++	if (next_index)
++		*next_index = index + c_byte + (length ? 0 :
++				(SQUASHFS_CHECK_DATA(msblk->sblk.flags)
++				 ? 3 : 2));
++	return bytes;
++
++release_mutex:
++	mutex_unlock(&msblk->read_data_mutex);
++
++block_release:
++	for (; k < b; k++)
++		brelse(bh[k]);
++
++read_failure:
++	ERROR("sb_bread failed reading block 0x%x\n", cur_index);
++	return 0;
++}
++
++
++SQSH_EXTERN int squashfs_get_cached_block(struct super_block *s, char *buffer,
++				long long block, unsigned int offset,
++				int length, long long *next_block,
++				unsigned int *next_offset)
++{
++	struct squashfs_sb_info *msblk = s->s_fs_info;
++	int n, i, bytes, return_length = length;
++	long long next_index;
++
++	TRACE("Entered squashfs_get_cached_block [%llx:%x]\n", block, offset);
++
++	while ( 1 ) {
++		for (i = 0; i < SQUASHFS_CACHED_BLKS; i++) 
++			if (msblk->block_cache[i].block == block)
++				break; 
++		
++		mutex_lock(&msblk->block_cache_mutex);
++
++		if (i == SQUASHFS_CACHED_BLKS) {
++			/* read inode header block */
++			for (i = msblk->next_%s
>>> DIFF TRUNCATED @ 16K


#
# mt diff -rb0c4563563205076478d883b26a26f7ad87afd8a -r6dbc754c42e248771938edac13b6a108628e7151
#
# 
# 
# patch "packages/gtk-webcore/osb-jscore_svn.bb"
#  from [08f95478338a78dcf9ef0956930f2d682324b32f]
#    to [b9e84c178b8314578103df9fe9f70faa86e25b62]
# 
# patch "packages/gtk-webcore/osb-nrcit_svn.bb"
#  from [e20892177009024e3e4fe7bf662ff4c3a5dab077]
#    to [d2946241f9a427b0631ba309b8c8408ff33bebf7]
# 
# patch "packages/gtk-webcore/osb-nrcore_svn.bb"
#  from [f0272ef1ec3ef2b2fac6ec34f6c9398aff1b4974]
#    to [8a2e36e22d6546437b3ebec3bc6df6aa17c82174]
# 
============================================================
--- packages/gtk-webcore/osb-jscore_svn.bb	08f95478338a78dcf9ef0956930f2d682324b32f
+++ packages/gtk-webcore/osb-jscore_svn.bb	b9e84c178b8314578103df9fe9f70faa86e25b62
@@ -5,7 +5,7 @@ DEFAULT_PREFERENCE = "-1"
 
 DEFAULT_PREFERENCE = "-1"
 
-PV = "0.5.2+svnr${SRCDATE}"
+PV = "0.5.2+svnr${SRCREV}"
 PR = "r1"
 
 SRC_URI = "svn://gtk-webcore.svn.sourceforge.net/svnroot/gtk-webcore/trunk;module=JavaScriptCore;proto=https \
============================================================
--- packages/gtk-webcore/osb-nrcit_svn.bb	e20892177009024e3e4fe7bf662ff4c3a5dab077
+++ packages/gtk-webcore/osb-nrcit_svn.bb	d2946241f9a427b0631ba309b8c8408ff33bebf7
@@ -1,10 +1,10 @@ SECTION = "gpe"
 DESCRIPTION = "Gtk+ WebCore - NRCit embeddable browser component"
 HOMEPAGE = "http://gtk-webcore.sourceforge.net/"
 LICENSE = "nokia"
 PRIORITY = "optional"
 SECTION = "gpe"
 
-PV = "0.5.2+svnr${SRCDATE}"
+PV = "0.5.2+svnr${SRCREV}"
 PR = "r0"
 
 DEPENDS = "curl librsvg osb-nrcore pango"
============================================================
--- packages/gtk-webcore/osb-nrcore_svn.bb	f0272ef1ec3ef2b2fac6ec34f6c9398aff1b4974
+++ packages/gtk-webcore/osb-nrcore_svn.bb	8a2e36e22d6546437b3ebec3bc6df6aa17c82174
@@ -1,8 +1,8 @@ DEFAULT_PREFERENCE = "-1"
 require osb-nrcore.inc
 
 DEFAULT_PREFERENCE = "-1"
 
-PV = "0.5.2+svnr${SRCDATE}"
+PV = "0.5.2+svnr${SRCREV}"
 PR = "r1"
 
 SRC_URI = "svn://gtk-webcore.svn.sourceforge.net/svnroot/gtk-webcore/trunk;module=NRCore;proto=https \






More information about the Openembedded-commits mailing list