Re: git: 8c0d1eca7834 - main - sockbuf: retain backward compatibility with userland after d59bc188d652
- Reply: Mateusz Guzik : "Re: git: 8c0d1eca7834 - main - sockbuf: retain backward compatibility with userland after d59bc188d652"
- In reply to: Mateusz Guzik : "Re: git: 8c0d1eca7834 - main - sockbuf: retain backward compatibility with userland after d59bc188d652"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 31 May 2022 20:19:42 UTC
> On 31 May 2022, at 15:33, Mateusz Guzik <mjguzik@gmail.com> wrote: > > On 5/30/22, Alexander V. Chernikov <melifaro@ipfw.ru> wrote: >> >> >> 30.05.2022, 16:18, "Mateusz Guzik" <mjguzik@gmail.com>: >>> >>> should probably CTASSERT on size then >> >> Sorry, I’m afraid I don’t get it. Could you please clarify? >>> > > diff --git a/sys/sys/socketvar.h b/sys/sys/socketvar.h > index 249e0800f915..5fc21206b1bf 100644 > --- a/sys/sys/socketvar.h > +++ b/sys/sys/socketvar.h > @@ -586,6 +586,14 @@ struct xsocket { > } so_rcv, so_snd; > }; > > +#if _LP64 > +_Static_assert(sizeof(struct xsocket) == 240, "bad”) Ah, got it! Well, the rationale for the commit was not to absolutely prevent structure size changes - there may be many perfectly valid reasons to do so. IIRC policy suggests it acceptable between the major revisions. In the case of original change - removal of mbuf counters - backward compatibility (e.g. keeping structure size the same) does not cost us anything. sockstat(1) from 13 will work on 14 (at least for now). > +#elsif _LP32 > +.... > +#else > +#error "port me" > +#endif > + > #ifdef _KERNEL > void sotoxsocket(struct socket *so, struct xsocket *xso); > void sbtoxsockbuf(struct sockbuf *sb, struct xsockbuf *xsb); > >>> On 5/30/22, Alexander V. Chernikov <melifaro@freebsd.org> wrote: >>>> >>>> The branch main has been updated by melifaro: >>>> >>>> URL: >>>> https://cgit.FreeBSD.org/src/commit/?id=8c0d1eca7834bfd5a05c86bf20a7600917057492 >>>> >>>> commit 8c0d1eca7834bfd5a05c86bf20a7600917057492 >>>> Author: Alexander V. Chernikov <melifaro@FreeBSD.org> >>>> AuthorDate: 2022-05-30 14:56:25 +0000 >>>> Commit: Alexander V. Chernikov <melifaro@FreeBSD.org> >>>> CommitDate: 2022-05-30 15:10:53 +0000 >>>> >>>> sockbuf: retain backward compatibility with userland after >>>> d59bc188d652 >>>> >>>> Add spare fields to xsockbuf in place of sb_mcnt / sb_ccnt to avoid >>>> rebuilding userland binaries like sockstat(1). >>>> >>>> Reviewed by: glebius >>>> --- >>>> sys/sys/socketvar.h | 2 ++ >>>> 1 file changed, 2 insertions(+) >>>> >>>> diff --git a/sys/sys/socketvar.h b/sys/sys/socketvar.h >>>> index 52b9376f0559..249e0800f915 100644 >>>> --- a/sys/sys/socketvar.h >>>> +++ b/sys/sys/socketvar.h >>>> @@ -577,6 +577,8 @@ struct xsocket { >>>> uint32_t sb_cc; >>>> uint32_t sb_hiwat; >>>> uint32_t sb_mbcnt; >>>> + uint32_t sb_spare0; /* was sb_mcnt */ >>>> + uint32_t sb_spare1; /* was sb_ccnt */ >>>> uint32_t sb_mbmax; >>>> int32_t sb_lowat; >>>> int32_t sb_timeo; >>>> >>> >>> >>> -- >>> Mateusz Guzik <mjguzik gmail.com> >> > > > -- > Mateusz Guzik <mjguzik gmail.com>