2023-11-17 16:12:50

by Ariel Miculas

[permalink] [raw]
Subject: [PATCH v3] docs: filesystems: document the squashfs specific mount options

When SQUASHFS_CHOICE_DECOMP_BY_MOUNT is set, the "threads" mount option
can be used to specify the decompression mode: single-threaded,
multi-threaded, percpu or the number of threads used for decompression.
When SQUASHFS_CHOICE_DECOMP_BY_MOUNT is not set, SQUASHFS_DECOMP_MULTI
and SQUASHFS_MOUNT_DECOMP_THREADS are both set, the "threads" option can
also be used to specify the number of threads used for decompression.
This mount option is only mentioned in fs/squashfs/Kconfig, which makes
it difficult to find.

Another mount option available is "errors", which can be configured to
panic the kernel when squashfs errors are encountered.

Add both these options to the squashfs documentation, making them more
noticeable.

Signed-off-by: Ariel Miculas <[email protected]>
---
V2 -> V3: When SQUASHFS_CHOICE_DECOMP_BY_MOUNT is not set, the "threads"
mount option also requires SQUASHFS_MOUNT_DECOMP_THREADS to be set, in
addition to SQUASHFS_DECOMP_MULTI

V1 -> V2: When SQUASHFS_CHOICE_DECOMP_BY_MOUNT is not set, the "threads"
mount option also requires SQUASHFS_DECOMP_MULTI to be set

Documentation/filesystems/squashfs.rst | 60 ++++++++++++++++++++++++++
1 file changed, 60 insertions(+)

diff --git a/Documentation/filesystems/squashfs.rst b/Documentation/filesystems/squashfs.rst
index df42106bae71..4af8d6207509 100644
--- a/Documentation/filesystems/squashfs.rst
+++ b/Documentation/filesystems/squashfs.rst
@@ -64,6 +64,66 @@ obtained from this site also.
The squashfs-tools development tree is now located on kernel.org
git://git.kernel.org/pub/scm/fs/squashfs/squashfs-tools.git

+2.1 Mount options
+-----------------
+=================== =========================================================
+errors=%s Specify whether squashfs errors trigger a kernel panic
+ or not
+
+ ========== =============================================
+ continue errors don't trigger a panic (default)
+ panic trigger a panic when errors are encountered,
+ similar to several other filesystems (e.g.
+ btrfs, ext4, f2fs, GFS2, jfs, ntfs, ubifs)
+
+ This allows a kernel dump to be saved,
+ useful for analyzing and debugging the
+ corruption.
+ ========== =============================================
+threads=%s Select the decompression mode or the number of threads
+
+ If SQUASHFS_CHOICE_DECOMP_BY_MOUNT is set:
+
+ ========== =============================================
+ single use single-threaded decompression (default)
+
+ Only one block (data or metadata) can be
+ decompressed at any one time. This limits
+ CPU and memory usage to a minimum, but it
+ also gives poor performance on parallel I/O
+ workloads when using multiple CPU machines
+ due to waiting on decompressor availability.
+ multi use up to two parallel decompressors per core
+
+ If you have a parallel I/O workload and your
+ system has enough memory, using this option
+ may improve overall I/O performance. It
+ dynamically allocates decompressors on a
+ demand basis.
+ percpu use a maximum of one decompressor per core
+
+ It uses percpu variables to ensure
+ decompression is load-balanced across the
+ cores.
+ 1|2|3|... configure the number of threads used for
+ decompression
+
+ The upper limit is num_online_cpus() * 2.
+ ========== =============================================
+
+ If SQUASHFS_CHOICE_DECOMP_BY_MOUNT is **not** set and
+ SQUASHFS_DECOMP_MULTI, SQUASHFS_MOUNT_DECOMP_THREADS are
+ both set:
+
+ ========== =============================================
+ 2|3|... configure the number of threads used for
+ decompression
+
+ The upper limit is num_online_cpus() * 2.
+ ========== =============================================
+
+=================== =========================================================
+
3. Squashfs Filesystem Design
-----------------------------

--
2.42.1


2023-11-18 06:58:34

by Bagas Sanjaya

[permalink] [raw]
Subject: Re: [PATCH v3] docs: filesystems: document the squashfs specific mount options

On Fri, Nov 17, 2023 at 06:12:14PM +0200, Ariel Miculas wrote:
> +2.1 Mount options
> +-----------------
> +=================== =========================================================
> +errors=%s Specify whether squashfs errors trigger a kernel panic
> + or not
> +
> + ========== =============================================
> + continue errors don't trigger a panic (default)
> + panic trigger a panic when errors are encountered,
> + similar to several other filesystems (e.g.
> + btrfs, ext4, f2fs, GFS2, jfs, ntfs, ubifs)
> +
> + This allows a kernel dump to be saved,
> + useful for analyzing and debugging the
> + corruption.
> + ========== =============================================
> +threads=%s Select the decompression mode or the number of threads
> +
> + If SQUASHFS_CHOICE_DECOMP_BY_MOUNT is set:
> +
> + ========== =============================================
> + single use single-threaded decompression (default)
> +
> + Only one block (data or metadata) can be
> + decompressed at any one time. This limits
"... at any time ..."?
> + CPU and memory usage to a minimum, but it
> + also gives poor performance on parallel I/O
> + workloads when using multiple CPU machines
> + due to waiting on decompressor availability.
> + multi use up to two parallel decompressors per core
> +
> + If you have a parallel I/O workload and your
> + system has enough memory, using this option
> + may improve overall I/O performance. It
> + dynamically allocates decompressors on a
> + demand basis.
"... on-demand."
> + percpu use a maximum of one decompressor per core
> +
> + It uses percpu variables to ensure
> + decompression is load-balanced across the
> + cores.
> + 1|2|3|... configure the number of threads used for
> + decompression
> +
> + The upper limit is num_online_cpus() * 2.
> + ========== =============================================
> +
> + If SQUASHFS_CHOICE_DECOMP_BY_MOUNT is **not** set and
> + SQUASHFS_DECOMP_MULTI, SQUASHFS_MOUNT_DECOMP_THREADS are
> + both set:
> +
> + ========== =============================================
> + 2|3|... configure the number of threads used for
> + decompression
> +
> + The upper limit is num_online_cpus() * 2.
> + ========== =============================================
> +
> +=================== =========================================================
> +

Regardless,

Reviewed-by: Bagas Sanjaya <[email protected]>

--
An old man doll... just what I always wanted! - Clara


Attachments:
(No filename) (3.65 kB)
signature.asc (235.00 B)
Download all attachments

2023-11-20 15:48:01

by Phillip Lougher

[permalink] [raw]
Subject: Re: [PATCH v3] docs: filesystems: document the squashfs specific mount options


> On 17/11/2023 16:12 GMT Ariel Miculas <[email protected]> wrote:
>
>
> When SQUASHFS_CHOICE_DECOMP_BY_MOUNT is set, the "threads" mount option
> can be used to specify the decompression mode: single-threaded,
> multi-threaded, percpu or the number of threads used for decompression.
> When SQUASHFS_CHOICE_DECOMP_BY_MOUNT is not set, SQUASHFS_DECOMP_MULTI
> and SQUASHFS_MOUNT_DECOMP_THREADS are both set, the "threads" option can
> also be used to specify the number of threads used for decompression.
> This mount option is only mentioned in fs/squashfs/Kconfig, which makes
> it difficult to find.
>
> Another mount option available is "errors", which can be configured to
> panic the kernel when squashfs errors are encountered.
>
> Add both these options to the squashfs documentation, making them more
> noticeable.
>
> Signed-off-by: Ariel Miculas <[email protected]>

I'm happy with this.

Reviewed-by: Phillip Lougher <[email protected]>

> ---
> V2 -> V3: When SQUASHFS_CHOICE_DECOMP_BY_MOUNT is not set, the "threads"
> mount option also requires SQUASHFS_MOUNT_DECOMP_THREADS to be set, in
> addition to SQUASHFS_DECOMP_MULTI
>
> V1 -> V2: When SQUASHFS_CHOICE_DECOMP_BY_MOUNT is not set, the "threads"
> mount option also requires SQUASHFS_DECOMP_MULTI to be set
>
> Documentation/filesystems/squashfs.rst | 60 ++++++++++++++++++++++++++
> 1 file changed, 60 insertions(+)
>
> diff --git a/Documentation/filesystems/squashfs.rst b/Documentation/filesystems/squashfs.rst
> index df42106bae71..4af8d6207509 100644
> --- a/Documentation/filesystems/squashfs.rst
> +++ b/Documentation/filesystems/squashfs.rst
> @@ -64,6 +64,66 @@ obtained from this site also.
> The squashfs-tools development tree is now located on kernel.org
> git://git.kernel.org/pub/scm/fs/squashfs/squashfs-tools.git
>
> +2.1 Mount options
> +-----------------
> +=================== =========================================================
> +errors=%s Specify whether squashfs errors trigger a kernel panic
> + or not
> +
> + ========== =============================================
> + continue errors don't trigger a panic (default)
> + panic trigger a panic when errors are encountered,
> + similar to several other filesystems (e.g.
> + btrfs, ext4, f2fs, GFS2, jfs, ntfs, ubifs)
> +
> + This allows a kernel dump to be saved,
> + useful for analyzing and debugging the
> + corruption.
> + ========== =============================================
> +threads=%s Select the decompression mode or the number of threads
> +
> + If SQUASHFS_CHOICE_DECOMP_BY_MOUNT is set:
> +
> + ========== =============================================
> + single use single-threaded decompression (default)
> +
> + Only one block (data or metadata) can be
> + decompressed at any one time. This limits
> + CPU and memory usage to a minimum, but it
> + also gives poor performance on parallel I/O
> + workloads when using multiple CPU machines
> + due to waiting on decompressor availability.
> + multi use up to two parallel decompressors per core
> +
> + If you have a parallel I/O workload and your
> + system has enough memory, using this option
> + may improve overall I/O performance. It
> + dynamically allocates decompressors on a
> + demand basis.
> + percpu use a maximum of one decompressor per core
> +
> + It uses percpu variables to ensure
> + decompression is load-balanced across the
> + cores.
> + 1|2|3|... configure the number of threads used for
> + decompression
> +
> + The upper limit is num_online_cpus() * 2.
> + ========== =============================================
> +
> + If SQUASHFS_CHOICE_DECOMP_BY_MOUNT is **not** set and
> + SQUASHFS_DECOMP_MULTI, SQUASHFS_MOUNT_DECOMP_THREADS are
> + both set:
> +
> + ========== =============================================
> + 2|3|... configure the number of threads used for
> + decompression
> +
> + The upper limit is num_online_cpus() * 2.
> + ========== =============================================
> +
> +=================== =========================================================
> +
> 3. Squashfs Filesystem Design
> -----------------------------
>
> --
> 2.42.1