Re: [PATCH v2 5/6] shmem: update documentation

From: Luis Chamberlain
Date: Tue Apr 18 2023 - 17:20:15 EST


On Mon, Apr 17, 2023 at 10:29:59PM -0700, Hugh Dickins wrote:
> On Thu, 9 Mar 2023, Luis Chamberlain wrote:
>
> > Update the docs to reflect a bit better why some folks prefer tmpfs
> > over ramfs and clarify a bit more about the difference between brd
> > ramdisks.
> >
> > While at it, add THP docs for tmpfs, both the mount options and the
> > sysfs file.
>
> Okay: the original canonical reference for THP options on tmpfs has
> been Documentation/admin-guide/mm/transhuge.rst. You're right that
> they would be helpful here too: IIRC (but I might well be confusing
> with our Google tree) we used to have them documented in both places,
> but grew tired of keeping the two in synch. You're volunteering to
> do so! so please check now that they tell the same story.

Hehe. Sure, we should just make one point to the other. Which one should
be the authoritive source?

> But nowadays, "man 5 tmpfs" is much more important (and that might
> give you a hint for what needs to be done after this series goes into
> 6.4-rc - and I wonder if there are tmpfs manpage updates needed from
> Christian for idmapped too? or already taken care of?).

Sure, what's the man page git tree to use? I can do that once these
documents are settled as well. I'll send fixes.

> There's a little detail we do need you to remove, indicated below.
>
> > +====== ============================================================
> > +huge=0 never: disables huge pages for the mount
> > +huge=1 always: enables huge pages for the mount
> > +huge=2 within_size: only allocate huge pages if the page will be
> > + fully within i_size, also respect fadvise()/madvise() hints.
> > +huge=3 advise: only allocate huge pages if requested with
> > + fadvise()/madvise()
>
> You're taking the source too literally there. Minor point is that there
> is no fadvise() for this, to date anyway. Major point is: have you tried
> mounting tmpfs with huge=0 etc? I did propose "huge=0" and "huge=1" years
> ago, but those "never" went in, it's "always" been the named options.
> Please remove those misleading numbers, it's "huge=never" etc.

Will do.

> > +== ============================================================
> > +-1 deny: disables huge on shm_mnt and all mounts, for
> > + emergency use
> > +-2 force: enables huge on shm_mnt and all mounts, w/o needing
> > + option, for testing
>
> Likewise here, please delete the invalid "-1" and "-2" notations,
> -1 and -2 are just #defines for use in the kernel source.

ok!

> And the description above is not quite accurate: it is very hard to
> describe shmem_enabled, partly because it combines two different things.
> It's partly the "huge=" mount option for any "internal mount", those
> things like SysV SHM and memfd and i915 and shared-anonymous: the shmem
> which has no user-visible mount to hold the option. But also these
> "deny" and "force" overrides affecting *all* internal and visible mounts.

I see thanks.

Luis