250 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			250 lines
		
	
	
		
			7.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
--- a/fs/squashfs/decompressor.c
 | 
						|
+++ b/fs/squashfs/decompressor.c
 | 
						|
@@ -40,11 +40,9 @@ static const struct squashfs_decompresso
 | 
						|
 	NULL, NULL, NULL, LZMA_COMPRESSION, "lzma", 0
 | 
						|
 };
 | 
						|
 
 | 
						|
-#ifndef CONFIG_SQUASHFS_LZO
 | 
						|
 static const struct squashfs_decompressor squashfs_lzo_unsupported_comp_ops = {
 | 
						|
 	NULL, NULL, NULL, LZO_COMPRESSION, "lzo", 0
 | 
						|
 };
 | 
						|
-#endif
 | 
						|
 
 | 
						|
 static const struct squashfs_decompressor squashfs_unknown_comp_ops = {
 | 
						|
 	NULL, NULL, NULL, 0, "unknown", 0
 | 
						|
@@ -53,11 +51,7 @@ static const struct squashfs_decompresso
 | 
						|
 static const struct squashfs_decompressor *decompressor[] = {
 | 
						|
 	&squashfs_zlib_comp_ops,
 | 
						|
 	&squashfs_lzma_unsupported_comp_ops,
 | 
						|
-#ifdef CONFIG_SQUASHFS_LZO
 | 
						|
-	&squashfs_lzo_comp_ops,
 | 
						|
-#else
 | 
						|
 	&squashfs_lzo_unsupported_comp_ops,
 | 
						|
-#endif
 | 
						|
 	&squashfs_unknown_comp_ops
 | 
						|
 };
 | 
						|
 
 | 
						|
--- a/fs/squashfs/Kconfig
 | 
						|
+++ b/fs/squashfs/Kconfig
 | 
						|
@@ -5,13 +5,13 @@ config SQUASHFS
 | 
						|
 	help
 | 
						|
 	  Saying Y here includes support for SquashFS 4.0 (a Compressed
 | 
						|
 	  Read-Only File System).  Squashfs is a highly compressed read-only
 | 
						|
-	  filesystem for Linux.  It uses zlib/lzo compression to compress both
 | 
						|
+	  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 4.0 supports 64 bit filesystems and files
 | 
						|
 	  (larger than 4GB), full uid/gid information, hard links and
 | 
						|
-	  timestamps.
 | 
						|
+	  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
 | 
						|
@@ -26,7 +26,7 @@ config SQUASHFS
 | 
						|
 
 | 
						|
 	  If unsure, say N.
 | 
						|
 
 | 
						|
-config SQUASHFS_XATTR
 | 
						|
+config SQUASHFS_XATTRS
 | 
						|
 	bool "Squashfs XATTR support"
 | 
						|
 	depends on SQUASHFS
 | 
						|
 	default n
 | 
						|
@@ -37,24 +37,9 @@ config SQUASHFS_XATTR
 | 
						|
 
 | 
						|
 	  If unsure, say N.
 | 
						|
 
 | 
						|
-config SQUASHFS_LZO
 | 
						|
-	bool "Include support for LZO compressed file systems"
 | 
						|
-	depends on SQUASHFS
 | 
						|
-	default n
 | 
						|
-	select LZO_DECOMPRESS
 | 
						|
-	help
 | 
						|
-	  Saying Y here includes support for reading Squashfs file systems
 | 
						|
-	  compressed with LZO compresssion.  LZO compression is mainly
 | 
						|
-	  aimed at embedded systems with slower CPUs where the overheads
 | 
						|
-	  of zlib are too high.
 | 
						|
-
 | 
						|
-	  LZO is not the standard compression used in Squashfs and so most
 | 
						|
-	  file systems will be readable without selecting this option.
 | 
						|
-
 | 
						|
-	  If unsure, say N.
 | 
						|
-
 | 
						|
 config SQUASHFS_EMBEDDED
 | 
						|
-	bool "Additional option for memory-constrained systems"
 | 
						|
+
 | 
						|
+	bool "Additional option for memory-constrained systems" 
 | 
						|
 	depends on SQUASHFS
 | 
						|
 	default n
 | 
						|
 	help
 | 
						|
--- a/fs/squashfs/lzo_wrapper.c
 | 
						|
+++ /dev/null
 | 
						|
@@ -1,136 +0,0 @@
 | 
						|
-/*
 | 
						|
- * Squashfs - a compressed read only filesystem for Linux
 | 
						|
- *
 | 
						|
- * Copyright (c) 2010 LG Electronics
 | 
						|
- * Chan Jeong <chan.jeong@lge.com>
 | 
						|
- *
 | 
						|
- * 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, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 | 
						|
- *
 | 
						|
- * lzo_wrapper.c
 | 
						|
- */
 | 
						|
-
 | 
						|
-#include <linux/mutex.h>
 | 
						|
-#include <linux/buffer_head.h>
 | 
						|
-#include <linux/slab.h>
 | 
						|
-#include <linux/vmalloc.h>
 | 
						|
-#include <linux/lzo.h>
 | 
						|
-
 | 
						|
-#include "squashfs_fs.h"
 | 
						|
-#include "squashfs_fs_sb.h"
 | 
						|
-#include "squashfs_fs_i.h"
 | 
						|
-#include "squashfs.h"
 | 
						|
-#include "decompressor.h"
 | 
						|
-
 | 
						|
-struct squashfs_lzo {
 | 
						|
-	void	*input;
 | 
						|
-	void	*output;
 | 
						|
-};
 | 
						|
-
 | 
						|
-static void *lzo_init(struct squashfs_sb_info *msblk)
 | 
						|
-{
 | 
						|
-	int block_size = max_t(int, msblk->block_size, SQUASHFS_METADATA_SIZE);
 | 
						|
-
 | 
						|
-	struct squashfs_lzo *stream = kzalloc(sizeof(*stream), GFP_KERNEL);
 | 
						|
-	if (stream == NULL)
 | 
						|
-		goto failed;
 | 
						|
-	stream->input = vmalloc(block_size);
 | 
						|
-	if (stream->input == NULL)
 | 
						|
-		goto failed;
 | 
						|
-	stream->output = vmalloc(block_size);
 | 
						|
-	if (stream->output == NULL)
 | 
						|
-		goto failed2;
 | 
						|
-
 | 
						|
-	return stream;
 | 
						|
-
 | 
						|
-failed2:
 | 
						|
-	vfree(stream->input);
 | 
						|
-failed:
 | 
						|
-	ERROR("Failed to allocate lzo workspace\n");
 | 
						|
-	kfree(stream);
 | 
						|
-	return NULL;
 | 
						|
-}
 | 
						|
-
 | 
						|
-
 | 
						|
-static void lzo_free(void *strm)
 | 
						|
-{
 | 
						|
-	struct squashfs_lzo *stream = strm;
 | 
						|
-
 | 
						|
-	if (stream) {
 | 
						|
-		vfree(stream->input);
 | 
						|
-		vfree(stream->output);
 | 
						|
-	}
 | 
						|
-	kfree(stream);
 | 
						|
-}
 | 
						|
-
 | 
						|
-
 | 
						|
-static int lzo_uncompress(struct squashfs_sb_info *msblk, void **buffer,
 | 
						|
-	struct buffer_head **bh, int b, int offset, int length, int srclength,
 | 
						|
-	int pages)
 | 
						|
-{
 | 
						|
-	struct squashfs_lzo *stream = msblk->stream;
 | 
						|
-	void *buff = stream->input;
 | 
						|
-	int avail, i, bytes = length, res;
 | 
						|
-	size_t out_len = srclength;
 | 
						|
-
 | 
						|
-	mutex_lock(&msblk->read_data_mutex);
 | 
						|
-
 | 
						|
-	for (i = 0; i < b; i++) {
 | 
						|
-		wait_on_buffer(bh[i]);
 | 
						|
-		if (!buffer_uptodate(bh[i]))
 | 
						|
-			goto block_release;
 | 
						|
-
 | 
						|
-		avail = min(bytes, msblk->devblksize - offset);
 | 
						|
-		memcpy(buff, bh[i]->b_data + offset, avail);
 | 
						|
-		buff += avail;
 | 
						|
-		bytes -= avail;
 | 
						|
-		offset = 0;
 | 
						|
-		put_bh(bh[i]);
 | 
						|
-	}
 | 
						|
-
 | 
						|
-	res = lzo1x_decompress_safe(stream->input, (size_t)length,
 | 
						|
-					stream->output, &out_len);
 | 
						|
-	if (res != LZO_E_OK)
 | 
						|
-		goto failed;
 | 
						|
-
 | 
						|
-	res = bytes = (int)out_len;
 | 
						|
-	for (i = 0, buff = stream->output; bytes && i < pages; i++) {
 | 
						|
-		avail = min_t(int, bytes, PAGE_CACHE_SIZE);
 | 
						|
-		memcpy(buffer[i], buff, avail);
 | 
						|
-		buff += avail;
 | 
						|
-		bytes -= avail;
 | 
						|
-	}
 | 
						|
-
 | 
						|
-	mutex_unlock(&msblk->read_data_mutex);
 | 
						|
-	return res;
 | 
						|
-
 | 
						|
-block_release:
 | 
						|
-	for (; i < b; i++)
 | 
						|
-		put_bh(bh[i]);
 | 
						|
-
 | 
						|
-failed:
 | 
						|
-	mutex_unlock(&msblk->read_data_mutex);
 | 
						|
-
 | 
						|
-	ERROR("lzo decompression failed, data probably corrupt\n");
 | 
						|
-	return -EIO;
 | 
						|
-}
 | 
						|
-
 | 
						|
-const struct squashfs_decompressor squashfs_lzo_comp_ops = {
 | 
						|
-	.init = lzo_init,
 | 
						|
-	.free = lzo_free,
 | 
						|
-	.decompress = lzo_uncompress,
 | 
						|
-	.id = LZO_COMPRESSION,
 | 
						|
-	.name = "lzo",
 | 
						|
-	.supported = 1
 | 
						|
-};
 | 
						|
--- a/fs/squashfs/Makefile
 | 
						|
+++ b/fs/squashfs/Makefile
 | 
						|
@@ -5,5 +5,5 @@
 | 
						|
 obj-$(CONFIG_SQUASHFS) += squashfs.o
 | 
						|
 squashfs-y += block.o cache.o dir.o export.o file.o fragment.o id.o inode.o
 | 
						|
 squashfs-y += namei.o super.o symlink.o zlib_wrapper.o decompressor.o
 | 
						|
-squashfs-$(CONFIG_SQUASHFS_XATTR) += xattr.o xattr_id.o
 | 
						|
-squashfs-$(CONFIG_SQUASHFS_LZO) += lzo_wrapper.o
 | 
						|
+squashfs-$(CONFIG_SQUASHFS_XATTRS) += xattr.o xattr_id.o
 | 
						|
+
 | 
						|
--- a/fs/squashfs/squashfs.h
 | 
						|
+++ b/fs/squashfs/squashfs.h
 | 
						|
@@ -104,6 +104,3 @@ extern const struct xattr_handler *squas
 | 
						|
 
 | 
						|
 /* zlib_wrapper.c */
 | 
						|
 extern const struct squashfs_decompressor squashfs_zlib_comp_ops;
 | 
						|
-
 | 
						|
-/* lzo_wrapper.c */
 | 
						|
-extern const struct squashfs_decompressor squashfs_lzo_comp_ops;
 | 
						|
--- a/fs/squashfs/xattr.h
 | 
						|
+++ b/fs/squashfs/xattr.h
 | 
						|
@@ -21,7 +21,7 @@
 | 
						|
  * xattr.h
 | 
						|
  */
 | 
						|
 
 | 
						|
-#ifdef CONFIG_SQUASHFS_XATTR
 | 
						|
+#ifdef CONFIG_SQUASHFS_XATTRS
 | 
						|
 extern __le64 *squashfs_read_xattr_id_table(struct super_block *, u64,
 | 
						|
 		u64 *, int *);
 | 
						|
 extern int squashfs_xattr_lookup(struct super_block *, unsigned int, int *,
 |