diff mbox series

[02/12] libxfs: move topology declarations into separate header

Message ID 156633308405.1215978.11329921136072672886.stgit@magnolia (mailing list archive)
State Superseded
Headers show
Series xfsprogs-5.3: various fixes | expand

Commit Message

Darrick J. Wong Aug. 20, 2019, 8:31 p.m. UTC
From: Darrick J. Wong <darrick.wong@oracle.com>

The topology functions live in libfrog now, which means their
declarations don't belong in libxcmd.h.  Create new header file for
them.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
---
 include/libxcmd.h  |   31 -------------------------------
 include/topology.h |   39 +++++++++++++++++++++++++++++++++++++++
 libfrog/topology.c |    1 +
 mkfs/xfs_mkfs.c    |    2 +-
 repair/sb.c        |    1 +
 5 files changed, 42 insertions(+), 32 deletions(-)
 create mode 100644 include/topology.h

Comments

Dave Chinner Aug. 30, 2019, 5:43 a.m. UTC | #1
On Tue, Aug 20, 2019 at 01:31:24PM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
> 
> The topology functions live in libfrog now, which means their
> declarations don't belong in libxcmd.h.  Create new header file for
> them.
> 
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> ---
>  include/libxcmd.h  |   31 -------------------------------
>  include/topology.h |   39 +++++++++++++++++++++++++++++++++++++++
>  libfrog/topology.c |    1 +
>  mkfs/xfs_mkfs.c    |    2 +-
>  repair/sb.c        |    1 +
>  5 files changed, 42 insertions(+), 32 deletions(-)
>  create mode 100644 include/topology.h

I like the idea, but I'm wondering if we should have a similar
setup to libxfs header files here.

i.e. the header file lives in libfrog/, and the install-headers make
command creates include/libxfrog and links them for the build. That
way the includes become namespaced like:

#include "libxfrog/topology,h"

and we don't pollute include with random header files from all
different parts of xfsprogs...

Cheers,

Dave.
Darrick J. Wong Aug. 30, 2019, 8:34 p.m. UTC | #2
> > From: Darrick J. Wong <darrick.wong@oracle.com>
> > 
> > The topology functions live in libfrog now, which means their
> > declarations don't belong in libxcmd.h.  Create new header file for
> > them.
> > 
> > Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> > ---
> >  include/libxcmd.h  |   31 -------------------------------
> >  include/topology.h |   39 +++++++++++++++++++++++++++++++++++++++
> >  libfrog/topology.c |    1 +
> >  mkfs/xfs_mkfs.c    |    2 +-
> >  repair/sb.c        |    1 +
> >  5 files changed, 42 insertions(+), 32 deletions(-)
> >  create mode 100644 include/topology.h
> 
> I like the idea, but I'm wondering if we should have a similar
> setup to libxfs header files here.
> 
> i.e. the header file lives in libfrog/, and the install-headers make
> command creates include/libxfrog and links them for the build. That
> way the includes become namespaced like:
> 
> #include "libxfrog/topology,h"
> 
> and we don't pollute include with random header files from all
> different parts of xfsprogs...

What if I leave topology.h in libfrog/ and then create an
include/libfrog.h that pulls in all the libfrog header files like
libxfs.h does, and then put -I$(TOPDIR)/libfrog in GCFLAGS?

--D

> Cheers,
> 
> Dave.
> -- 
> Dave Chinner
> david@fromorbit.com
Dave Chinner Sept. 2, 2019, 10:33 p.m. UTC | #3
On Fri, Aug 30, 2019 at 01:34:02PM -0700, Darrick J. Wong wrote:
> > > From: Darrick J. Wong <darrick.wong@oracle.com>
> > > 
> > > The topology functions live in libfrog now, which means their
> > > declarations don't belong in libxcmd.h.  Create new header file for
> > > them.
> > > 
> > > Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> > > ---
> > >  include/libxcmd.h  |   31 -------------------------------
> > >  include/topology.h |   39 +++++++++++++++++++++++++++++++++++++++
> > >  libfrog/topology.c |    1 +
> > >  mkfs/xfs_mkfs.c    |    2 +-
> > >  repair/sb.c        |    1 +
> > >  5 files changed, 42 insertions(+), 32 deletions(-)
> > >  create mode 100644 include/topology.h
> > 
> > I like the idea, but I'm wondering if we should have a similar
> > setup to libxfs header files here.
> > 
> > i.e. the header file lives in libfrog/, and the install-headers make
> > command creates include/libxfrog and links them for the build. That
> > way the includes become namespaced like:
> > 
> > #include "libxfrog/topology,h"
> > 
> > and we don't pollute include with random header files from all
> > different parts of xfsprogs...
> 
> What if I leave topology.h in libfrog/ and then create an
> include/libfrog.h that pulls in all the libfrog header files like
> libxfs.h does, and then put -I$(TOPDIR)/libfrog in GCFLAGS?

libxfs is a basket case - it's done that way so we don't need all
the whacky games we play to shim the kernel functionality correctly
in every xfsprogs file that needs libxfs functionality.

libxfrog is very different - we have progs that just need topology
or number conversion, but not both. I'd prefer for libxfrog we only
include the headers we require, that way avoiding defining things we
don't actually need...

Cheers,

Dave.
Darrick J. Wong Sept. 3, 2019, 3:16 a.m. UTC | #4
On Tue, Sep 03, 2019 at 08:33:46AM +1000, Dave Chinner wrote:
> On Fri, Aug 30, 2019 at 01:34:02PM -0700, Darrick J. Wong wrote:
> > > > From: Darrick J. Wong <darrick.wong@oracle.com>
> > > > 
> > > > The topology functions live in libfrog now, which means their
> > > > declarations don't belong in libxcmd.h.  Create new header file for
> > > > them.
> > > > 
> > > > Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> > > > ---
> > > >  include/libxcmd.h  |   31 -------------------------------
> > > >  include/topology.h |   39 +++++++++++++++++++++++++++++++++++++++
> > > >  libfrog/topology.c |    1 +
> > > >  mkfs/xfs_mkfs.c    |    2 +-
> > > >  repair/sb.c        |    1 +
> > > >  5 files changed, 42 insertions(+), 32 deletions(-)
> > > >  create mode 100644 include/topology.h
> > > 
> > > I like the idea, but I'm wondering if we should have a similar
> > > setup to libxfs header files here.
> > > 
> > > i.e. the header file lives in libfrog/, and the install-headers make
> > > command creates include/libxfrog and links them for the build. That
> > > way the includes become namespaced like:
> > > 
> > > #include "libxfrog/topology,h"
> > > 
> > > and we don't pollute include with random header files from all
> > > different parts of xfsprogs...
> > 
> > What if I leave topology.h in libfrog/ and then create an
> > include/libfrog.h that pulls in all the libfrog header files like
> > libxfs.h does, and then put -I$(TOPDIR)/libfrog in GCFLAGS?
> 
> libxfs is a basket case - it's done that way so we don't need all
> the whacky games we play to shim the kernel functionality correctly
> in every xfsprogs file that needs libxfs functionality.
> 
> libxfrog is very different - we have progs that just need topology
> or number conversion, but not both. I'd prefer for libxfrog we only
> include the headers we require, that way avoiding defining things we
> don't actually need...

Ok, will rework this tomorrow.

--D

> Cheers,
> 
> Dave.
> -- 
> Dave Chinner
> david@fromorbit.com
Darrick J. Wong Sept. 3, 2019, 5:15 p.m. UTC | #5
On Tue, Sep 03, 2019 at 08:33:46AM +1000, Dave Chinner wrote:
> On Fri, Aug 30, 2019 at 01:34:02PM -0700, Darrick J. Wong wrote:
> > > > From: Darrick J. Wong <darrick.wong@oracle.com>
> > > > 
> > > > The topology functions live in libfrog now, which means their
> > > > declarations don't belong in libxcmd.h.  Create new header file for
> > > > them.
> > > > 
> > > > Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> > > > ---
> > > >  include/libxcmd.h  |   31 -------------------------------
> > > >  include/topology.h |   39 +++++++++++++++++++++++++++++++++++++++
> > > >  libfrog/topology.c |    1 +
> > > >  mkfs/xfs_mkfs.c    |    2 +-
> > > >  repair/sb.c        |    1 +
> > > >  5 files changed, 42 insertions(+), 32 deletions(-)
> > > >  create mode 100644 include/topology.h
> > > 
> > > I like the idea, but I'm wondering if we should have a similar
> > > setup to libxfs header files here.
> > > 
> > > i.e. the header file lives in libfrog/, and the install-headers make
> > > command creates include/libxfrog and links them for the build. That
> > > way the includes become namespaced like:
> > > 
> > > #include "libxfrog/topology,h"
> > > 
> > > and we don't pollute include with random header files from all
> > > different parts of xfsprogs...
> > 
> > What if I leave topology.h in libfrog/ and then create an
> > include/libfrog.h that pulls in all the libfrog header files like
> > libxfs.h does, and then put -I$(TOPDIR)/libfrog in GCFLAGS?
> 
> libxfs is a basket case - it's done that way so we don't need all
> the whacky games we play to shim the kernel functionality correctly
> in every xfsprogs file that needs libxfs functionality.
> 
> libxfrog is very different - we have progs that just need topology
> or number conversion, but not both. I'd prefer for libxfrog we only
> include the headers we require, that way avoiding defining things we
> don't actually need...

Ok.  I will go clean that up too....

--D

> Cheers,
> 
> Dave.
> -- 
> Dave Chinner
> david@fromorbit.com
diff mbox series

Patch

diff --git a/include/libxcmd.h b/include/libxcmd.h
index 20e5d834..7b889b0a 100644
--- a/include/libxcmd.h
+++ b/include/libxcmd.h
@@ -10,35 +10,4 @@ 
 #include "libxfs.h"
 #include <sys/time.h>
 
-/*
- * Device topology information.
- */
-typedef struct fs_topology {
-	int	dsunit;		/* stripe unit - data subvolume */
-	int	dswidth;	/* stripe width - data subvolume */
-	int	rtswidth;	/* stripe width - rt subvolume */
-	int	lsectorsize;	/* logical sector size &*/
-	int	psectorsize;	/* physical sector size */
-} fs_topology_t;
-
-extern void
-get_topology(
-	libxfs_init_t		*xi,
-	struct fs_topology	*ft,
-	int			force_overwrite);
-
-extern void
-calc_default_ag_geometry(
-	int		blocklog,
-	uint64_t	dblocks,
-	int		multidisk,
-	uint64_t	*agsize,
-	uint64_t	*agcount);
-
-extern int
-check_overwrite(
-	const char	*device);
-
-
-
 #endif	/* __LIBXCMD_H__ */
diff --git a/include/topology.h b/include/topology.h
new file mode 100644
index 00000000..61ede23a
--- /dev/null
+++ b/include/topology.h
@@ -0,0 +1,39 @@ 
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2000-2005 Silicon Graphics, Inc.
+ * All Rights Reserved.
+ */
+
+#ifndef __TOPOLOGY_H__
+#define __TOPOLOGY_H__
+
+/*
+ * Device topology information.
+ */
+typedef struct fs_topology {
+	int	dsunit;		/* stripe unit - data subvolume */
+	int	dswidth;	/* stripe width - data subvolume */
+	int	rtswidth;	/* stripe width - rt subvolume */
+	int	lsectorsize;	/* logical sector size &*/
+	int	psectorsize;	/* physical sector size */
+} fs_topology_t;
+
+extern void
+get_topology(
+	libxfs_init_t		*xi,
+	struct fs_topology	*ft,
+	int			force_overwrite);
+
+extern void
+calc_default_ag_geometry(
+	int		blocklog,
+	uint64_t	dblocks,
+	int		multidisk,
+	uint64_t	*agsize,
+	uint64_t	*agcount);
+
+extern int
+check_overwrite(
+	const char	*device);
+
+#endif	/* __TOPOLOGY_H__ */
diff --git a/libfrog/topology.c b/libfrog/topology.c
index cac164f3..e2f87415 100644
--- a/libfrog/topology.c
+++ b/libfrog/topology.c
@@ -10,6 +10,7 @@ 
 #  include <blkid/blkid.h>
 #endif /* ENABLE_BLKID */
 #include "xfs_multidisk.h"
+#include "topology.h"
 
 #define TERABYTES(count, blog)	((uint64_t)(count) << (40 - (blog)))
 #define GIGABYTES(count, blog)	((uint64_t)(count) << (30 - (blog)))
diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c
index 0bdf6ec3..d05a6898 100644
--- a/mkfs/xfs_mkfs.c
+++ b/mkfs/xfs_mkfs.c
@@ -9,7 +9,7 @@ 
 #include "xfs_multidisk.h"
 #include "libxcmd.h"
 #include "fsgeom.h"
-
+#include "topology.h"
 
 #define TERABYTES(count, blog)	((uint64_t)(count) << (40 - (blog)))
 #define GIGABYTES(count, blog)	((uint64_t)(count) << (30 - (blog)))
diff --git a/repair/sb.c b/repair/sb.c
index 119bf219..547969f7 100644
--- a/repair/sb.c
+++ b/repair/sb.c
@@ -12,6 +12,7 @@ 
 #include "protos.h"
 #include "err_protos.h"
 #include "xfs_multidisk.h"
+#include "topology.h"
 
 #define BSIZE	(1024 * 1024)