Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 15 May 2012 23:38:32 +0300
From:      Konstantin Belousov <kostikbel@gmail.com>
To:        Andriy Gapon <avg@freebsd.org>
Cc:        svn-src-stable@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-stable-9@freebsd.org
Subject:   Re: svn commit: r235480 - in stable/9/sys: dev/usb geom geom/mountver i386/conf kern sys
Message-ID:  <20120515203832.GE2358@deviant.kiev.zoral.com.ua>
In-Reply-To: <4FB2B7C5.2080604@FreeBSD.org>
References:  <201205151721.q4FHLlgq097452@svn.freebsd.org> <20120515182747.GD2358@deviant.kiev.zoral.com.ua> <4FB2B7C5.2080604@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--r7U+bLA8boMOj+mD
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Tue, May 15, 2012 at 11:08:37PM +0300, Andriy Gapon wrote:
> on 15/05/2012 21:27 Konstantin Belousov said the following:
> > On Tue, May 15, 2012 at 05:21:47PM +0000, Andriy Gapon wrote:
> >> Author: avg Date: Tue May 15 17:21:46 2012 New Revision: 235480 URL:
> >> http://svn.freebsd.org/changeset/base/235480
> >>=20
> >> Log: MFC r230643: stop_scheduler -> td_stopsched Modified:
> >> stable/9/sys/sys/proc.h=20
> >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D
> >>
> >>=20
> --- stable/9/sys/sys/proc.h	Tue May 15 17:11:00 2012	(r235479)
> >> +++ stable/9/sys/sys/proc.h	Tue May 15 17:21:46 2012	(r235480) @@ -235=
,6
> >> +235,7 @@ struct thread { short		td_locks;	/* (k) Count of non-spin
> >> locks. */ short		td_rw_rlocks;	/* (k) Count of rwlock read locks. */=
=20
> >> short		td_lk_slocks;	/* (k) Count of lockmgr shared locks. */ +	short
> >> td_stopsched;	/* (k) Scheduler stopped. */ struct turnstile *td_blocke=
d;
> >> /* (t) Lock thread is blocked on. */ const char	*td_lockname;	/* (t) N=
ame
> >> of lock blocked on. */ LIST_HEAD(, turnstile) td_contested;	/* (q)
> >> Contested locks. */
> >>=20
> > Did you verified that there is a gap between td_lk_slocks and td_blocke=
d an
> > all tier-1 architectures large enough to adopt td_stopsched without=20
> > changing the layout of struct thread after the new member ?
>=20
> I haven't verified that. but I presumed that the gap was either 2 bytes on
> 32-bit architectures or 6 bytes on 64-bit ones.
> What is the proper and doable way of verifying this?
I think that p sizeof(struct thread) from gdb on previous and current
version of the kernel would be a good indicator. If sizes differ, it is
bad.

To be completely sure, calculate offset of the next member in the structure:
in gdb,
p &(((struct thread *)0)->td_blocked)
for previous and current kernels.

>=20
> > If not, this breaks KBI.
>=20
> I can just revert the commit to not risk an obscure breakage.
> What would you suggest?
Move the new member to the end of the struct thread, and do explicit
zeroing on the thread allocation, if commit changed the layout.

>=20
> Thank you for spotting this.
> --=20
> Andriy Gapon

--r7U+bLA8boMOj+mD
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (FreeBSD)

iEYEARECAAYFAk+yvsgACgkQC3+MBN1Mb4iMlwCeLxPP12Ha0t2J92rRBHKMLlNd
bxkAoIpLVqddzFQZsD/Hpph/I6qZxwKy
=NBWx
-----END PGP SIGNATURE-----

--r7U+bLA8boMOj+mD--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120515203832.GE2358>