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

From: Phillip Lougher
Date: Mon Nov 20 2023 - 10:45:51 EST



> On 17/11/2023 16:12 GMT Ariel Miculas <amiculas@xxxxxxxxx> 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 <amiculas@xxxxxxxxx>

I'm happy with this.

Reviewed-by: Phillip Lougher <phillip@xxxxxxxxxxxxxxx>

> ---
> 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