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

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

 



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?



[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