All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 2/2] Squashfs: Add XZ compression configuration option
@ 2010-12-09  6:11 Phillip Lougher
  2010-12-09  7:02 ` Geert Uytterhoeven
  2010-12-09  9:09 ` Lasse Collin
  0 siblings, 2 replies; 7+ messages in thread
From: Phillip Lougher @ 2010-12-09  6:11 UTC (permalink / raw)
  To: Linux Kernel Development, linux-fsdevel, Linux Embedded Maillist
  Cc: Lasse Collin


Signed-off-by: Phillip Lougher <phillip@lougher.demon.co.uk>
---
  fs/squashfs/Kconfig        |   16 ++++++++++++++++
  fs/squashfs/Makefile       |    1 +
  fs/squashfs/decompressor.c |   11 +++++++++++
  fs/squashfs/squashfs.h     |    3 +++
  4 files changed, 31 insertions(+), 0 deletions(-)

diff --git a/fs/squashfs/Kconfig b/fs/squashfs/Kconfig
index e5f63da..e96d99a 100644
--- a/fs/squashfs/Kconfig
+++ b/fs/squashfs/Kconfig
@@ -53,6 +53,22 @@ config SQUASHFS_LZO

  	  If unsure, say N.

+config SQUASHFS_XZ
+	bool "Include support for XZ compressed file systems"
+	depends on SQUASHFS
+	default n
+	select XZ_DEC
+	help
+	  Saying Y here includes support for reading Squashfs file systems
+	  compressed with XZ compresssion.  XZ gives better compression than
+	  the default zlib compression, at the expense of greater CPU and
+	  memory overhead.
+
+	  XZ 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"
  	depends on SQUASHFS
diff --git a/fs/squashfs/Makefile b/fs/squashfs/Makefile
index 7672bac..cecf2be 100644
--- a/fs/squashfs/Makefile
+++ b/fs/squashfs/Makefile
@@ -7,3 +7,4 @@ 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_XZ) += xz_wrapper.o
diff --git a/fs/squashfs/decompressor.c b/fs/squashfs/decompressor.c
index 24af9ce..ac333b8 100644
--- a/fs/squashfs/decompressor.c
+++ b/fs/squashfs/decompressor.c
@@ -46,6 +46,12 @@ static const struct squashfs_decompressor squashfs_lzo_unsupported_comp_ops = {
  };
  #endif

+#ifndef CONFIG_SQUASHFS_XZ
+static const struct squashfs_decompressor squashfs_xz_unsupported_comp_ops = {
+	NULL, NULL, NULL, XZ_COMPRESSION, "xz", 0
+};
+#endif
+
  static const struct squashfs_decompressor squashfs_unknown_comp_ops = {
  	NULL, NULL, NULL, 0, "unknown", 0
  };
@@ -58,6 +64,11 @@ static const struct squashfs_decompressor *decompressor[] = {
  #else
  	&squashfs_lzo_unsupported_comp_ops,
  #endif
+#ifdef CONFIG_SQUASHFS_XZ
+	&squashfs_xz_comp_ops,
+#else
+	&squashfs_xz_unsupported_comp_ops,
+#endif
  	&squashfs_unknown_comp_ops
  };

diff --git a/fs/squashfs/squashfs.h b/fs/squashfs/squashfs.h
index 5d45569..1096e2e 100644
--- a/fs/squashfs/squashfs.h
+++ b/fs/squashfs/squashfs.h
@@ -107,3 +107,6 @@ extern const struct squashfs_decompressor squashfs_zlib_comp_ops;

  /* lzo_wrapper.c */
  extern const struct squashfs_decompressor squashfs_lzo_comp_ops;
+
+/* xz_wrapper.c */
+extern const struct squashfs_decompressor squashfs_xz_comp_ops;
-- 
1.6.3.3


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/2] Squashfs: Add XZ compression configuration option
  2010-12-09  6:11 [PATCH 2/2] Squashfs: Add XZ compression configuration option Phillip Lougher
@ 2010-12-09  7:02 ` Geert Uytterhoeven
  2010-12-10  6:23   ` Phillip Lougher
  2010-12-09  9:09 ` Lasse Collin
  1 sibling, 1 reply; 7+ messages in thread
From: Geert Uytterhoeven @ 2010-12-09  7:02 UTC (permalink / raw)
  To: Phillip Lougher
  Cc: Linux Kernel Development, linux-fsdevel, Linux Embedded Maillist,
	Lasse Collin, Andy Whitcroft

On Thu, Dec 9, 2010 at 07:11, Phillip Lougher
<phillip@lougher.demon.co.uk> wrote:
> --- a/fs/squashfs/Kconfig
> +++ b/fs/squashfs/Kconfig
> @@ -53,6 +53,22 @@ config SQUASHFS_LZO
>
>          If unsure, say N.
>
> +config SQUASHFS_XZ
> +       bool "Include support for XZ compressed file systems"
> +       depends on SQUASHFS
> +       default n

"default n" is the default, no reason to specify it.

Do we need a checkpatch test for this?

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/2] Squashfs: Add XZ compression configuration option
  2010-12-09  6:11 [PATCH 2/2] Squashfs: Add XZ compression configuration option Phillip Lougher
  2010-12-09  7:02 ` Geert Uytterhoeven
@ 2010-12-09  9:09 ` Lasse Collin
  2010-12-10  7:30   ` Phillip Lougher
  1 sibling, 1 reply; 7+ messages in thread
From: Lasse Collin @ 2010-12-09  9:09 UTC (permalink / raw)
  To: Phillip Lougher
  Cc: Linux Kernel Development, linux-fsdevel, Linux Embedded Maillist

On 2010-12-09 Phillip Lougher wrote:
> +config SQUASHFS_XZ
> +       bool "Include support for XZ compressed file systems"
> +       depends on SQUASHFS
> +       default n
> +       select XZ_DEC

Should "select XZ_DEC" be replaced with "depends on XZ_DEC"? XZ_DEC 
requires CRC32, so if "select XZ_DEC" is used, there needs to be also 
"select CRC32".

XZ_DEC may optionally use other XZ_DEC_* symbols, which the user will 
want to choose when building for an embedded system. With "depends on 
XZ_DEC" the user will see that there's more than a single option that 
affects the details of the XZ support in Squashfs.

-- 
Lasse Collin  |  IRC: Larhzu @ IRCnet & Freenode

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/2] Squashfs: Add XZ compression configuration option
  2010-12-09  7:02 ` Geert Uytterhoeven
@ 2010-12-10  6:23   ` Phillip Lougher
  2011-01-16 18:56     ` Geert Uytterhoeven
  0 siblings, 1 reply; 7+ messages in thread
From: Phillip Lougher @ 2010-12-10  6:23 UTC (permalink / raw)
  To: Geert Uytterhoeven
  Cc: Linux Kernel Development, linux-fsdevel, Linux Embedded Maillist,
	Lasse Collin, Andy Whitcroft

Geert Uytterhoeven wrote:
> On Thu, Dec 9, 2010 at 07:11, Phillip Lougher
> <phillip@lougher.demon.co.uk> wrote:
>> --- a/fs/squashfs/Kconfig
>> +++ b/fs/squashfs/Kconfig
>> @@ -53,6 +53,22 @@ config SQUASHFS_LZO
>>
>>          If unsure, say N.
>>
>> +config SQUASHFS_XZ
>> +       bool "Include support for XZ compressed file systems"
>> +       depends on SQUASHFS
>> +       default n
> 
> "default n" is the default, no reason to specify it.
> 

Yes, thanks for pointing that out.

It seems there's a lot of "default n"s in the mainline kernel

% find . -name "Kconfig"| xargs grep "default n" | wc
     485    1535   18753

including two in arch/m68k ;-)

Phillip



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/2] Squashfs: Add XZ compression configuration option
  2010-12-09  9:09 ` Lasse Collin
@ 2010-12-10  7:30   ` Phillip Lougher
  2010-12-10 10:37     ` Lasse Collin
  0 siblings, 1 reply; 7+ messages in thread
From: Phillip Lougher @ 2010-12-10  7:30 UTC (permalink / raw)
  To: Lasse Collin
  Cc: Linux Kernel Development, linux-fsdevel, Linux Embedded Maillist

Lasse Collin wrote:
> On 2010-12-09 Phillip Lougher wrote:
>> +config SQUASHFS_XZ
>> +       bool "Include support for XZ compressed file systems"
>> +       depends on SQUASHFS
>> +       default n
>> +       select XZ_DEC
> 
> Should "select XZ_DEC" be replaced with "depends on XZ_DEC"? XZ_DEC 
> requires CRC32, so if "select XZ_DEC" is used, there needs to be also 
> "select CRC32".
> 

XZ_DEC selects CRC32, kbuild handles these nested selects quite happily,
so if something selects XZ_DEC it knows it has to also select CRC32.

Depends on has quite different semantics to selects.  If SQUASHFS_XZ
was made to depend on XZ_DEC then the option simply won't appear unless
the user knew to select XZ_DEC first (as it's default n).  This would
prove extremely confusing, and probably lead to most people thinking
Squashfs didn't have XZ support, which is somewhat undesirable.

> XZ_DEC may optionally use other XZ_DEC_* symbols, which the user will 
> want to choose when building for an embedded system. With "depends on 
> XZ_DEC" the user will see that there's more than a single option that 
> affects the details of the XZ support in Squashfs.
>

With depends on XZ_DEC the user will simply not see that Squashfs has
XZ support (as the option won't appear unless XZ_DEC is explicitly
selected).

With selects XZ_DEC users will see that Squashfs has XZ support, if
enabled, they'll simply see that XZ_DEC has been automatically
selected in the "Library routines" sub-menu.  If EMBEDDED is not
selected the XZ_DEC options will be automatically selected (as
they're only user selectable if EMBEDDED is selected).  If
EMBEDDED is selected, then they'll have the choice then to decide
which options they wish to de-select.

I think this is preferable to needing XZ_DEC to be selected before
the SQUASHFS_XZ option even appears.

Phillip


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/2] Squashfs: Add XZ compression configuration option
  2010-12-10  7:30   ` Phillip Lougher
@ 2010-12-10 10:37     ` Lasse Collin
  0 siblings, 0 replies; 7+ messages in thread
From: Lasse Collin @ 2010-12-10 10:37 UTC (permalink / raw)
  To: Phillip Lougher
  Cc: Linux Kernel Development, linux-fsdevel, Linux Embedded Maillist

On 2010-12-10 Phillip Lougher wrote:
> Lasse Collin wrote:
> > On 2010-12-09 Phillip Lougher wrote:
> >> +config SQUASHFS_XZ
> >> +       bool "Include support for XZ compressed file systems"
> >> +       depends on SQUASHFS
> >> +       default n
> >> +       select XZ_DEC
> > 
> > Should "select XZ_DEC" be replaced with "depends on XZ_DEC"? XZ_DEC
> > requires CRC32, so if "select XZ_DEC" is used, there needs to be
> > also "select CRC32".
> 
> XZ_DEC selects CRC32, kbuild handles these nested selects quite
> happily, so if something selects XZ_DEC it knows it has to also
> select CRC32.

OK, I had misunderstood the notice about "select" and dependencies in 
Documentation/kbuild/kconfig-language.txt.

> Depends on has quite different semantics to selects.  If SQUASHFS_XZ
> was made to depend on XZ_DEC then the option simply won't appear
> unless the user knew to select XZ_DEC first (as it's default n). 
> This would prove extremely confusing, and probably lead to most
> people thinking Squashfs didn't have XZ support, which is somewhat
> undesirable.

Good point. I always keep the inactive options visible in xconfig so I 
missed this. I will need to update my XZ boot-time support patch to use 
"select" instead of "depends on" too. Thanks!

-- 
Lasse Collin  |  IRC: Larhzu @ IRCnet & Freenode

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH 2/2] Squashfs: Add XZ compression configuration option
  2010-12-10  6:23   ` Phillip Lougher
@ 2011-01-16 18:56     ` Geert Uytterhoeven
  0 siblings, 0 replies; 7+ messages in thread
From: Geert Uytterhoeven @ 2011-01-16 18:56 UTC (permalink / raw)
  To: Phillip Lougher
  Cc: Linux Kernel Development, linux-fsdevel, Linux Embedded Maillist,
	Lasse Collin, Andy Whitcroft

On Fri, Dec 10, 2010 at 07:23, Phillip Lougher
<phillip@lougher.demon.co.uk> wrote:
> Geert Uytterhoeven wrote:
>> On Thu, Dec 9, 2010 at 07:11, Phillip Lougher
>> <phillip@lougher.demon.co.uk> wrote:
>>>
>>> --- a/fs/squashfs/Kconfig
>>> +++ b/fs/squashfs/Kconfig
>>> @@ -53,6 +53,22 @@ config SQUASHFS_LZO
>>>
>>>         If unsure, say N.
>>>
>>> +config SQUASHFS_XZ
>>> +       bool "Include support for XZ compressed file systems"
>>> +       depends on SQUASHFS
>>> +       default n
>>
>> "default n" is the default, no reason to specify it.
>>
>
> Yes, thanks for pointing that out.
>
> It seems there's a lot of "default n"s in the mainline kernel
>
> % find . -name "Kconfig"| xargs grep "default n" | wc
>    485    1535   18753
>
> including two in arch/m68k ;-)

Thanks, fixed.

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2011-01-16 18:56 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-12-09  6:11 [PATCH 2/2] Squashfs: Add XZ compression configuration option Phillip Lougher
2010-12-09  7:02 ` Geert Uytterhoeven
2010-12-10  6:23   ` Phillip Lougher
2011-01-16 18:56     ` Geert Uytterhoeven
2010-12-09  9:09 ` Lasse Collin
2010-12-10  7:30   ` Phillip Lougher
2010-12-10 10:37     ` Lasse Collin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.