Re: git: 2c1963d46335 - main - procfs rlimit: handle pipebuf [and related] :pipebuf . . . Invalid argument

From: Mark Millard <marklmi_at_yahoo.com>
Date: Sun, 06 Oct 2024 07:40:44 UTC
On Oct 5, 2024, at 23:30, Konstantin Belousov <kostikbel@gmail.com> wrote:

> On Sat, Oct 05, 2024 at 06:14:40PM -0700, Mark Millard wrote:
>> Konstantin Belousov <kib_at_FreeBSD.org> wrote on
>> Date: Fri, 20 Sep 2024 21:09:29 UTC :
>> 
>>> The branch main has been updated by kib:
>>> 
>>> URL: https://cgit.FreeBSD.org/src/commit/?id=2c1963d46335576d29fe21a4e7b424c47b711ef4
>>> 
>>> commit 2c1963d46335576d29fe21a4e7b424c47b711ef4
>>> Author: Konstantin Belousov <kib@FreeBSD.org>
>>> AuthorDate: 2024-09-20 15:04:06 +0000
>>> Commit: Konstantin Belousov <kib@FreeBSD.org>
>>> CommitDate: 2024-09-20 21:08:51 +0000
>>> 
>>> procfs rlimit: handle pipebuf
>>> 
>>> Sponsored by: The FreeBSD Foundation
>>> MFC after: 1 week
>>> ---
>>> sys/sys/resource.h | 3 ++-
>>> 1 file changed, 2 insertions(+), 1 deletion(-)
>>> 
>>> diff --git a/sys/sys/resource.h b/sys/sys/resource.h
>>> index c18e45d50b30..81346028f1ed 100644
>>> --- a/sys/sys/resource.h
>>> +++ b/sys/sys/resource.h
>>> @@ -127,7 +127,7 @@ struct __wrusage {
>>> */
>>> 
>>> #ifdef _RLIMIT_IDENT
>>> -static const char *rlimit_ident[RLIM_NLIMITS] = {
>>> +static const char *rlimit_ident[] = {
>>> "cpu",
>>> "fsize",
>>> "data",
>>> @@ -143,6 +143,7 @@ static const char *rlimit_ident[RLIM_NLIMITS] = {
>>> "swap",
>>> "kqueues",
>>> "umtx",
>>> + "pipebuf",
>>> };
>>> #endif
>> 
>> As part of an experiment I just had 1500024 (somewhat after the
>> libmd.so.{6 -> 7} update) boot with a 1500023 kernel that was
>> somewhat before the fairly recent pipebuf related changes, such
>> as the above. This produced a bunch of error messages, such as:
>> 
>> 
>> . . .
>> ugen0.7: <Microchip Hub Feature Controller> at usbus0 (disconnected)
>> Warning: no time-of-day clock registered, system time will not be set accurately
>> 2024-10-05T17:33:58.032649-07:00 - init 20 - - getting pipebuf resource limit: Invalid argument
>> . . .
>> Starting devd.
>> limits: setrlimit pipebuf: Invalid argument
>> /etc/rc: WARNING: failed to start devd
>> Waiting 30s for the default route interface: .............................
>> . . .
>> Starting syslogd.
>> limits: setrlimit pipebuf: Invalid argument
>> /etc/rc: WARNING: failed to start syslogd
>> . . .
>> Starting rpcbind.
>> limits: setrlimit pipebuf: Invalid argument
>> /etc/rc: WARNING: failed to start rpcbind
>> NFS access cache time=60
>> Starting ntpd.
>> limits: setrlimit pipebuf: Invalid argument
>> /etc/rc: WARNING: failed to start ntpd
>> . . .
>> Starting rpcbind.
>> limits: setrlimit pipebuf: Invalid argument
>> /etc/rc.d/mountd: WARNING: Unable to force rpcbind. It may already be running.
>> Starting mountd.
>> limits: setrlimit pipebuf: Invalid argument
>> /etc/rc: WARNING: Unable to force mountd. It may already be running.
>> /etc/rc: WARNING: failed precmd routine for nfsd
>> . . .
>> Starting sshd.
>> limits: setrlimit pipebuf: Invalid argument
>> /etc/rc: WARNING: failed to start sshd
>> Starting cron.
>> limits: setrlimit pipebuf: Invalid argument
>> /etc/rc: WARNING: failed to start cron
>> . . .
>> 2024-10-06T00:34:50.800786-07:00 aarch64-main-pbase init 1014 - - getting pipebuf resource limit: Invalid argument
>> 2024-10-06T00:34:50.800858-07:00 aarch64-main-pbase init 1015 - - getting pipebuf resource limit: Invalid argument
>> 2024-10-06T00:34:50.800939-07:00 aarch64-main-pbase init 1016 - - getting pipebuf resource limit: Invalid argument
>> 2024-10-06T00:34:50.801101-07:00 aarch64-main-pbase init 1018 - - getting pipebuf resource limit: Invalid argument
>> 2024-10-06T00:34:50.801090-07:00 aarch64-main-pbase init 1017 - - getting pipebuf resource limit: Invalid argument
>> 2024-10-06T00:34:50.801240-07:00 aarch64-main-pbase init 1020 - - getting pipebuf resource limit: Invalid argument
>> 2024-10-06T00:34:50.801250-07:00 aarch64-main-pbase init 1019 - - getting pipebuf resource limit: Invalid argument
>> 2024-10-06T00:34:50.801406-07:00 aarch64-main-pbase init 1021 - - getting pipebuf resource limit: Invalid argument
>> ugen0.6: <PixArt USB Optical Mouse> at usbus0
>> 2024-10-06T00:35:08.833554-07:00 aarch64-main-pbase login 1014 - - login on ttyv0 as root
>> 2024-10-06T00:35:08.833623-07:00 aarch64-main-pbase login 1014 - - ROOT LOGIN (root) ON ttyv0
>> 2024-10-06T00:35:08.835269-07:00 aarch64-main-pbase login 1022 - - getting pipebuf resource limit: Invalid argument
>> . . .
>> 
>> 
>> It seems related changes introducing incompatibility with even
>> recent older kernels should have had a __FreeBSD_version update
>> and might need to be documented for the now-existing
>> incompatibility with most of the 1500023 and older history?
> 
> We do not provide forward compatibility between kernel and userspace.
> User binaries must be newer than kernel.

Well, the official port-packing builders frequently use
combinations like:

Host OSVERSION: 1500023 [So: kernel and world]
Jail OSVERSION: 1500024 [So: Jail world, still 1500023 kernel]

I temporarily had kernel: 1500023 (not very old) and world:
1500024, no jail or chroot involved in the activity. [This
was by accident of timing, not a deliberate status.]

I expect that a world from just before 1500024 would have had
the same sort of results, with both then being 1500023, which
is part of why I reported what I did. [The change to 1500024
is not tied to the pipebuf changes but to libmd updates.]

Are you suggesting that I should not expect two 1500023's
(one kernel, one world) to be compatible unless I also know
the more detailed timing relationship within 1500023's
span? I though the ordering principles were for across
distinct values, not for the same value. If I was wrong,
it would be good to know that explicitly.


===
Mark Millard
marklmi at yahoo.com