Boot tested: http://pastebin.com/L6aAb9xj Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> [jogo: update to 4.1 final add patches added since submission delete patches applied in later rcs restore commit messages in 220-gc-sections and 304-mips_disable_fpu fix 050-backport_netfilter_rtcache to match new API update inlined dma ops with upstream changes add missing config symbols enabled CONFIG_MULTIUSER update kmod defintions for 4.1 ] Signed-off-by: Jonas Gorski <jogo@openwrt.org> SVN-Revision: 46112
		
			
				
	
	
		
			93 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
--- a/fs/ubifs/Kconfig
 | 
						|
+++ b/fs/ubifs/Kconfig
 | 
						|
@@ -5,8 +5,10 @@ config UBIFS_FS
 | 
						|
 	select CRYPTO if UBIFS_FS_ADVANCED_COMPR
 | 
						|
 	select CRYPTO if UBIFS_FS_LZO
 | 
						|
 	select CRYPTO if UBIFS_FS_ZLIB
 | 
						|
+	select CRYPTO if UBIFS_FS_XZ
 | 
						|
 	select CRYPTO_LZO if UBIFS_FS_LZO
 | 
						|
 	select CRYPTO_DEFLATE if UBIFS_FS_ZLIB
 | 
						|
+	select CRYPTO_XZ if UBIFS_FS_XZ
 | 
						|
 	depends on MTD_UBI
 | 
						|
 	help
 | 
						|
 	  UBIFS is a file system for flash devices which works on top of UBI.
 | 
						|
@@ -35,3 +37,12 @@ config UBIFS_FS_ZLIB
 | 
						|
 	default y
 | 
						|
 	help
 | 
						|
 	  Zlib compresses better than LZO but it is slower. Say 'Y' if unsure.
 | 
						|
+
 | 
						|
+config UBIFS_FS_XZ
 | 
						|
+	bool "XZ decompression support" if UBIFS_FS_ADVANCED_COMPR
 | 
						|
+	depends on UBIFS_FS
 | 
						|
+	default y
 | 
						|
+	help
 | 
						|
+	  XZ compresses better the ZLIB but it is slower..
 | 
						|
+	  Say 'Y' if unsure.
 | 
						|
+
 | 
						|
--- a/fs/ubifs/compress.c
 | 
						|
+++ b/fs/ubifs/compress.c
 | 
						|
@@ -71,6 +71,24 @@ static struct ubifs_compressor zlib_comp
 | 
						|
 };
 | 
						|
 #endif
 | 
						|
 
 | 
						|
+#ifdef CONFIG_UBIFS_FS_XZ
 | 
						|
+static DEFINE_MUTEX(xz_enc_mutex);
 | 
						|
+static DEFINE_MUTEX(xz_dec_mutex);
 | 
						|
+
 | 
						|
+static struct ubifs_compressor xz_compr = {
 | 
						|
+	.compr_type = UBIFS_COMPR_XZ,
 | 
						|
+	.comp_mutex = &xz_enc_mutex,
 | 
						|
+	.decomp_mutex = &xz_dec_mutex,
 | 
						|
+	.name = "xz",
 | 
						|
+	.capi_name = "xz",
 | 
						|
+};
 | 
						|
+#else
 | 
						|
+static struct ubifs_compressor xz_compr = {
 | 
						|
+	.compr_type = UBIFS_COMPR_XZ,
 | 
						|
+	.name = "xz",
 | 
						|
+};
 | 
						|
+#endif
 | 
						|
+
 | 
						|
 /* All UBIFS compressors */
 | 
						|
 struct ubifs_compressor *ubifs_compressors[UBIFS_COMPR_TYPES_CNT];
 | 
						|
 
 | 
						|
@@ -232,9 +250,15 @@ int __init ubifs_compressors_init(void)
 | 
						|
 	if (err)
 | 
						|
 		goto out_lzo;
 | 
						|
 
 | 
						|
+	err = compr_init(&xz_compr);
 | 
						|
+	if (err)
 | 
						|
+		goto out_zlib;
 | 
						|
+
 | 
						|
 	ubifs_compressors[UBIFS_COMPR_NONE] = &none_compr;
 | 
						|
 	return 0;
 | 
						|
 
 | 
						|
+out_zlib:
 | 
						|
+	compr_exit(&zlib_compr);
 | 
						|
 out_lzo:
 | 
						|
 	compr_exit(&lzo_compr);
 | 
						|
 	return err;
 | 
						|
@@ -247,4 +271,5 @@ void ubifs_compressors_exit(void)
 | 
						|
 {
 | 
						|
 	compr_exit(&lzo_compr);
 | 
						|
 	compr_exit(&zlib_compr);
 | 
						|
+	compr_exit(&xz_compr);
 | 
						|
 }
 | 
						|
--- a/fs/ubifs/ubifs-media.h
 | 
						|
+++ b/fs/ubifs/ubifs-media.h
 | 
						|
@@ -332,12 +332,14 @@ enum {
 | 
						|
  * UBIFS_COMPR_NONE: no compression
 | 
						|
  * UBIFS_COMPR_LZO: LZO compression
 | 
						|
  * UBIFS_COMPR_ZLIB: ZLIB compression
 | 
						|
+ * UBIFS_COMPR_XZ: XZ compression
 | 
						|
  * UBIFS_COMPR_TYPES_CNT: count of supported compression types
 | 
						|
  */
 | 
						|
 enum {
 | 
						|
 	UBIFS_COMPR_NONE,
 | 
						|
 	UBIFS_COMPR_LZO,
 | 
						|
 	UBIFS_COMPR_ZLIB,
 | 
						|
+	UBIFS_COMPR_XZ,
 | 
						|
 	UBIFS_COMPR_TYPES_CNT,
 | 
						|
 };
 | 
						|
 
 |