From: Hauke Mehrtens <hauke@hauke-m.de>
Date: Sun, 6 Jan 2013 17:14:53 +0000 (+0000)
Subject: compcache: remove package, use zram-swap instead
X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=7a39e7860a30dc1b50892f887bf93924503b1d66;p=openwrt%2Fstaging%2Fjow.git

compcache: remove package, use zram-swap instead

SVN-Revision: 35026
---

diff --git a/package/compcache/Config.in b/package/compcache/Config.in
deleted file mode 100644
index b5f75d00de..0000000000
--- a/package/compcache/Config.in
+++ /dev/null
@@ -1,29 +0,0 @@
-menu "Configuration"
-	depends on PACKAGE_compcache
-
-config COMPCACHE_ENABLE
-	bool "enabled on boot"
-	default n
-	help
-	  Enables compressed ram swap devices.
-
-config COMPCACHE_RAM_REPORTED
-	string "swap space reported to kernel in kb"
-	default "2048"
-	help
-	  This is the amount of memory that will be reported 
-	  to the kernel as swap. The real ram in use will differ, 
-	  because of lzo compression.
-	  Example:
-	    16 MB = 2048 KB 
-	    32 MB = 4098 KB
-
-config COMPCACHE_BACKUP_DEV
-	string "Backup device for compcache"
-	default ""
-	help
-	  Compcache will use this as a backup device for swap.
-	  Example:
-	         /dev/sda5
-
-endmenu
diff --git a/package/compcache/Makefile b/package/compcache/Makefile
deleted file mode 100644
index 5106293e8d..0000000000
--- a/package/compcache/Makefile
+++ /dev/null
@@ -1,75 +0,0 @@
-#
-# Copyright (C) 2009-2010 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-include $(INCLUDE_DIR)/kernel.mk
-
-PKG_NAME:=compcache
-PKG_VERSION:=0.6.2
-PKG_RELEASE:=2
-PKG_SOURCE_URL:=http://compcache.googlecode.com/files/
-PKG_MD5SUM:=27aec78dc50e34fb800c74e879057743
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-
-include $(INCLUDE_DIR)/package.mk
-
-define KernelPackage/ramzswap
-  SUBMENU:=Other modules
-  DEPENDS:=@BUSYBOX_CONFIG_SWAPONOFF
-  TITLE:=Driver for compressed ram swap device
-  VERSION:=$(LINUX_VERSION)-$(BOARD)-$(LINUX_RELEASE)+$(PKG_RELEASE)
-  FILES:=$(PKG_BUILD_DIR)/ramzswap.ko \
-	 $(PKG_BUILD_DIR)/sub-projects/compression/lzo-kmod/lzo1x.ko
-  URL:=http://code.google.com/p/compcache/
-endef
-
-define Package/compcache
-  SECTION:=util
-  CATEGORY:=Utilities
-  DEPENDS:=+kmod-ramzswap
-  TITLE:=Compressed ram swap device
-  URL:=http://code.google.com/p/compcache/
-  MENU:=1
-endef
-
-include $(INCLUDE_DIR)/kernel-defaults.mk
-
-LZO = sub-projects/compression/lzo-kmod
-RZSC = sub-projects/rzscontrol
-
-BUILDFLAGS:=-DCONFIG_RAMZSWAP_STATS \
-	    -I$(PKG_BUILD_DIR)/$(LZO) \
-	    -Wall
-
-RZSCFLAGS:=-I$(PKG_BUILD_DIR)/$(RZSC)/../include \
-	   -I$(PKG_BUILD_DIR)/$(RZSC)/../..
-
-define Build/Compile
-	$(MAKE) $(KERNEL_MAKEOPTS) EXTRA_CFLAGS="$(BUILDFLAGS)" M="$(PKG_BUILD_DIR)" modules
-	$(TARGET_CC) $(TARGET_CFLAGS) $(RZSCFLAGS) $(PKG_BUILD_DIR)/$(RZSC)/rzscontrol.c -o $(PKG_BUILD_DIR)/rzscontrol
-endef
-
-define Package/compcache/install
-	$(INSTALL_DIR) $(1)/etc/config
-	$(INSTALL_DATA) ./files/compcache.config $(1)/etc/config/compcache
-	$(SED) 's,%ENABLED%,$(if $(CONFIG_COMPCACHE_ENABLE),1,0),g' \
-	      -e 's,%RAM_REPORTED%,$(call qstrip,$(CONFIG_COMPCACHE_RAM_REPORTED)),g' \
-	      -e 's,%BACKUP_DEV%,$(call qstrip,$(CONFIG_COMPCACHE_BACKUP_DEV)),g' \
-	      $(1)/etc/config/compcache
-	$(INSTALL_DIR) $(1)/etc/init.d
-	$(INSTALL_BIN) ./files/compcache.init $(1)/etc/init.d/compcache
-	$(INSTALL_DIR) $(1)/sbin
-	$(INSTALL_BIN) $(PKG_BUILD_DIR)/rzscontrol $(1)/sbin/rzscontrol
-endef
-
-define Package/compcache/config
-	source "$(SOURCE)/Config.in"
-endef
-
-$(eval $(call BuildPackage,compcache))
-$(eval $(call KernelPackage,ramzswap))
diff --git a/package/compcache/files/compcache.config b/package/compcache/files/compcache.config
deleted file mode 100644
index 3faab3e140..0000000000
--- a/package/compcache/files/compcache.config
+++ /dev/null
@@ -1,4 +0,0 @@
-config compcache
-	option 'enabled'	'%ENABLED%'
-	option 'size_kbytes'	'%RAM_REPORTED%'
-	option 'backup_dev'	'%BACKUP_DEV%'
diff --git a/package/compcache/files/compcache.init b/package/compcache/files/compcache.init
deleted file mode 100644
index 5939d9f61c..0000000000
--- a/package/compcache/files/compcache.init
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/sh /etc/rc.common
-# Copyright (C) 2008 OpenWrt.org
-START=14
-
-load_modules() {
-	local section="$1"
-	config_get "size_kbytes" "$section" "size_kbytes"
-	config_get "backup_dev" "$section" "backup_dev"
-	#CC_PARAM_STR="memlimit_kb=$1 backing_dev=$BACKING_DEV"
-	config_get_bool "enabled" "$section" "enabled" '1'
-	if [ "$enabled" -gt 0 ]; then
-		if [ "`cat /proc/swaps | grep 'ramzswap0'`" != "" ]; then
-			echo "compcache already loaded"
-		else
-			if [ "$backup_dev" != "" ]; then
-				params_set="memlimit_kb=$size_kbytes backing_swap=$backup_dev"
-			else
-				params_set="disksize_kb=$size_kbytes"
-			fi
-			if [ "`lsmod | grep 'ramzswap'`" == "" ]; then
-				insmod lzo1x
-				insmod ramzswap $params_set
-				sleep 2
-				swapon /dev/ramzswap0
-			fi
-		fi
-	fi
-}
-
-remove_modules() {
-	local section="$1"
-	config_get_bool "enabled" "$section" "enabled" '1'
-	if [ "$enabled" -gt 0 ]; then
-		[ "`cat /proc/swaps | grep 'ramzswap0'`" != "" ] && swapoff /dev/ramzswap0
-		[ "`lsmod | grep 'ramzswap'`" != "" ] && rmmod ramzswap &> /dev/null
-		[ "`lsmod | grep 'lzo1x'`" != "" ] && rmmod lzo1x &> /dev/null
-	fi
-}
-
-start() {
-	config_load "compcache"
-	config_foreach load_modules "compcache"
-}
-
-stop() {
-	config_load "compcache"
-	config_foreach remove_modules "compcache"
-}
diff --git a/package/compcache/patches/000-provide_lzo_kmod.patch b/package/compcache/patches/000-provide_lzo_kmod.patch
deleted file mode 100644
index 1dab085074..0000000000
--- a/package/compcache/patches/000-provide_lzo_kmod.patch
+++ /dev/null
@@ -1,647 +0,0 @@
---- a/Makefile
-+++ b/Makefile
-@@ -1,14 +1,17 @@
- KERNEL_BUILD_PATH ?= "/lib/modules/$(shell uname -r)/build"
- 
- XVM = sub-projects/allocators/xvmalloc-kmod
-+LZO = sub-projects/compression/lzo-kmod
- EXTRA_CFLAGS	:=	-DCONFIG_RAMZSWAP_STATS		\
- 			-Wall
- 
--obj-m		+=	ramzswap.o
-+obj-m		+=	ramzswap.o $(LZO)/lzo1x.o
- ramzswap-objs	:=	ramzswap_drv.o $(XVM)/xvmalloc.o
-+			
- 
- all:
- 	make -C $(KERNEL_BUILD_PATH) M=$(PWD) modules
-+	make -C $(KERNEL_BUILD_PATH) M=$(PWD)/$(LZO) modules
- 	make -C sub-projects/rzscontrol
- 
- doc:
-@@ -16,5 +19,6 @@ doc:
- 
- clean:
- 	make -C $(KERNEL_BUILD_PATH) M=$(PWD) clean
-+	make -C $(KERNEL_BUILD_PATH) M=$(PWD)/$(LZO) clean
- 	make -C sub-projects/rzscontrol clean
- 	@rm -rf *.ko
---- a/ramzswap_drv.c
-+++ b/ramzswap_drv.c
-@@ -23,13 +23,13 @@
- #include <linux/device.h>
- #include <linux/genhd.h>
- #include <linux/highmem.h>
--#include <linux/lzo.h>
- #include <linux/string.h>
- #include <linux/swap.h>
- #include <linux/swapops.h>
- #include <linux/vmalloc.h>
- #include <linux/version.h>
- 
-+#include "lzo.h"
- #include "compat.h"
- #include "ramzswap_drv.h"
- 
---- /dev/null
-+++ b/sub-projects/compression/lzo-kmod/lzo1x.c
-@@ -0,0 +1,7 @@
-+#include <linux/module.h>
-+
-+#include "lzo1x_compress.c"
-+#include "lzo1x_decompress.c"
-+
-+MODULE_LICENSE("GPL");
-+MODULE_DESCRIPTION("LZO1X Lib");
---- /dev/null
-+++ b/sub-projects/compression/lzo-kmod/lzo1x_compress.c
-@@ -0,0 +1,227 @@
-+/*
-+ *  LZO1X Compressor from MiniLZO
-+ *
-+ *  Copyright (C) 1996-2005 Markus F.X.J. Oberhumer <markus@oberhumer.com>
-+ *
-+ *  The full LZO package can be found at:
-+ *  http://www.oberhumer.com/opensource/lzo/
-+ *
-+ *  Changed for kernel use by:
-+ *  Nitin Gupta <nitingupta910@gmail.com>
-+ *  Richard Purdie <rpurdie@openedhand.com>
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <asm/unaligned.h>
-+
-+#include "lzodefs.h"
-+#include "lzo.h"
-+
-+static noinline size_t
-+_lzo1x_1_do_compress(const unsigned char *in, size_t in_len,
-+		unsigned char *out, size_t *out_len, void *wrkmem)
-+{
-+	const unsigned char * const in_end = in + in_len;
-+	const unsigned char * const ip_end = in + in_len - M2_MAX_LEN - 5;
-+	const unsigned char ** const dict = wrkmem;
-+	const unsigned char *ip = in, *ii = ip;
-+	const unsigned char *end, *m, *m_pos;
-+	size_t m_off, m_len, dindex;
-+	unsigned char *op = out;
-+
-+	ip += 4;
-+
-+	for (;;) {
-+		dindex = ((size_t)(0x21 * DX3(ip, 5, 5, 6)) >> 5) & D_MASK;
-+		m_pos = dict[dindex];
-+
-+		if (m_pos < in)
-+			goto literal;
-+
-+		if (ip == m_pos || ((size_t)(ip - m_pos) > M4_MAX_OFFSET))
-+			goto literal;
-+
-+		m_off = ip - m_pos;
-+		if (m_off <= M2_MAX_OFFSET || m_pos[3] == ip[3])
-+			goto try_match;
-+
-+		dindex = (dindex & (D_MASK & 0x7ff)) ^ (D_HIGH | 0x1f);
-+		m_pos = dict[dindex];
-+
-+		if (m_pos < in)
-+			goto literal;
-+
-+		if (ip == m_pos || ((size_t)(ip - m_pos) > M4_MAX_OFFSET))
-+			goto literal;
-+
-+		m_off = ip - m_pos;
-+		if (m_off <= M2_MAX_OFFSET || m_pos[3] == ip[3])
-+			goto try_match;
-+
-+		goto literal;
-+
-+try_match:
-+		if (get_unaligned((const unsigned short *)m_pos)
-+				== get_unaligned((const unsigned short *)ip)) {
-+			if (likely(m_pos[2] == ip[2]))
-+					goto match;
-+		}
-+
-+literal:
-+		dict[dindex] = ip;
-+		++ip;
-+		if (unlikely(ip >= ip_end))
-+			break;
-+		continue;
-+
-+match:
-+		dict[dindex] = ip;
-+		if (ip != ii) {
-+			size_t t = ip - ii;
-+
-+			if (t <= 3) {
-+				op[-2] |= t;
-+			} else if (t <= 18) {
-+				*op++ = (t - 3);
-+			} else {
-+				size_t tt = t - 18;
-+
-+				*op++ = 0;
-+				while (tt > 255) {
-+					tt -= 255;
-+					*op++ = 0;
-+				}
-+				*op++ = tt;
-+			}
-+			do {
-+				*op++ = *ii++;
-+			} while (--t > 0);
-+		}
-+
-+		ip += 3;
-+		if (m_pos[3] != *ip++ || m_pos[4] != *ip++
-+				|| m_pos[5] != *ip++ || m_pos[6] != *ip++
-+				|| m_pos[7] != *ip++ || m_pos[8] != *ip++) {
-+			--ip;
-+			m_len = ip - ii;
-+
-+			if (m_off <= M2_MAX_OFFSET) {
-+				m_off -= 1;
-+				*op++ = (((m_len - 1) << 5)
-+						| ((m_off & 7) << 2));
-+				*op++ = (m_off >> 3);
-+			} else if (m_off <= M3_MAX_OFFSET) {
-+				m_off -= 1;
-+				*op++ = (M3_MARKER | (m_len - 2));
-+				goto m3_m4_offset;
-+			} else {
-+				m_off -= 0x4000;
-+
-+				*op++ = (M4_MARKER | ((m_off & 0x4000) >> 11)
-+						| (m_len - 2));
-+				goto m3_m4_offset;
-+			}
-+		} else {
-+			end = in_end;
-+			m = m_pos + M2_MAX_LEN + 1;
-+
-+			while (ip < end && *m == *ip) {
-+				m++;
-+				ip++;
-+			}
-+			m_len = ip - ii;
-+
-+			if (m_off <= M3_MAX_OFFSET) {
-+				m_off -= 1;
-+				if (m_len <= 33) {
-+					*op++ = (M3_MARKER | (m_len - 2));
-+				} else {
-+					m_len -= 33;
-+					*op++ = M3_MARKER | 0;
-+					goto m3_m4_len;
-+				}
-+			} else {
-+				m_off -= 0x4000;
-+				if (m_len <= M4_MAX_LEN) {
-+					*op++ = (M4_MARKER
-+						| ((m_off & 0x4000) >> 11)
-+						| (m_len - 2));
-+				} else {
-+					m_len -= M4_MAX_LEN;
-+					*op++ = (M4_MARKER
-+						| ((m_off & 0x4000) >> 11));
-+m3_m4_len:
-+					while (m_len > 255) {
-+						m_len -= 255;
-+						*op++ = 0;
-+					}
-+
-+					*op++ = (m_len);
-+				}
-+			}
-+m3_m4_offset:
-+			*op++ = ((m_off & 63) << 2);
-+			*op++ = (m_off >> 6);
-+		}
-+
-+		ii = ip;
-+		if (unlikely(ip >= ip_end))
-+			break;
-+	}
-+
-+	*out_len = op - out;
-+	return in_end - ii;
-+}
-+
-+int lzo1x_1_compress(const unsigned char *in, size_t in_len, unsigned char *out,
-+			size_t *out_len, void *wrkmem)
-+{
-+	const unsigned char *ii;
-+	unsigned char *op = out;
-+	size_t t;
-+
-+	if (unlikely(in_len <= M2_MAX_LEN + 5)) {
-+		t = in_len;
-+	} else {
-+		t = _lzo1x_1_do_compress(in, in_len, op, out_len, wrkmem);
-+		op += *out_len;
-+	}
-+
-+	if (t > 0) {
-+		ii = in + in_len - t;
-+
-+		if (op == out && t <= 238) {
-+			*op++ = (17 + t);
-+		} else if (t <= 3) {
-+			op[-2] |= t;
-+		} else if (t <= 18) {
-+			*op++ = (t - 3);
-+		} else {
-+			size_t tt = t - 18;
-+
-+			*op++ = 0;
-+			while (tt > 255) {
-+				tt -= 255;
-+				*op++ = 0;
-+			}
-+
-+			*op++ = tt;
-+		}
-+		do {
-+			*op++ = *ii++;
-+		} while (--t > 0);
-+	}
-+
-+	*op++ = M4_MARKER | 1;
-+	*op++ = 0;
-+	*op++ = 0;
-+
-+	*out_len = op - out;
-+	return LZO_E_OK;
-+}
-+EXPORT_SYMBOL_GPL(lzo1x_1_compress);
-+
-+MODULE_LICENSE("GPL");
-+MODULE_DESCRIPTION("LZO1X-1 Compressor");
-+
---- /dev/null
-+++ b/sub-projects/compression/lzo-kmod/lzo1x_decompress.c
-@@ -0,0 +1,255 @@
-+/*
-+ *  LZO1X Decompressor from MiniLZO
-+ *
-+ *  Copyright (C) 1996-2005 Markus F.X.J. Oberhumer <markus@oberhumer.com>
-+ *
-+ *  The full LZO package can be found at:
-+ *  http://www.oberhumer.com/opensource/lzo/
-+ *
-+ *  Changed for kernel use by:
-+ *  Nitin Gupta <nitingupta910@gmail.com>
-+ *  Richard Purdie <rpurdie@openedhand.com>
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/kernel.h>
-+#include <asm/byteorder.h>
-+#include <asm/unaligned.h>
-+
-+#include "lzodefs.h"
-+#include "lzo.h"
-+
-+#define HAVE_IP(x, ip_end, ip) ((size_t)(ip_end - ip) < (x))
-+#define HAVE_OP(x, op_end, op) ((size_t)(op_end - op) < (x))
-+#define HAVE_LB(m_pos, out, op) (m_pos < out || m_pos >= op)
-+
-+#define COPY4(dst, src)	\
-+		put_unaligned(get_unaligned((const u32 *)(src)), (u32 *)(dst))
-+
-+int lzo1x_decompress_safe(const unsigned char *in, size_t in_len,
-+			unsigned char *out, size_t *out_len)
-+{
-+	const unsigned char * const ip_end = in + in_len;
-+	unsigned char * const op_end = out + *out_len;
-+	const unsigned char *ip = in, *m_pos;
-+	unsigned char *op = out;
-+	size_t t;
-+
-+	*out_len = 0;
-+
-+	if (*ip > 17) {
-+		t = *ip++ - 17;
-+		if (t < 4)
-+			goto match_next;
-+		if (HAVE_OP(t, op_end, op))
-+			goto output_overrun;
-+		if (HAVE_IP(t + 1, ip_end, ip))
-+			goto input_overrun;
-+		do {
-+			*op++ = *ip++;
-+		} while (--t > 0);
-+		goto first_literal_run;
-+	}
-+
-+	while ((ip < ip_end)) {
-+		t = *ip++;
-+		if (t >= 16)
-+			goto match;
-+		if (t == 0) {
-+			if (HAVE_IP(1, ip_end, ip))
-+				goto input_overrun;
-+			while (*ip == 0) {
-+				t += 255;
-+				ip++;
-+				if (HAVE_IP(1, ip_end, ip))
-+					goto input_overrun;
-+			}
-+			t += 15 + *ip++;
-+		}
-+		if (HAVE_OP(t + 3, op_end, op))
-+			goto output_overrun;
-+		if (HAVE_IP(t + 4, ip_end, ip))
-+			goto input_overrun;
-+
-+		COPY4(op, ip);
-+		op += 4;
-+		ip += 4;
-+		if (--t > 0) {
-+			if (t >= 4) {
-+				do {
-+					COPY4(op, ip);
-+					op += 4;
-+					ip += 4;
-+					t -= 4;
-+				} while (t >= 4);
-+				if (t > 0) {
-+					do {
-+						*op++ = *ip++;
-+					} while (--t > 0);
-+				}
-+			} else {
-+				do {
-+					*op++ = *ip++;
-+				} while (--t > 0);
-+			}
-+		}
-+
-+first_literal_run:
-+		t = *ip++;
-+		if (t >= 16)
-+			goto match;
-+		m_pos = op - (1 + M2_MAX_OFFSET);
-+		m_pos -= t >> 2;
-+		m_pos -= *ip++ << 2;
-+
-+		if (HAVE_LB(m_pos, out, op))
-+			goto lookbehind_overrun;
-+
-+		if (HAVE_OP(3, op_end, op))
-+			goto output_overrun;
-+		*op++ = *m_pos++;
-+		*op++ = *m_pos++;
-+		*op++ = *m_pos;
-+
-+		goto match_done;
-+
-+		do {
-+match:
-+			if (t >= 64) {
-+				m_pos = op - 1;
-+				m_pos -= (t >> 2) & 7;
-+				m_pos -= *ip++ << 3;
-+				t = (t >> 5) - 1;
-+				if (HAVE_LB(m_pos, out, op))
-+					goto lookbehind_overrun;
-+				if (HAVE_OP(t + 3 - 1, op_end, op))
-+					goto output_overrun;
-+				goto copy_match;
-+			} else if (t >= 32) {
-+				t &= 31;
-+				if (t == 0) {
-+					if (HAVE_IP(1, ip_end, ip))
-+						goto input_overrun;
-+					while (*ip == 0) {
-+						t += 255;
-+						ip++;
-+						if (HAVE_IP(1, ip_end, ip))
-+							goto input_overrun;
-+					}
-+					t += 31 + *ip++;
-+				}
-+				m_pos = op - 1;
-+				m_pos -= le16_to_cpu(get_unaligned(
-+					(const unsigned short *)ip)) >> 2;
-+				ip += 2;
-+			} else if (t >= 16) {
-+				m_pos = op;
-+				m_pos -= (t & 8) << 11;
-+
-+				t &= 7;
-+				if (t == 0) {
-+					if (HAVE_IP(1, ip_end, ip))
-+						goto input_overrun;
-+					while (*ip == 0) {
-+						t += 255;
-+						ip++;
-+						if (HAVE_IP(1, ip_end, ip))
-+							goto input_overrun;
-+					}
-+					t += 7 + *ip++;
-+				}
-+				m_pos -= le16_to_cpu(get_unaligned(
-+					(const unsigned short *)ip)) >> 2;
-+				ip += 2;
-+				if (m_pos == op)
-+					goto eof_found;
-+				m_pos -= 0x4000;
-+			} else {
-+				m_pos = op - 1;
-+				m_pos -= t >> 2;
-+				m_pos -= *ip++ << 2;
-+
-+				if (HAVE_LB(m_pos, out, op))
-+					goto lookbehind_overrun;
-+				if (HAVE_OP(2, op_end, op))
-+					goto output_overrun;
-+
-+				*op++ = *m_pos++;
-+				*op++ = *m_pos;
-+				goto match_done;
-+			}
-+
-+			if (HAVE_LB(m_pos, out, op))
-+				goto lookbehind_overrun;
-+			if (HAVE_OP(t + 3 - 1, op_end, op))
-+				goto output_overrun;
-+
-+			if (t >= 2 * 4 - (3 - 1) && (op - m_pos) >= 4) {
-+				COPY4(op, m_pos);
-+				op += 4;
-+				m_pos += 4;
-+				t -= 4 - (3 - 1);
-+				do {
-+					COPY4(op, m_pos);
-+					op += 4;
-+					m_pos += 4;
-+					t -= 4;
-+				} while (t >= 4);
-+				if (t > 0)
-+					do {
-+						*op++ = *m_pos++;
-+					} while (--t > 0);
-+			} else {
-+copy_match:
-+				*op++ = *m_pos++;
-+				*op++ = *m_pos++;
-+				do {
-+					*op++ = *m_pos++;
-+				} while (--t > 0);
-+			}
-+match_done:
-+			t = ip[-2] & 3;
-+			if (t == 0)
-+				break;
-+match_next:
-+			if (HAVE_OP(t, op_end, op))
-+				goto output_overrun;
-+			if (HAVE_IP(t + 1, ip_end, ip))
-+				goto input_overrun;
-+
-+			*op++ = *ip++;
-+			if (t > 1) {
-+				*op++ = *ip++;
-+				if (t > 2)
-+					*op++ = *ip++;
-+			}
-+
-+			t = *ip++;
-+		} while (ip < ip_end);
-+	}
-+
-+	*out_len = op - out;
-+	return LZO_E_EOF_NOT_FOUND;
-+
-+eof_found:
-+	*out_len = op - out;
-+	return (ip == ip_end ? LZO_E_OK :
-+		(ip < ip_end ? LZO_E_INPUT_NOT_CONSUMED : LZO_E_INPUT_OVERRUN));
-+input_overrun:
-+	*out_len = op - out;
-+	return LZO_E_INPUT_OVERRUN;
-+
-+output_overrun:
-+	*out_len = op - out;
-+	return LZO_E_OUTPUT_OVERRUN;
-+
-+lookbehind_overrun:
-+	*out_len = op - out;
-+	return LZO_E_LOOKBEHIND_OVERRUN;
-+}
-+
-+EXPORT_SYMBOL_GPL(lzo1x_decompress_safe);
-+
-+MODULE_LICENSE("GPL");
-+MODULE_DESCRIPTION("LZO1X Decompressor");
-+
---- /dev/null
-+++ b/sub-projects/compression/lzo-kmod/lzodefs.h
-@@ -0,0 +1,43 @@
-+/*
-+ *  lzodefs.h -- architecture, OS and compiler specific defines
-+ *
-+ *  Copyright (C) 1996-2005 Markus F.X.J. Oberhumer <markus@oberhumer.com>
-+ *
-+ *  The full LZO package can be found at:
-+ *  http://www.oberhumer.com/opensource/lzo/
-+ *
-+ *  Changed for kernel use by:
-+ *  Nitin Gupta <nitingupta910@gmail.com>
-+ *  Richard Purdie <rpurdie@openedhand.com>
-+ */
-+
-+#define LZO_VERSION		0x2020
-+#define LZO_VERSION_STRING	"2.02"
-+#define LZO_VERSION_DATE	"Oct 17 2005"
-+
-+#define M1_MAX_OFFSET	0x0400
-+#define M2_MAX_OFFSET	0x0800
-+#define M3_MAX_OFFSET	0x4000
-+#define M4_MAX_OFFSET	0xbfff
-+
-+#define M1_MIN_LEN	2
-+#define M1_MAX_LEN	2
-+#define M2_MIN_LEN	3
-+#define M2_MAX_LEN	8
-+#define M3_MIN_LEN	3
-+#define M3_MAX_LEN	33
-+#define M4_MIN_LEN	3
-+#define M4_MAX_LEN	9
-+
-+#define M1_MARKER	0
-+#define M2_MARKER	64
-+#define M3_MARKER	32
-+#define M4_MARKER	16
-+
-+#define D_BITS		14
-+#define D_MASK		((1u << D_BITS) - 1)
-+#define D_HIGH		((D_MASK >> 1) + 1)
-+
-+#define DX2(p, s1, s2)	(((((size_t)((p)[2]) << (s2)) ^ (p)[1]) \
-+							<< (s1)) ^ (p)[0])
-+#define DX3(p, s1, s2, s3)	((DX2((p)+1, s2, s3) << (s1)) ^ (p)[0])
---- /dev/null
-+++ b/sub-projects/compression/lzo-kmod/lzo.h
-@@ -0,0 +1,44 @@
-+#ifndef __LZO_H__
-+#define __LZO_H__
-+/*
-+ *  LZO Public Kernel Interface
-+ *  A mini subset of the LZO real-time data compression library
-+ *
-+ *  Copyright (C) 1996-2005 Markus F.X.J. Oberhumer <markus@oberhumer.com>
-+ *
-+ *  The full LZO package can be found at:
-+ *  http://www.oberhumer.com/opensource/lzo/
-+ *
-+ *  Changed for kernel use by:
-+ *  Nitin Gupta <nitingupta910@gmail.com>
-+ *  Richard Purdie <rpurdie@openedhand.com>
-+ */
-+
-+#define LZO1X_MEM_COMPRESS	(16384 * sizeof(unsigned char *))
-+#define LZO1X_1_MEM_COMPRESS	LZO1X_MEM_COMPRESS
-+
-+#define lzo1x_worst_compress(x) ((x) + ((x) / 16) + 64 + 3)
-+
-+/* This requires 'workmem' of size LZO1X_1_MEM_COMPRESS */
-+int lzo1x_1_compress(const unsigned char *src, size_t src_len,
-+			unsigned char *dst, size_t *dst_len, void *wrkmem);
-+
-+/* safe decompression with overrun testing */
-+int lzo1x_decompress_safe(const unsigned char *src, size_t src_len,
-+			unsigned char *dst, size_t *dst_len);
-+
-+/*
-+ * Return values (< 0 = Error)
-+ */
-+#define LZO_E_OK			0
-+#define LZO_E_ERROR			(-1)
-+#define LZO_E_OUT_OF_MEMORY		(-2)
-+#define LZO_E_NOT_COMPRESSIBLE		(-3)
-+#define LZO_E_INPUT_OVERRUN		(-4)
-+#define LZO_E_OUTPUT_OVERRUN		(-5)
-+#define LZO_E_LOOKBEHIND_OVERRUN	(-6)
-+#define LZO_E_EOF_NOT_FOUND		(-7)
-+#define LZO_E_INPUT_NOT_CONSUMED	(-8)
-+#define LZO_E_NOT_YET_IMPLEMENTED	(-9)
-+
-+#endif
---- /dev/null
-+++ b/sub-projects/compression/lzo-kmod/Makefile
-@@ -0,0 +1,8 @@
-+obj-m += lzo1x_compress.o lzo1x_decompress.o
-+
-+all:
-+	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
-+
-+clean:
-+	make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
-+
diff --git a/package/compcache/patches/001-lzo-speed.patch b/package/compcache/patches/001-lzo-speed.patch
deleted file mode 100644
index 130f79da61..0000000000
--- a/package/compcache/patches/001-lzo-speed.patch
+++ /dev/null
@@ -1,181 +0,0 @@
---- a/sub-projects/compression/lzo-kmod/lzo1x_compress.c
-+++ b/sub-projects/compression/lzo-kmod/lzo1x_compress.c
-@@ -62,8 +62,12 @@ _lzo1x_1_do_compress(const unsigned char
- 		goto literal;
- 
- try_match:
-+#ifdef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
- 		if (get_unaligned((const unsigned short *)m_pos)
- 				== get_unaligned((const unsigned short *)ip)) {
-+#else
-+		if (m_pos[0] == ip[0] && m_pos[1] == ip[1]) {
-+#endif
- 			if (likely(m_pos[2] == ip[2]))
- 					goto match;
- 		}
-@@ -94,9 +98,14 @@ match:
- 				}
- 				*op++ = tt;
- 			}
--			do {
--				*op++ = *ii++;
--			} while (--t > 0);
-+			if (t >= 2 * 4) {
-+				memcpy(op, ii, t);
-+				op += t;
-+				ii += t;
-+			} else
-+				do {
-+					*op++ = *ii++;
-+				} while (--t > 0);
- 		}
- 
- 		ip += 3;
-@@ -208,9 +217,14 @@ int lzo1x_1_compress(const unsigned char
- 
- 			*op++ = tt;
- 		}
--		do {
--			*op++ = *ii++;
--		} while (--t > 0);
-+		if (t >= 2 * 4) {
-+			memcpy(op, ii, t);
-+			op += t;
-+			ii += t;
-+		} else
-+			do {
-+				*op++ = *ii++;
-+			} while (--t > 0);
- 	}
- 
- 	*op++ = M4_MARKER | 1;
-@@ -224,4 +238,3 @@ EXPORT_SYMBOL_GPL(lzo1x_1_compress);
- 
- MODULE_LICENSE("GPL");
- MODULE_DESCRIPTION("LZO1X-1 Compressor");
--
---- a/sub-projects/compression/lzo-kmod/lzo1x_decompress.c
-+++ b/sub-projects/compression/lzo-kmod/lzo1x_decompress.c
-@@ -45,10 +45,7 @@ int lzo1x_decompress_safe(const unsigned
- 			goto output_overrun;
- 		if (HAVE_IP(t + 1, ip_end, ip))
- 			goto input_overrun;
--		do {
--			*op++ = *ip++;
--		} while (--t > 0);
--		goto first_literal_run;
-+		goto prep_first_literal_run;
- 	}
- 
- 	while ((ip < ip_end)) {
-@@ -71,30 +68,27 @@ int lzo1x_decompress_safe(const unsigned
- 		if (HAVE_IP(t + 4, ip_end, ip))
- 			goto input_overrun;
- 
--		COPY4(op, ip);
--		op += 4;
--		ip += 4;
--		if (--t > 0) {
--			if (t >= 4) {
--				do {
--					COPY4(op, ip);
--					op += 4;
--					ip += 4;
--					t -= 4;
--				} while (t >= 4);
--				if (t > 0) {
--					do {
--						*op++ = *ip++;
--					} while (--t > 0);
--				}
--			} else {
-+		t += (4 - 1);
-+		if (t >= 2 * 4) {
-+			memcpy(op, ip, t);
-+			op += t;
-+			ip += t;
-+		} else {
-+			do {
-+				COPY4(op, ip);
-+				op += 4;
-+				ip += 4;
-+				t -= 4;
-+			} while (t >= 4);
-+			if (t > 0) {
-+prep_first_literal_run:
- 				do {
- 					*op++ = *ip++;
- 				} while (--t > 0);
- 			}
- 		}
- 
--first_literal_run:
-+//first_literal_run:
- 		t = *ip++;
- 		if (t >= 16)
- 			goto match;
-@@ -139,8 +133,7 @@ match:
- 					t += 31 + *ip++;
- 				}
- 				m_pos = op - 1;
--				m_pos -= le16_to_cpu(get_unaligned(
--					(const unsigned short *)ip)) >> 2;
-+				m_pos -= get_unaligned_le16(ip) >> 2;
- 				ip += 2;
- 			} else if (t >= 16) {
- 				m_pos = op;
-@@ -158,8 +151,7 @@ match:
- 					}
- 					t += 7 + *ip++;
- 				}
--				m_pos -= le16_to_cpu(get_unaligned(
--					(const unsigned short *)ip)) >> 2;
-+				m_pos -= get_unaligned_le16(ip) >> 2;
- 				ip += 2;
- 				if (m_pos == op)
- 					goto eof_found;
-@@ -184,21 +176,33 @@ match:
- 			if (HAVE_OP(t + 3 - 1, op_end, op))
- 				goto output_overrun;
- 
--			if (t >= 2 * 4 - (3 - 1) && (op - m_pos) >= 4) {
--				COPY4(op, m_pos);
--				op += 4;
--				m_pos += 4;
--				t -= 4 - (3 - 1);
--				do {
-+			if (t >= 2 * 4 - (3 - 1)) {
-+				/*
-+				 *  Assume memcpy don't copy
-+				 *  more than 32 bytes at once
-+				 */
-+				if ((op - m_pos) >= 32) {
-+					t += (3 - 1);
-+					memcpy(op, m_pos, t);
-+					op += t;
-+					m_pos += t;
-+				} else if ((op - m_pos) >= 4) {
- 					COPY4(op, m_pos);
- 					op += 4;
- 					m_pos += 4;
--					t -= 4;
--				} while (t >= 4);
--				if (t > 0)
-+					t -= 4 - (3 - 1);
- 					do {
--						*op++ = *m_pos++;
--					} while (--t > 0);
-+						COPY4(op, m_pos);
-+						op += 4;
-+						m_pos += 4;
-+						t -= 4;
-+					} while (t >= 4);
-+					if (t > 0)
-+						do {
-+							*op++ = *m_pos++;
-+						} while (--t > 0);
-+				} else
-+					goto copy_match;
- 			} else {
- copy_match:
- 				*op++ = *m_pos++;
diff --git a/package/compcache/patches/002-kernel-2.6.34-compat.patch b/package/compcache/patches/002-kernel-2.6.34-compat.patch
deleted file mode 100644
index 5cd8129f80..0000000000
--- a/package/compcache/patches/002-kernel-2.6.34-compat.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/ramzswap_drv.c
-+++ b/ramzswap_drv.c
-@@ -23,6 +23,7 @@
- #include <linux/device.h>
- #include <linux/genhd.h>
- #include <linux/highmem.h>
-+#include <linux/slab.h>
- #include <linux/string.h>
- #include <linux/swap.h>
- #include <linux/swapops.h>
diff --git a/package/compcache/patches/003-kernel-3.x-compat.patch b/package/compcache/patches/003-kernel-3.x-compat.patch
deleted file mode 100644
index 70996ebe71..0000000000
--- a/package/compcache/patches/003-kernel-3.x-compat.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-Index: compcache-0.6.2/ramzswap_drv.c
-===================================================================
---- compcache-0.6.2.orig/ramzswap_drv.c	2012-07-25 01:02:39.000000000 +0200
-+++ compcache-0.6.2/ramzswap_drv.c	2012-07-25 01:04:29.270750850 +0200
-@@ -525,7 +525,7 @@
- 
- 	if (S_ISBLK(inode->i_mode)) {
- 		bdev = I_BDEV(inode);
--		ret = bd_claim(bdev, setup_backing_swap);
-+		ret = blkdev_get(bdev, FMODE_READ | FMODE_WRITE | FMODE_EXCL, setup_backing_swap);
- 		if (ret < 0) {
- 			bdev = NULL;
- 			goto bad_param;
-@@ -557,7 +557,7 @@
- 
- bad_param:
- 	if (bdev)
--		bd_release(bdev);
-+		blkdev_put(bdev, FMODE_READ | FMODE_WRITE | FMODE_EXCL);
- 	filp_close(swap_file, NULL);
- 
- out:
-@@ -1097,7 +1097,7 @@
- 	/* Close backing swap device, if present */
- 	if (rzs->backing_swap) {
- 		if (is_backing_blkdev)
--			bd_release(rzs->backing_swap);
-+			blkdev_put(rzs->backing_swap, FMODE_READ | FMODE_WRITE | FMODE_EXCL);
- 		filp_close(rzs->swap_file, NULL);
- 		rzs->backing_swap = NULL;
- 		memset(rzs->backing_swap_name, 0, MAX_SWAP_NAME_LEN);