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>