Date: Tue, 28 May 2019 10:00:36 -0700 From: Kirk McKusick <mckusick@mckusick.com> To: Mark Johnston <markj@freebsd.org> Cc: svn-src-head@freebsd.org Subject: Re: svn commit: r348300 - head/sys/ufs/ffs Message-ID: <201905281700.x4SH0aE2037260@chez.mckusick.com> In-Reply-To: <20190527201500.GE82831@raichu>
next in thread | previous in thread | raw e-mail | index | archive | help
> Date: Mon, 27 May 2019 16:15:00 -0400 > From: Mark Johnston <markj@freebsd.org> > To: Kirk McKusick <mckusick@freebsd.org> > Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, > svn-src-head@freebsd.org > Subject: Re: svn commit: r348300 - head/sys/ufs/ffs > = > On Mon, May 27, 2019 at 06:22:44AM +0000, Kirk McKusick wrote: >> Author: mckusick >> Date: Mon May 27 06:22:43 2019 >> New Revision: 348300 >> URL: https://svnweb.freebsd.org/changeset/base/348300 >> = >> Log: >> Add function name and line number debugging information to softupdate= s >> worklist structures to help track their movement between work lists. >> No functional change to the operation of soft updates intended. >> = >> Modified: >> head/sys/ufs/ffs/ffs_softdep.c >> head/sys/ufs/ffs/softdep.h >> = >> [...] >> Modified: head/sys/ufs/ffs/softdep.h >> =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 >> --- head/sys/ufs/ffs/softdep.h Mon May 27 04:20:31 2019 (r348299) >> +++ head/sys/ufs/ffs/softdep.h Mon May 27 06:22:43 2019 (r348300) >> @@ -213,6 +213,10 @@ struct worklist { >> struct mount *wk_mp; /* Mount we live in */ >> unsigned int wk_type:8, /* type of request */ >> wk_state:24; /* state flags */ >> +#ifdef DEBUG >> + const char *wk_func; /* func where added / removed */ >> + int wk_line; /* line where added / removed */ >> +#endif >> }; >> #define WK_DATA(wk) ((void *)(wk)) >> #define WK_PAGEDEP(wk) ((struct pagedep *)(wk)) > = > ffs_softdep.c defines DEBUG, while ffs_alloc.c (which includes > softdep.h) does not. A result of this is that the kernel's type info > used by DTrace contains two different definitions of struct worklist, > which has a sort of snowball effect since we end up with two definitions > of each structure containing a struct worklist *, and so on. > = > Could we turn DEBUG into a proper kernel configuration option so that > it's defined consistently everywhere, or just use INVARIANTS/DIAGNOSTIC > instead? I am happy to do the work if we can agree on a direction. > = > DEBUG is used only in the SU, snapshot and the block allocation code. > In ffs_alloc.c it is used to enable some debug printfs (which are > themselves conditionalized on a sysctl var). It is used similarly in > ffs_snapshot.c. In ffs_softdep.c (which also has SUJ_DEBUG) it enables > some consistency checking. INVARIANTS seems to me like a reasonable > option to use in ffs_softdep.c, and perhaps the others as well. Thanks for pointing out this problem. DEBUG is left over from the CSRG days (1980's :-) and should have been purged decades ago. I have converted its use in ffs_snapshot.c and ffs_alloc.c to DIAGNOSTIC. In ffs_softdep.c I have converted DEBUG and SUJ_DEBUG to INVARIANTS. Kirk
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201905281700.x4SH0aE2037260>