Re: [RFD] A mount api that notices previous mounts

From: Eric W. Biederman
Date: Wed Jan 30 2019 - 08:36:00 EST


David Howells <dhowells@xxxxxxxxxx> writes:

> Karel Zak <kzak@xxxxxxxxxx> wrote:
>
>> It seems more elegant is to ask for Nth option as expected by fsinfo().
>
> More elegant yes, but there's an issue with atomiticity[*]. I'm in the
> process of switching to something that returns you a single buffer with all
> the options in, but each key and each value is preceded by a length count.
>
> The reasons for not using separator characters are:
>
> (1) There's no separator char that cannot validly occur within an option[**].

*Blink* I had missed the cifs issue. So yes we certainly need
a better way to encode things in the buffer. I just used a single
string as an easy way to place everything in a buffer.

> (2) Makes it possible to return binary values if we need to.

I don't totally disagree with this. But I will point out that
except for coda passing a file descriptor there are no filesystems
that currently take or need binary options.

I suspect that as long as userspace supports /etc/fstab and we in turn
support /proc/mounts there is going to be a lot of pressure to keep
the majority of options so they can be encoded in a string separated by
commas.

> David
>
> [*] Atomic with respect to remount calls, that is.

There are also mount options that depend on each other and whose order
matters with respect to other mount options extN's ("sb=<NNNN>") for
example.

> [**] Oh, and look at cifs where you can *change* the separator char during
> option parsing ("sep=<char>").