Re: [PATCH 00/11] xfsprogs: remove unneeded #includes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jan 30, 2020 at 10:59:22AM -0600, Eric Sandeen wrote:
> On 6/20/19 5:06 PM, Dave Chinner wrote:
> > On Thu, Jun 20, 2019 at 04:29:23PM -0500, Eric Sandeen wrote:
> >> This is the result of a mechanical process and ... may have a few
> >> oddities, for example removing "init.h" from some utils made me
> >> realize that we inherit it from libxfs and also have it in local
> > 
> > We do? That'd be really, really broken if we did - including local
> > header files from a global header files is not a good idea.
> > 
> > /me goes looking, can't find where libxfs.h includes init.h
> > 
> > libxfs/init.h is private to libxfs/, it's not a global include file,
> > and it is included directly in all the libxfs/*.c files that need
> > it, which is 3 files - init.c, rdwr.c and util.c. 
> > 
> >> headers; libxfs has a global but so does scrub, etc.  So that stuff
> >> can/should be fixed up, but in the meantime, this zaps out a ton
> >> of header dependencies, and seems worthwhile.
> > 
> > IMO, this doesn't improve the tangle of header files in userspace.
> > All it does is make the include patterns inconsistent across files
> > because of the tangled mess of the libxfs/ vs include/ header files
> > that was never completely resolved when libxfs was created as a
> > shared kernel library....
> > 
> > IOWs, the include pattern I was originally aiming for with the
> > libxfs/ shared userspace/kernel library was:
> > 
> > #include "libxfs_priv.h"
> > <include shared kernel header files>
> > 
> > And for things outside libxfs/ that use libxfs:
> > 
> > #include "libxfs.h"
> > <include local header files>
> > 
> > IOWs, "libxfs_priv.h" contained the includes for all the local
> > userspace libxfs includes and defines and non-shared support
> > structures, and it would export on build all the header files that
> > external code needs to build into include/ via symlinks. This is
> > incomplete - stuff like include/xfs_mount.h, xfs_inode.h, etc needs
> > to move into libxfs as private header files (similar to how they are
> > private in the kernel) and then exported at build time.
> > 
> > Likewise, "libxfs.h" should only contain global include files and
> > those exported from libxfs, and that's all the external code should
> > include to use /anything/ from libxfs. i.e.  a single include forms
> > the external interface to libxfs.
> > 
> > AFAIC, nothing should be including platform or build dependent
> > things like platform_defs.h, because that should be pulled in by
> > libxfs.h or libxfs_priv.h. And nothing external should need to pull
> > in, say, xfs_format.h or xfs_mount.h, because they are all pulled in
> > by include/libxfs.h (which it mostly does already).
> > 
> > Hence I'd prefer we finish untangling the header file include mess
> > before we cull unneceesary includes. Otherwise we are going to end
> > up culling the wrong includes and then have to clean up that mess as
> > well to bring the code back to being clean and consistent....
> 
> Dave, what if I reworked this to only remove unneeded system include files
> for now.  Would you be more comfortable with that?  I assume there's no
> argument with i.e.
> 
> diff --git a/estimate/xfs_estimate.c b/estimate/xfs_estimate.c
> index 9e01cce..189bb6c 100644
> --- a/estimate/xfs_estimate.c
> +++ b/estimate/xfs_estimate.c
> @@ -10,7 +10,6 @@
>   * XXX: assumes dirv1 format.
>   */
>  #include "libxfs.h"
> -#include <sys/stat.h>
>  #include <ftw.h>
> 
> right?

*nod*

That sort of thing can easily be cleaned up.

-Dave.
-- 
Dave Chinner
david@xxxxxxxxxxxxx



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux