Re: [PATCH v2 8/8] docs: tmpfs: Add casefold options

From: Gabriel Krisman Bertazi
Date: Tue Sep 03 2024 - 12:38:51 EST


André Almeida <andrealmeid@xxxxxxxxxx> writes:

> Document mounting options for casefold support in tmpfs.
>
> Signed-off-by: André Almeida <andrealmeid@xxxxxxxxxx>
> ---
> Documentation/filesystems/tmpfs.rst | 37 +++++++++++++++++++++++++++++
> 1 file changed, 37 insertions(+)
>
> diff --git a/Documentation/filesystems/tmpfs.rst b/Documentation/filesystems/tmpfs.rst
> index 56a26c843dbe..ce24fb16979a 100644
> --- a/Documentation/filesystems/tmpfs.rst
> +++ b/Documentation/filesystems/tmpfs.rst
> @@ -241,6 +241,41 @@ So 'mount -t tmpfs -o size=10G,nr_inodes=10k,mode=700 tmpfs /mytmpfs'
> will give you tmpfs instance on /mytmpfs which can allocate 10GB
> RAM/SWAP in 10240 inodes and it is only accessible by root.
>
> +tmpfs has the following mounting options for case-insesitive lookups support:

insensitive

> +
> +================= ==============================================================
> +casefold Enable casefold support at this mount point using the given
> + argument as the encoding standard. Currently only utf8
> + encodings are supported.
> +strict_encoding Enable strict encoding at this mount point (disabled by
> + default). This means that invalid sequences will be rejected

Invalid sequences is not clear. Perhaps:

In this mode, the filesystem refuses to create file and directory with
names containing invalid UTF-8 characters.


> + by the file system.
> +================= ==============================================================
> +
> +Note that this option doesn't enable casefold by default; one needs to set
> +casefold flag per directory, setting the +F attribute in an empty directory. New
> +directories within a casefolded one will inherit the flag.
> +
> +Example::
> +
> + $ mount -t tmpfs -o casefold=utf8-12.1.0,cf_strict fs_name /mytmpfs

cf_strict should be strict_encoding.

I keep wondering if we should accept 'casefold' without any argument to
just mean the latest encoding version available. Sure, that is a
problem for filesystems that can be moved between systems, but for tmpfs
that is not a problem. It is cumbersome to specify the version and most
will just want the latest.

> + $ cd /mytmpfs # case-sensitive by default
> + $ touch a; touch A
> + $ ls
> + A a
> + $ mkdir B
> + $ cd b
> + cd: The directory 'b' does not exist
> + $ mkdir casefold_dir
> + $ chattr +F casefold_dir/ # marking it as case-insensitive
> + $ cd
> + $ touch dir/a; touch dir/A
> + $ ls dir
> + a
> + $ mkdir B
> + $ cd b
> + $ pwd
> + /home/user/mytmpfs/casefold_dir/B

I don't think we need this example, since it is just generic
how case-insensitiveness work.

>
> :Author:
> Christoph Rohland <cr@xxxxxxx>, 1.12.01
> @@ -250,3 +285,5 @@ RAM/SWAP in 10240 inodes and it is only accessible by root.
> KOSAKI Motohiro, 16 Mar 2010
> :Updated:
> Chris Down, 13 July 2020
> +:Updated:
> + André Almeida, 23 Aug 2024

--
Gabriel Krisman Bertazi