On Tue, 25 Jun 2024 14:26:05 +0100 Tvrtko Ursulin <tursulin@xxxxxxxxxx> wrote: > From: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxxx> > > If a task has had MPOL_F_NUMA_BALANCING set it is useful to show that in > procfs. Teach the mpol_to_str helper about its existance and while at it > update the comment to account for "weighted interleave" when suggesting > a recommended buffer size. > > ... > > --- a/mm/mempolicy.c > +++ b/mm/mempolicy.c > @@ -3293,8 +3293,9 @@ int mpol_parse_str(char *str, struct mempolicy **mpol) > * @pol: pointer to mempolicy to be formatted > * > * Convert @pol into a string. If @buffer is too short, truncate the string. > - * Recommend a @maxlen of at least 32 for the longest mode, "interleave", the > - * longest flag, "relative", and to display at least a few node ids. > + * Recommend a @maxlen of at least 42 for the longest mode, "weighted > + * interleave", the longest flag, "balancing", and to display at least a few > + * node ids. > */ > void mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol) > { > @@ -3331,12 +3332,15 @@ void mpol_to_str(char *buffer, int maxlen, struct mempolicy *pol) > p += snprintf(p, buffer + maxlen - p, "="); > > /* > - * Currently, the only defined flags are mutually exclusive > + * The below two flags are mutually exclusive: > */ > if (flags & MPOL_F_STATIC_NODES) > p += snprintf(p, buffer + maxlen - p, "static"); > else if (flags & MPOL_F_RELATIVE_NODES) > p += snprintf(p, buffer + maxlen - p, "relative"); > + > + if (flags & MPOL_F_NUMA_BALANCING) > + p += snprintf(p, buffer + maxlen - p, "balancing"); > } > > if (!nodes_empty(nodes)) Is it strange to report this via mount options? `static' and `relative' can be set via mount options but afaict `balancing' cannot? I guess not... Documentation/filesystems/tmpfs.rst appears to be a suitable place to document this new userspace API please.