Re: Reason why "nocache" option is not displayed in "mount"?

From: Alexander Leidinger <Alexander_at_Leidinger.net>
Date: Sat, 09 Mar 2024 19:20:13 UTC
Am 2024-03-09 15:27, schrieb Rick Macklem:
> On Sat, Mar 9, 2024 at 5:08 AM Alexander Leidinger
> <Alexander@leidinger.net> wrote:
>> 
>> Am 2024-03-09 06:07, schrieb Warner Losh:
>> 
>> > On Thu, Mar 7, 2024 at 1:05 PM Jamie Landeg-Jones <jamie@catflap.org>
>> > wrote:
>> >
>> >> Alexander Leidinger <Alexander@Leidinger.net> wrote:
>> >>
>> >>> Hi,
>> >>>
>> >>> what is the reason why "nocache" is not displayed in the output of
>> >>> "mount" for nullfs options?
>> >>
>> >> Good catch. I also notice that "hidden" is not shown either.
>> >>
>> >> I guess that as for some time, "nocache" was a "secret" option, no-one
>> >> update "mount" to display it?
>> >
>> > So a couple of things to know.
>> >
>> > First, there's a list of known options. These are converted to a
>> > bitmask. This is then decoded and reported by mount. The other strings
>> > are passed to the filesystem directly. They decode it and do things,
>> > but they don't export them (that I can find). I believe that's why they
>> > aren't reported with 'mount'. There's a couple of other options in
>> > /etc/fstab that are pseudo options too.
>> 
>> That's the technical explanation why it doesn't work. I'm a step 
>> further
>> since initial mail, I even had a look at the code and know that 
>> nocache
>> is recorded in a nullfs private flag and that the userland can not
>> access this (mount looks at struct statfs which doesn't provide info 
>> to
>> this and some other things).
>> 
>> My question was targeted more in the direction if there is a 
>> conceptual
>> reason or if it was an oversight that it is not displayed. I admit 
>> that
>> this was lost in translation...
>> 
>> Regarding the issue of not being able to see all options which are in
>> effect for a given mount point (not specific to nocache): I consider
>> this to be a bug.
>> Pseudo options like "late" or "noauto" in fstab which don't make sense
>> to use when you use mount(8) a FS by hand, I do not consider here.
> As a data point, I added the "-m"option to nfsstat(1) so that all the 
> nfs
> related options get displayed.
> 
> Part of the problem is that this will be file system specific, since 
> nmount()
> defers processing options to the file systems.

There exists values for a lot of the mount opions which are not 
displayed. For example the nocache option for nullfs is 
MNTK_NULL_NOCACHE in
     https://cgit.freebsd.org/src/tree/sys/sys/mount.h#n515
This may not be useable as is, but I use it to show that there are 
already bits public about it, just not in the proper place to be useful 
to the userland.

Even FS specific options could be set as part of statfs (by letting the 
FS set them in struct statfs). Or there could be a per-mount callback / 
ioctl / whatever which provides the options in some way to the userland 
if requested.

So we either have something which could be used but requires some 
interface to let a FS set a value somewhere, or if this is a too gross 
hack, we would need to come up with a new interface to query this info.

Bye,
Alexander.

-- 
http://www.Leidinger.net Alexander@Leidinger.net: PGP 0x8F31830F9F2772BF
http://www.FreeBSD.org    netchild@FreeBSD.org  : PGP 0x8F31830F9F2772BF