diff options
Diffstat (limited to 'target')
| -rw-r--r-- | target/linux/generic/patches-3.2/541-ubifs-xz-decompression-support.patch | 94 | 
1 files changed, 94 insertions, 0 deletions
| diff --git a/target/linux/generic/patches-3.2/541-ubifs-xz-decompression-support.patch b/target/linux/generic/patches-3.2/541-ubifs-xz-decompression-support.patch new file mode 100644 index 000000000..3c917c164 --- /dev/null +++ b/target/linux/generic/patches-3.2/541-ubifs-xz-decompression-support.patch @@ -0,0 +1,94 @@ +--- 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. +@@ -42,6 +44,14 @@ config UBIFS_FS_ZLIB + 	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. ++ + # Debugging-related stuff + config UBIFS_FS_DEBUG + 	bool "Enable debugging support" +--- 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 zlib_compr = { ++	.compr_type = UBIFS_COMPR_XZ, ++	.name = "xz", ++}; ++#endif ++ + /* All UBIFS compressors */ + struct ubifs_compressor *ubifs_compressors[UBIFS_COMPR_TYPES_CNT]; +  +@@ -233,9 +251,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; +@@ -248,4 +272,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, + }; +  | 
