All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/12] libfrog: move header files
@ 2019-09-04  4:35 Darrick J. Wong
  2019-09-04  4:35 ` [PATCH 01/12] libxfs: move topology declarations into separate header Darrick J. Wong
                   ` (11 more replies)
  0 siblings, 12 replies; 25+ messages in thread
From: Darrick J. Wong @ 2019-09-04  4:35 UTC (permalink / raw)
  To: sandeen, darrick.wong; +Cc: linux-xfs

Hi all,

Move all the libfrog header files into libfrog/ so that we can have
namespaced header files.

If you're going to start using this mess, you probably ought to just
pull from my git trees, which are linked below.

This is an extraordinary way to destroy everything.  Enjoy!
Comments and questions are, as always, welcome.

--D

xfsprogs git tree:
https://git.kernel.org/cgit/linux/kernel/git/djwong/xfsprogs-dev.git/log/?h=libfrog-header-relocation

^ permalink raw reply	[flat|nested] 25+ messages in thread

* [PATCH 01/12] libxfs: move topology declarations into separate header
  2019-09-04  4:35 [PATCH 00/12] libfrog: move header files Darrick J. Wong
@ 2019-09-04  4:35 ` Darrick J. Wong
  2019-09-04 23:24   ` Dave Chinner
  2019-09-04  4:35 ` [PATCH 02/12] libfrog: move avl64.h to libfrog/ Darrick J. Wong
                   ` (10 subsequent siblings)
  11 siblings, 1 reply; 25+ messages in thread
From: Darrick J. Wong @ 2019-09-04  4:35 UTC (permalink / raw)
  To: sandeen, darrick.wong; +Cc: linux-xfs

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 -------------------------------
 libfrog/Makefile   |    3 ++-
 libfrog/topology.c |    1 +
 libfrog/topology.h |   39 +++++++++++++++++++++++++++++++++++++++
 mkfs/xfs_mkfs.c    |    2 +-
 repair/sb.c        |    1 +
 6 files changed, 44 insertions(+), 33 deletions(-)
 create mode 100644 libfrog/topology.h


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/libfrog/Makefile b/libfrog/Makefile
index 4f6a54ab..37976029 100644
--- a/libfrog/Makefile
+++ b/libfrog/Makefile
@@ -30,7 +30,8 @@ workqueue.c
 HFILES = \
 bulkstat.h \
 crc32defs.h \
-crc32table.h
+crc32table.h \
+topology.h
 
 LSRCFILES += gen_crc32table.c
 
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/libfrog/topology.h b/libfrog/topology.h
new file mode 100644
index 00000000..6fde868a
--- /dev/null
+++ b/libfrog/topology.h
@@ -0,0 +1,39 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2000-2005 Silicon Graphics, Inc.
+ * All Rights Reserved.
+ */
+
+#ifndef __LIBFROG_TOPOLOGY_H__
+#define __LIBFROG_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	/* __LIBFROG_TOPOLOGY_H__ */
diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c
index 0bdf6ec3..fd6823c5 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 "libfrog/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..3955dfba 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 "libfrog/topology.h"
 
 #define BSIZE	(1024 * 1024)
 


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 02/12] libfrog: move avl64.h to libfrog/
  2019-09-04  4:35 [PATCH 00/12] libfrog: move header files Darrick J. Wong
  2019-09-04  4:35 ` [PATCH 01/12] libxfs: move topology declarations into separate header Darrick J. Wong
@ 2019-09-04  4:35 ` Darrick J. Wong
  2019-09-04 23:25   ` Dave Chinner
  2019-09-04  4:36 ` [PATCH 03/12] libfrog: move bitmap.h " Darrick J. Wong
                   ` (9 subsequent siblings)
  11 siblings, 1 reply; 25+ messages in thread
From: Darrick J. Wong @ 2019-09-04  4:35 UTC (permalink / raw)
  To: sandeen, darrick.wong; +Cc: linux-xfs

From: Darrick J. Wong <darrick.wong@oracle.com>

Move this header to libfrog since the code is there already.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
---
 include/avl64.h     |  127 ---------------------------------------------------
 libfrog/Makefile    |    1 
 libfrog/avl64.h     |  127 +++++++++++++++++++++++++++++++++++++++++++++++++++
 repair/incore_ext.c |    2 -
 repair/xfs_repair.c |    2 -
 scrub/phase1.c      |    2 -
 6 files changed, 131 insertions(+), 130 deletions(-)
 delete mode 100644 include/avl64.h
 create mode 100644 libfrog/avl64.h


diff --git a/include/avl64.h b/include/avl64.h
deleted file mode 100644
index 4042f6c3..00000000
--- a/include/avl64.h
+++ /dev/null
@@ -1,127 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * Copyright (c) 2000-2002,2005 Silicon Graphics, Inc.
- * All Rights Reserved.
- */
-#ifndef __XR_AVL64_H__
-#define __XR_AVL64_H__
-
-#include <sys/types.h>
-
-typedef struct	avl64node {
-	struct	avl64node	*avl_forw;	/* pointer to right child  (> parent) */
-	struct	avl64node *avl_back;	/* pointer to left child  (< parent) */
-	struct	avl64node *avl_parent;	/* parent pointer */
-	struct	avl64node *avl_nextino;	/* next in-order; NULL terminated list*/
-	char		 avl_balance;	/* tree balance */
-} avl64node_t;
-
-/*
- * avl-tree operations
- */
-typedef struct avl64ops {
-	uint64_t	(*avl_start)(avl64node_t *);
-	uint64_t	(*avl_end)(avl64node_t *);
-} avl64ops_t;
-
-/*
- * avoid complaints about multiple def's since these are only used by
- * the avl code internally
- */
-#ifndef AVL_START
-#define	AVL_START(tree, n)	(*(tree)->avl_ops->avl_start)(n)
-#define	AVL_END(tree, n)	(*(tree)->avl_ops->avl_end)(n)
-#endif
-
-/*
- * tree descriptor:
- *	root points to the root of the tree.
- *	firstino points to the first in the ordered list.
- */
-typedef struct avl64tree_desc {
-	avl64node_t	*avl_root;
-	avl64node_t	*avl_firstino;
-	avl64ops_t	*avl_ops;
-} avl64tree_desc_t;
-
-/* possible values for avl_balance */
-
-#define AVL_BACK	1
-#define AVL_BALANCE	0
-#define AVL_FORW	2
-
-/*
- * 'Exported' avl tree routines
- */
-avl64node_t
-*avl64_insert(
-	avl64tree_desc_t *tree,
-	avl64node_t *newnode);
-
-void
-avl64_delete(
-	avl64tree_desc_t *tree,
-	avl64node_t *np);
-
-void
-avl64_insert_immediate(
-	avl64tree_desc_t *tree,
-	avl64node_t *afterp,
-	avl64node_t *newnode);
-
-avl64node_t *
-avl64_firstino(avl64node_t *root);
-
-avl64node_t *
-avl64_lastino(avl64node_t *root);
-
-void
-avl64_init_tree(
-	avl64tree_desc_t  *tree,
-	avl64ops_t *ops);
-
-avl64node_t *
-avl64_findrange(
-	avl64tree_desc_t *tree,
-	uint64_t value);
-
-avl64node_t *
-avl64_find(
-	avl64tree_desc_t *tree,
-	uint64_t value);
-
-avl64node_t *
-avl64_findanyrange(
-	avl64tree_desc_t *tree,
-	uint64_t	start,
-	uint64_t	end,
-	int     checklen);
-
-
-avl64node_t *
-avl64_findadjacent(
-	avl64tree_desc_t *tree,
-	uint64_t	value,
-	int		dir);
-
-void
-avl64_findranges(
-	avl64tree_desc_t *tree,
-	uint64_t	start,
-	uint64_t	end,
-	avl64node_t	        **startp,
-	avl64node_t		**endp);
-
-/*
- * avoid complaints about multiple def's since these are only used by
- * the avl code internally
- */
-#ifndef AVL_PRECEED
-#define AVL_PRECEED	0x1
-#define AVL_SUCCEED	0x2
-
-#define AVL_INCLUDE_ZEROLEN	0x0000
-#define AVL_EXCLUDE_ZEROLEN	0x0001
-#endif
-
-#endif /* __XR_AVL64_H__ */
diff --git a/libfrog/Makefile b/libfrog/Makefile
index 37976029..e766adba 100644
--- a/libfrog/Makefile
+++ b/libfrog/Makefile
@@ -28,6 +28,7 @@ util.c \
 workqueue.c
 
 HFILES = \
+avl64.h \
 bulkstat.h \
 crc32defs.h \
 crc32table.h \
diff --git a/libfrog/avl64.h b/libfrog/avl64.h
new file mode 100644
index 00000000..283fc91c
--- /dev/null
+++ b/libfrog/avl64.h
@@ -0,0 +1,127 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2000-2002,2005 Silicon Graphics, Inc.
+ * All Rights Reserved.
+ */
+#ifndef __LIBFROG_AVL64_H__
+#define __LIBFROG_AVL64_H__
+
+#include <sys/types.h>
+
+typedef struct	avl64node {
+	struct	avl64node	*avl_forw;	/* pointer to right child  (> parent) */
+	struct	avl64node *avl_back;	/* pointer to left child  (< parent) */
+	struct	avl64node *avl_parent;	/* parent pointer */
+	struct	avl64node *avl_nextino;	/* next in-order; NULL terminated list*/
+	char		 avl_balance;	/* tree balance */
+} avl64node_t;
+
+/*
+ * avl-tree operations
+ */
+typedef struct avl64ops {
+	uint64_t	(*avl_start)(avl64node_t *);
+	uint64_t	(*avl_end)(avl64node_t *);
+} avl64ops_t;
+
+/*
+ * avoid complaints about multiple def's since these are only used by
+ * the avl code internally
+ */
+#ifndef AVL_START
+#define	AVL_START(tree, n)	(*(tree)->avl_ops->avl_start)(n)
+#define	AVL_END(tree, n)	(*(tree)->avl_ops->avl_end)(n)
+#endif
+
+/*
+ * tree descriptor:
+ *	root points to the root of the tree.
+ *	firstino points to the first in the ordered list.
+ */
+typedef struct avl64tree_desc {
+	avl64node_t	*avl_root;
+	avl64node_t	*avl_firstino;
+	avl64ops_t	*avl_ops;
+} avl64tree_desc_t;
+
+/* possible values for avl_balance */
+
+#define AVL_BACK	1
+#define AVL_BALANCE	0
+#define AVL_FORW	2
+
+/*
+ * 'Exported' avl tree routines
+ */
+avl64node_t
+*avl64_insert(
+	avl64tree_desc_t *tree,
+	avl64node_t *newnode);
+
+void
+avl64_delete(
+	avl64tree_desc_t *tree,
+	avl64node_t *np);
+
+void
+avl64_insert_immediate(
+	avl64tree_desc_t *tree,
+	avl64node_t *afterp,
+	avl64node_t *newnode);
+
+avl64node_t *
+avl64_firstino(avl64node_t *root);
+
+avl64node_t *
+avl64_lastino(avl64node_t *root);
+
+void
+avl64_init_tree(
+	avl64tree_desc_t  *tree,
+	avl64ops_t *ops);
+
+avl64node_t *
+avl64_findrange(
+	avl64tree_desc_t *tree,
+	uint64_t value);
+
+avl64node_t *
+avl64_find(
+	avl64tree_desc_t *tree,
+	uint64_t value);
+
+avl64node_t *
+avl64_findanyrange(
+	avl64tree_desc_t *tree,
+	uint64_t	start,
+	uint64_t	end,
+	int     checklen);
+
+
+avl64node_t *
+avl64_findadjacent(
+	avl64tree_desc_t *tree,
+	uint64_t	value,
+	int		dir);
+
+void
+avl64_findranges(
+	avl64tree_desc_t *tree,
+	uint64_t	start,
+	uint64_t	end,
+	avl64node_t	        **startp,
+	avl64node_t		**endp);
+
+/*
+ * avoid complaints about multiple def's since these are only used by
+ * the avl code internally
+ */
+#ifndef AVL_PRECEED
+#define AVL_PRECEED	0x1
+#define AVL_SUCCEED	0x2
+
+#define AVL_INCLUDE_ZEROLEN	0x0000
+#define AVL_EXCLUDE_ZEROLEN	0x0001
+#endif
+
+#endif /* __LIBFROG_AVL64_H__ */
diff --git a/repair/incore_ext.c b/repair/incore_ext.c
index e7ef9eb2..7292f5dc 100644
--- a/repair/incore_ext.c
+++ b/repair/incore_ext.c
@@ -12,7 +12,7 @@
 #include "agheader.h"
 #include "protos.h"
 #include "err_protos.h"
-#include "avl64.h"
+#include "libfrog/avl64.h"
 #include "threads.h"
 
 /*
diff --git a/repair/xfs_repair.c b/repair/xfs_repair.c
index e414c4fb..d7e70dd0 100644
--- a/repair/xfs_repair.c
+++ b/repair/xfs_repair.c
@@ -9,7 +9,7 @@
 #include <sys/resource.h>
 #include "xfs_multidisk.h"
 #include "avl.h"
-#include "avl64.h"
+#include "libfrog/avl64.h"
 #include "globals.h"
 #include "versions.h"
 #include "agheader.h"
diff --git a/scrub/phase1.c b/scrub/phase1.c
index 81b0990d..6d1cbe25 100644
--- a/scrub/phase1.c
+++ b/scrub/phase1.c
@@ -19,7 +19,7 @@
 #include "path.h"
 #include "handle.h"
 #include "bitops.h"
-#include "avl64.h"
+#include "libfrog/avl64.h"
 #include "list.h"
 #include "xfs_scrub.h"
 #include "common.h"


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 03/12] libfrog: move bitmap.h to libfrog/
  2019-09-04  4:35 [PATCH 00/12] libfrog: move header files Darrick J. Wong
  2019-09-04  4:35 ` [PATCH 01/12] libxfs: move topology declarations into separate header Darrick J. Wong
  2019-09-04  4:35 ` [PATCH 02/12] libfrog: move avl64.h to libfrog/ Darrick J. Wong
@ 2019-09-04  4:36 ` Darrick J. Wong
  2019-09-04 23:28   ` Dave Chinner
  2019-09-04  4:36 ` [PATCH 04/12] libfrog: move convert.h " Darrick J. Wong
                   ` (8 subsequent siblings)
  11 siblings, 1 reply; 25+ messages in thread
From: Darrick J. Wong @ 2019-09-04  4:36 UTC (permalink / raw)
  To: sandeen, darrick.wong; +Cc: linux-xfs

From: Darrick J. Wong <darrick.wong@oracle.com>

Move this header to libfrog since the code is there already.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
---
 include/bitmap.h |   24 ------------------------
 libfrog/Makefile |    1 +
 libfrog/bitmap.h |   24 ++++++++++++++++++++++++
 repair/rmap.c    |    2 +-
 scrub/phase6.c   |    2 +-
 5 files changed, 27 insertions(+), 26 deletions(-)
 delete mode 100644 include/bitmap.h
 create mode 100644 libfrog/bitmap.h


diff --git a/include/bitmap.h b/include/bitmap.h
deleted file mode 100644
index 99a2fb23..00000000
--- a/include/bitmap.h
+++ /dev/null
@@ -1,24 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * Copyright (C) 2018 Oracle.  All Rights Reserved.
- * Author: Darrick J. Wong <darrick.wong@oracle.com>
- */
-#ifndef LIBFROG_BITMAP_H_
-#define LIBFROG_BITMAP_H_
-
-struct bitmap {
-	pthread_mutex_t		bt_lock;
-	struct avl64tree_desc	*bt_tree;
-};
-
-int bitmap_init(struct bitmap **bmap);
-void bitmap_free(struct bitmap **bmap);
-int bitmap_set(struct bitmap *bmap, uint64_t start, uint64_t length);
-int bitmap_iterate(struct bitmap *bmap, int (*fn)(uint64_t, uint64_t, void *),
-		void *arg);
-bool bitmap_test(struct bitmap *bmap, uint64_t start,
-		uint64_t len);
-bool bitmap_empty(struct bitmap *bmap);
-void bitmap_dump(struct bitmap *bmap);
-
-#endif /* LIBFROG_BITMAP_H_ */
diff --git a/libfrog/Makefile b/libfrog/Makefile
index e766adba..2b199b45 100644
--- a/libfrog/Makefile
+++ b/libfrog/Makefile
@@ -30,6 +30,7 @@ workqueue.c
 HFILES = \
 avl64.h \
 bulkstat.h \
+bitmap.h \
 crc32defs.h \
 crc32table.h \
 topology.h
diff --git a/libfrog/bitmap.h b/libfrog/bitmap.h
new file mode 100644
index 00000000..40119b9c
--- /dev/null
+++ b/libfrog/bitmap.h
@@ -0,0 +1,24 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2018 Oracle.  All Rights Reserved.
+ * Author: Darrick J. Wong <darrick.wong@oracle.com>
+ */
+#ifndef __LIBFROG_BITMAP_H__
+#define __LIBFROG_BITMAP_H__
+
+struct bitmap {
+	pthread_mutex_t		bt_lock;
+	struct avl64tree_desc	*bt_tree;
+};
+
+int bitmap_init(struct bitmap **bmap);
+void bitmap_free(struct bitmap **bmap);
+int bitmap_set(struct bitmap *bmap, uint64_t start, uint64_t length);
+int bitmap_iterate(struct bitmap *bmap, int (*fn)(uint64_t, uint64_t, void *),
+		void *arg);
+bool bitmap_test(struct bitmap *bmap, uint64_t start,
+		uint64_t len);
+bool bitmap_empty(struct bitmap *bmap);
+void bitmap_dump(struct bitmap *bmap);
+
+#endif /* __LIBFROG_BITMAP_H__ */
diff --git a/repair/rmap.c b/repair/rmap.c
index 47828a06..5dd6557a 100644
--- a/repair/rmap.c
+++ b/repair/rmap.c
@@ -12,7 +12,7 @@
 #include "dinode.h"
 #include "slab.h"
 #include "rmap.h"
-#include "bitmap.h"
+#include "libfrog/bitmap.h"
 
 #undef RMAP_DEBUG
 
diff --git a/scrub/phase6.c b/scrub/phase6.c
index 5628b926..9b0d228a 100644
--- a/scrub/phase6.c
+++ b/scrub/phase6.c
@@ -12,7 +12,7 @@
 #include "workqueue.h"
 #include "xfs_scrub.h"
 #include "common.h"
-#include "bitmap.h"
+#include "libfrog/bitmap.h"
 #include "disk.h"
 #include "filemap.h"
 #include "fscounters.h"


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 04/12] libfrog: move convert.h to libfrog/
  2019-09-04  4:35 [PATCH 00/12] libfrog: move header files Darrick J. Wong
                   ` (2 preceding siblings ...)
  2019-09-04  4:36 ` [PATCH 03/12] libfrog: move bitmap.h " Darrick J. Wong
@ 2019-09-04  4:36 ` Darrick J. Wong
  2019-09-04 23:28   ` Dave Chinner
  2019-09-04  4:36 ` [PATCH 05/12] libfrog: move fsgeom.h " Darrick J. Wong
                   ` (7 subsequent siblings)
  11 siblings, 1 reply; 25+ messages in thread
From: Darrick J. Wong @ 2019-09-04  4:36 UTC (permalink / raw)
  To: sandeen, darrick.wong; +Cc: linux-xfs

From: Darrick J. Wong <darrick.wong@oracle.com>

Move this header to libfrog since the code is there already.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
---
 include/convert.h |   25 -------------------------
 include/input.h   |    2 +-
 libfrog/Makefile  |    1 +
 libfrog/convert.h |   25 +++++++++++++++++++++++++
 4 files changed, 27 insertions(+), 26 deletions(-)
 delete mode 100644 include/convert.h
 create mode 100644 libfrog/convert.h


diff --git a/include/convert.h b/include/convert.h
deleted file mode 100644
index 0489a1db..00000000
--- a/include/convert.h
+++ /dev/null
@@ -1,25 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * Copyright (c) 2000-2005 Silicon Graphics, Inc.
- * All Rights Reserved.
- */
-#ifndef __CONVERT_H__
-#define __CONVERT_H__
-
-extern int64_t	cvt_s64(char *s, int base);
-extern int32_t	cvt_s32(char *s, int base);
-extern int16_t	cvt_s16(char *s, int base);
-
-extern uint64_t	cvt_u64(char *s, int base);
-extern uint32_t	cvt_u32(char *s, int base);
-extern uint16_t	cvt_u16(char *s, int base);
-
-extern long long cvtnum(size_t blocksize, size_t sectorsize, char *s);
-extern void cvtstr(double value, char *str, size_t sz);
-extern unsigned long cvttime(char *s);
-
-extern uid_t	uid_from_string(char *user);
-extern gid_t	gid_from_string(char *group);
-extern prid_t	prid_from_string(char *project);
-
-#endif	/* __CONVERT_H__ */
diff --git a/include/input.h b/include/input.h
index 6d8dbcc4..57fdd343 100644
--- a/include/input.h
+++ b/include/input.h
@@ -10,7 +10,7 @@
 #include <grp.h>
 #include <sys/types.h>
 #include "project.h"
-#include "convert.h"
+#include "libfrog/convert.h"
 #include <stdbool.h>
 
 extern char	**breakline(char *input, int *count);
diff --git a/libfrog/Makefile b/libfrog/Makefile
index 2b199b45..5ba32a22 100644
--- a/libfrog/Makefile
+++ b/libfrog/Makefile
@@ -31,6 +31,7 @@ HFILES = \
 avl64.h \
 bulkstat.h \
 bitmap.h \
+convert.h \
 crc32defs.h \
 crc32table.h \
 topology.h
diff --git a/libfrog/convert.h b/libfrog/convert.h
new file mode 100644
index 00000000..321540aa
--- /dev/null
+++ b/libfrog/convert.h
@@ -0,0 +1,25 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2000-2005 Silicon Graphics, Inc.
+ * All Rights Reserved.
+ */
+#ifndef __LIBFROG_CONVERT_H__
+#define __LIBFROG_CONVERT_H__
+
+extern int64_t	cvt_s64(char *s, int base);
+extern int32_t	cvt_s32(char *s, int base);
+extern int16_t	cvt_s16(char *s, int base);
+
+extern uint64_t	cvt_u64(char *s, int base);
+extern uint32_t	cvt_u32(char *s, int base);
+extern uint16_t	cvt_u16(char *s, int base);
+
+extern long long cvtnum(size_t blocksize, size_t sectorsize, char *s);
+extern void cvtstr(double value, char *str, size_t sz);
+extern unsigned long cvttime(char *s);
+
+extern uid_t	uid_from_string(char *user);
+extern gid_t	gid_from_string(char *group);
+extern prid_t	prid_from_string(char *project);
+
+#endif	/* __LIBFROG_CONVERT_H__ */


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 05/12] libfrog: move fsgeom.h to libfrog/
  2019-09-04  4:35 [PATCH 00/12] libfrog: move header files Darrick J. Wong
                   ` (3 preceding siblings ...)
  2019-09-04  4:36 ` [PATCH 04/12] libfrog: move convert.h " Darrick J. Wong
@ 2019-09-04  4:36 ` Darrick J. Wong
  2019-09-04 23:32   ` Dave Chinner
  2019-09-04  4:36 ` [PATCH 06/12] libfrog: move ptvar.h " Darrick J. Wong
                   ` (6 subsequent siblings)
  11 siblings, 1 reply; 25+ messages in thread
From: Darrick J. Wong @ 2019-09-04  4:36 UTC (permalink / raw)
  To: sandeen, darrick.wong; +Cc: linux-xfs

From: Darrick J. Wong <darrick.wong@oracle.com>

Move this header to libfrog since the code is there already.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
---
 db/info.c           |    2 +
 fsr/xfs_fsr.c       |    2 +
 growfs/xfs_growfs.c |    2 +
 include/fsgeom.h    |  102 ---------------------------------------------------
 io/bmap.c           |    2 +
 io/fsmap.c          |    2 +
 io/imap.c           |    2 +
 io/open.c           |    2 +
 io/stat.c           |    2 +
 io/swapext.c        |    2 +
 libfrog/Makefile    |    1 +
 libfrog/fsgeom.h    |  102 +++++++++++++++++++++++++++++++++++++++++++++++++++
 mkfs/xfs_mkfs.c     |    2 +
 quota/free.c        |    2 +
 quota/quot.c        |    2 +
 repair/xfs_repair.c |    2 +
 rtcp/xfs_rtcp.c     |    2 +
 scrub/inodes.c      |    2 +
 scrub/phase1.c      |    2 +
 scrub/xfs_scrub.h   |    2 +
 spaceman/file.c     |    2 +
 spaceman/info.c     |    2 +
 22 files changed, 122 insertions(+), 121 deletions(-)
 delete mode 100644 include/fsgeom.h
 create mode 100644 libfrog/fsgeom.h


diff --git a/db/info.c b/db/info.c
index 7dae6e25..e5f1c2dd 100644
--- a/db/info.c
+++ b/db/info.c
@@ -7,7 +7,7 @@
 #include "command.h"
 #include "init.h"
 #include "output.h"
-#include "fsgeom.h"
+#include "libfrog/fsgeom.h"
 
 static void
 info_help(void)
diff --git a/fsr/xfs_fsr.c b/fsr/xfs_fsr.c
index 64892dd5..1fd89eb8 100644
--- a/fsr/xfs_fsr.c
+++ b/fsr/xfs_fsr.c
@@ -11,7 +11,7 @@
 #include "xfs_bmap_btree.h"
 #include "xfs_attr_sf.h"
 #include "path.h"
-#include "fsgeom.h"
+#include "libfrog/fsgeom.h"
 #include "libfrog/bulkstat.h"
 
 #include <fcntl.h>
diff --git a/growfs/xfs_growfs.c b/growfs/xfs_growfs.c
index 4d48617a..a3fe74ae 100644
--- a/growfs/xfs_growfs.c
+++ b/growfs/xfs_growfs.c
@@ -6,7 +6,7 @@
 
 #include "libxfs.h"
 #include "path.h"
-#include "fsgeom.h"
+#include "libfrog/fsgeom.h"
 
 static void
 usage(void)
diff --git a/include/fsgeom.h b/include/fsgeom.h
deleted file mode 100644
index 1c397cb6..00000000
--- a/include/fsgeom.h
+++ /dev/null
@@ -1,102 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * Copyright (c) 2000-2005 Silicon Graphics, Inc.  All Rights Reserved.
- */
-#ifndef _LIBFROG_FSGEOM_H_
-#define _LIBFROG_FSGEOM_H_
-
-void xfs_report_geom(struct xfs_fsop_geom *geo, const char *mntpoint,
-		const char *logname, const char *rtname);
-int xfrog_geometry(int fd, struct xfs_fsop_geom *fsgeo);
-
-/*
- * Structure for recording whatever observations we want about the level of
- * xfs runtime support for this fd.  Right now we only store the fd and fs
- * geometry.
- */
-struct xfs_fd {
-	/* ioctl file descriptor */
-	int			fd;
-
-	/* filesystem geometry */
-	struct xfs_fsop_geom	fsgeom;
-
-	/* log2 of sb_agblocks (rounded up) */
-	unsigned int		agblklog;
-
-	/* log2 of sb_blocksize */
-	unsigned int		blocklog;
-
-	/* log2 of sb_inodesize */
-	unsigned int		inodelog;
-
-	/* log2 of sb_inopblock */
-	unsigned int		inopblog;
-
-	/* bits for agino in inum */
-	unsigned int		aginolog;
-};
-
-/* Static initializers */
-#define XFS_FD_INIT(_fd)	{ .fd = (_fd), }
-#define XFS_FD_INIT_EMPTY	XFS_FD_INIT(-1)
-
-int xfd_prepare_geometry(struct xfs_fd *xfd);
-int xfd_open(struct xfs_fd *xfd, const char *pathname, int flags);
-int xfd_close(struct xfs_fd *xfd);
-
-/* Convert AG number and AG inode number into fs inode number. */
-static inline uint64_t
-cvt_agino_to_ino(
-	const struct xfs_fd	*xfd,
-	uint32_t		agno,
-	uint32_t		agino)
-{
-	return ((uint64_t)agno << xfd->aginolog) + agino;
-}
-
-/* Convert fs inode number into AG number. */
-static inline uint32_t
-cvt_ino_to_agno(
-	const struct xfs_fd	*xfd,
-	uint64_t		ino)
-{
-	return ino >> xfd->aginolog;
-}
-
-/* Convert fs inode number into AG inode number. */
-static inline uint32_t
-cvt_ino_to_agino(
-	const struct xfs_fd	*xfd,
-	uint64_t		ino)
-{
-	return ino & ((1ULL << xfd->aginolog) - 1);
-}
-
-/*
- * Convert a linear fs block offset number into bytes.  This is the runtime
- * equivalent of XFS_FSB_TO_B, which means that it is /not/ for segmented fsbno
- * format (= agno | agbno) that we use internally for the data device.
- */
-static inline uint64_t
-cvt_off_fsb_to_b(
-	const struct xfs_fd	*xfd,
-	uint64_t		fsb)
-{
-	return fsb << xfd->blocklog;
-}
-
-/*
- * Convert bytes into a (rounded down) linear fs block offset number.  This is
- * the runtime equivalent of XFS_B_TO_FSBT.  It does not produce segmented
- * fsbno numbers (= agno | agbno).
- */
-static inline uint64_t
-cvt_b_to_off_fsbt(
-	const struct xfs_fd	*xfd,
-	uint64_t		bytes)
-{
-	return bytes >> xfd->blocklog;
-}
-
-#endif /* _LIBFROG_FSGEOM_H_ */
diff --git a/io/bmap.c b/io/bmap.c
index d4262cf2..cf4ea12b 100644
--- a/io/bmap.c
+++ b/io/bmap.c
@@ -9,7 +9,7 @@
 #include "input.h"
 #include "init.h"
 #include "io.h"
-#include "fsgeom.h"
+#include "libfrog/fsgeom.h"
 
 static cmdinfo_t bmap_cmd;
 
diff --git a/io/fsmap.c b/io/fsmap.c
index 67baa817..e91ffc36 100644
--- a/io/fsmap.c
+++ b/io/fsmap.c
@@ -9,7 +9,7 @@
 #include "path.h"
 #include "io.h"
 #include "input.h"
-#include "fsgeom.h"
+#include "libfrog/fsgeom.h"
 
 static cmdinfo_t	fsmap_cmd;
 static dev_t		xfs_data_dev;
diff --git a/io/imap.c b/io/imap.c
index 86d8bda3..472c1fda 100644
--- a/io/imap.c
+++ b/io/imap.c
@@ -8,7 +8,7 @@
 #include "input.h"
 #include "init.h"
 #include "io.h"
-#include "fsgeom.h"
+#include "libfrog/fsgeom.h"
 #include "libfrog/bulkstat.h"
 
 static cmdinfo_t imap_cmd;
diff --git a/io/open.c b/io/open.c
index 169f375c..99ca0dd3 100644
--- a/io/open.c
+++ b/io/open.c
@@ -9,7 +9,7 @@
 #include "init.h"
 #include "io.h"
 #include "libxfs.h"
-#include "fsgeom.h"
+#include "libfrog/fsgeom.h"
 #include "libfrog/bulkstat.h"
 
 #ifndef __O_TMPFILE
diff --git a/io/stat.c b/io/stat.c
index 4c1cc83d..6c666146 100644
--- a/io/stat.c
+++ b/io/stat.c
@@ -12,7 +12,7 @@
 #include "io.h"
 #include "statx.h"
 #include "libxfs.h"
-#include "fsgeom.h"
+#include "libfrog/fsgeom.h"
 
 #include <fcntl.h>
 
diff --git a/io/swapext.c b/io/swapext.c
index d805ffbb..2b4918f8 100644
--- a/io/swapext.c
+++ b/io/swapext.c
@@ -8,7 +8,7 @@
 #include "input.h"
 #include "init.h"
 #include "io.h"
-#include "fsgeom.h"
+#include "libfrog/fsgeom.h"
 #include "libfrog/bulkstat.h"
 
 static cmdinfo_t swapext_cmd;
diff --git a/libfrog/Makefile b/libfrog/Makefile
index 5ba32a22..98f2feb5 100644
--- a/libfrog/Makefile
+++ b/libfrog/Makefile
@@ -34,6 +34,7 @@ bitmap.h \
 convert.h \
 crc32defs.h \
 crc32table.h \
+fsgeom.h \
 topology.h
 
 LSRCFILES += gen_crc32table.c
diff --git a/libfrog/fsgeom.h b/libfrog/fsgeom.h
new file mode 100644
index 00000000..6993dafb
--- /dev/null
+++ b/libfrog/fsgeom.h
@@ -0,0 +1,102 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2000-2005 Silicon Graphics, Inc.  All Rights Reserved.
+ */
+#ifndef __LIBFROG_FSGEOM_H__
+#define __LIBFROG_FSGEOM_H__
+
+void xfs_report_geom(struct xfs_fsop_geom *geo, const char *mntpoint,
+		const char *logname, const char *rtname);
+int xfrog_geometry(int fd, struct xfs_fsop_geom *fsgeo);
+
+/*
+ * Structure for recording whatever observations we want about the level of
+ * xfs runtime support for this fd.  Right now we only store the fd and fs
+ * geometry.
+ */
+struct xfs_fd {
+	/* ioctl file descriptor */
+	int			fd;
+
+	/* filesystem geometry */
+	struct xfs_fsop_geom	fsgeom;
+
+	/* log2 of sb_agblocks (rounded up) */
+	unsigned int		agblklog;
+
+	/* log2 of sb_blocksize */
+	unsigned int		blocklog;
+
+	/* log2 of sb_inodesize */
+	unsigned int		inodelog;
+
+	/* log2 of sb_inopblock */
+	unsigned int		inopblog;
+
+	/* bits for agino in inum */
+	unsigned int		aginolog;
+};
+
+/* Static initializers */
+#define XFS_FD_INIT(_fd)	{ .fd = (_fd), }
+#define XFS_FD_INIT_EMPTY	XFS_FD_INIT(-1)
+
+int xfd_prepare_geometry(struct xfs_fd *xfd);
+int xfd_open(struct xfs_fd *xfd, const char *pathname, int flags);
+int xfd_close(struct xfs_fd *xfd);
+
+/* Convert AG number and AG inode number into fs inode number. */
+static inline uint64_t
+cvt_agino_to_ino(
+	const struct xfs_fd	*xfd,
+	uint32_t		agno,
+	uint32_t		agino)
+{
+	return ((uint64_t)agno << xfd->aginolog) + agino;
+}
+
+/* Convert fs inode number into AG number. */
+static inline uint32_t
+cvt_ino_to_agno(
+	const struct xfs_fd	*xfd,
+	uint64_t		ino)
+{
+	return ino >> xfd->aginolog;
+}
+
+/* Convert fs inode number into AG inode number. */
+static inline uint32_t
+cvt_ino_to_agino(
+	const struct xfs_fd	*xfd,
+	uint64_t		ino)
+{
+	return ino & ((1ULL << xfd->aginolog) - 1);
+}
+
+/*
+ * Convert a linear fs block offset number into bytes.  This is the runtime
+ * equivalent of XFS_FSB_TO_B, which means that it is /not/ for segmented fsbno
+ * format (= agno | agbno) that we use internally for the data device.
+ */
+static inline uint64_t
+cvt_off_fsb_to_b(
+	const struct xfs_fd	*xfd,
+	uint64_t		fsb)
+{
+	return fsb << xfd->blocklog;
+}
+
+/*
+ * Convert bytes into a (rounded down) linear fs block offset number.  This is
+ * the runtime equivalent of XFS_B_TO_FSBT.  It does not produce segmented
+ * fsbno numbers (= agno | agbno).
+ */
+static inline uint64_t
+cvt_b_to_off_fsbt(
+	const struct xfs_fd	*xfd,
+	uint64_t		bytes)
+{
+	return bytes >> xfd->blocklog;
+}
+
+#endif /* __LIBFROG_FSGEOM_H__ */
diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c
index fd6823c5..50913866 100644
--- a/mkfs/xfs_mkfs.c
+++ b/mkfs/xfs_mkfs.c
@@ -8,7 +8,7 @@
 #include <ctype.h>
 #include "xfs_multidisk.h"
 #include "libxcmd.h"
-#include "fsgeom.h"
+#include "libfrog/fsgeom.h"
 #include "libfrog/topology.h"
 
 #define TERABYTES(count, blog)	((uint64_t)(count) << (40 - (blog)))
diff --git a/quota/free.c b/quota/free.c
index a8b6bd1f..73aeb459 100644
--- a/quota/free.c
+++ b/quota/free.c
@@ -8,7 +8,7 @@
 #include "command.h"
 #include "init.h"
 #include "quota.h"
-#include "fsgeom.h"
+#include "libfrog/fsgeom.h"
 
 static cmdinfo_t free_cmd;
 
diff --git a/quota/quot.c b/quota/quot.c
index b718b09d..686b2726 100644
--- a/quota/quot.c
+++ b/quota/quot.c
@@ -11,7 +11,7 @@
 #include <grp.h>
 #include "init.h"
 #include "quota.h"
-#include "fsgeom.h"
+#include "libfrog/fsgeom.h"
 #include "libfrog/bulkstat.h"
 
 typedef struct du {
diff --git a/repair/xfs_repair.c b/repair/xfs_repair.c
index d7e70dd0..b11b7448 100644
--- a/repair/xfs_repair.c
+++ b/repair/xfs_repair.c
@@ -22,7 +22,7 @@
 #include "dinode.h"
 #include "slab.h"
 #include "rmap.h"
-#include "fsgeom.h"
+#include "libfrog/fsgeom.h"
 
 /*
  * option tables for getsubopt calls
diff --git a/rtcp/xfs_rtcp.c b/rtcp/xfs_rtcp.c
index f6ef0e6c..a5737699 100644
--- a/rtcp/xfs_rtcp.c
+++ b/rtcp/xfs_rtcp.c
@@ -5,7 +5,7 @@
  */
 
 #include "libxfs.h"
-#include "fsgeom.h"
+#include "libfrog/fsgeom.h"
 
 int rtcp(char *, char *, int);
 int xfsrtextsize(char *path);
diff --git a/scrub/inodes.c b/scrub/inodes.c
index bf98f6ee..faffef54 100644
--- a/scrub/inodes.c
+++ b/scrub/inodes.c
@@ -17,7 +17,7 @@
 #include "xfs_scrub.h"
 #include "common.h"
 #include "inodes.h"
-#include "fsgeom.h"
+#include "libfrog/fsgeom.h"
 #include "libfrog/bulkstat.h"
 
 /*
diff --git a/scrub/phase1.c b/scrub/phase1.c
index 6d1cbe25..23df9a15 100644
--- a/scrub/phase1.c
+++ b/scrub/phase1.c
@@ -26,7 +26,7 @@
 #include "disk.h"
 #include "scrub.h"
 #include "repair.h"
-#include "fsgeom.h"
+#include "libfrog/fsgeom.h"
 
 /* Phase 1: Find filesystem geometry (and clean up after) */
 
diff --git a/scrub/xfs_scrub.h b/scrub/xfs_scrub.h
index 6178f324..f9a72052 100644
--- a/scrub/xfs_scrub.h
+++ b/scrub/xfs_scrub.h
@@ -6,7 +6,7 @@
 #ifndef XFS_SCRUB_XFS_SCRUB_H_
 #define XFS_SCRUB_XFS_SCRUB_H_
 
-#include "fsgeom.h"
+#include "libfrog/fsgeom.h"
 
 extern char *progname;
 
diff --git a/spaceman/file.c b/spaceman/file.c
index 72ef27f3..34e5f005 100644
--- a/spaceman/file.c
+++ b/spaceman/file.c
@@ -12,7 +12,7 @@
 #include "init.h"
 #include "path.h"
 #include "space.h"
-#include "fsgeom.h"
+#include "libfrog/fsgeom.h"
 
 static cmdinfo_t print_cmd;
 
diff --git a/spaceman/info.c b/spaceman/info.c
index 151594a8..80442e9a 100644
--- a/spaceman/info.c
+++ b/spaceman/info.c
@@ -8,7 +8,7 @@
 #include "init.h"
 #include "path.h"
 #include "space.h"
-#include "fsgeom.h"
+#include "libfrog/fsgeom.h"
 
 static void
 info_help(void)


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 06/12] libfrog: move ptvar.h to libfrog/
  2019-09-04  4:35 [PATCH 00/12] libfrog: move header files Darrick J. Wong
                   ` (4 preceding siblings ...)
  2019-09-04  4:36 ` [PATCH 05/12] libfrog: move fsgeom.h " Darrick J. Wong
@ 2019-09-04  4:36 ` Darrick J. Wong
  2019-09-04 23:32   ` Dave Chinner
  2019-09-04  4:36 ` [PATCH 07/12] libfrog: move radix-tree.h " Darrick J. Wong
                   ` (5 subsequent siblings)
  11 siblings, 1 reply; 25+ messages in thread
From: Darrick J. Wong @ 2019-09-04  4:36 UTC (permalink / raw)
  To: sandeen, darrick.wong; +Cc: linux-xfs

From: Darrick J. Wong <darrick.wong@oracle.com>

Move this header to libfrog since the code is there already.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
---
 include/ptvar.h     |   18 ------------------
 libfrog/Makefile    |    1 +
 libfrog/ptvar.h     |   18 ++++++++++++++++++
 scrub/counter.c     |    2 +-
 scrub/phase7.c      |    2 +-
 scrub/read_verify.c |    2 +-
 6 files changed, 22 insertions(+), 21 deletions(-)
 delete mode 100644 include/ptvar.h
 create mode 100644 libfrog/ptvar.h


diff --git a/include/ptvar.h b/include/ptvar.h
deleted file mode 100644
index 90823da9..00000000
--- a/include/ptvar.h
+++ /dev/null
@@ -1,18 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * Copyright (C) 2018 Oracle.  All Rights Reserved.
- * Author: Darrick J. Wong <darrick.wong@oracle.com>
- */
-#ifndef LIBFROG_PERCPU_H_
-#define LIBFROG_PERCPU_H_
-
-struct ptvar;
-
-typedef bool (*ptvar_iter_fn)(struct ptvar *ptv, void *data, void *foreach_arg);
-
-struct ptvar *ptvar_init(size_t nr, size_t size);
-void ptvar_free(struct ptvar *ptv);
-void *ptvar_get(struct ptvar *ptv);
-bool ptvar_foreach(struct ptvar *ptv, ptvar_iter_fn fn, void *foreach_arg);
-
-#endif /* LIBFROG_PERCPU_H_ */
diff --git a/libfrog/Makefile b/libfrog/Makefile
index 98f2feb5..25ea248e 100644
--- a/libfrog/Makefile
+++ b/libfrog/Makefile
@@ -35,6 +35,7 @@ convert.h \
 crc32defs.h \
 crc32table.h \
 fsgeom.h \
+ptvar.h \
 topology.h
 
 LSRCFILES += gen_crc32table.c
diff --git a/libfrog/ptvar.h b/libfrog/ptvar.h
new file mode 100644
index 00000000..a8803c64
--- /dev/null
+++ b/libfrog/ptvar.h
@@ -0,0 +1,18 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2018 Oracle.  All Rights Reserved.
+ * Author: Darrick J. Wong <darrick.wong@oracle.com>
+ */
+#ifndef __LIBFROG_PTVAR_H__
+#define __LIBFROG_PTVAR_H__
+
+struct ptvar;
+
+typedef bool (*ptvar_iter_fn)(struct ptvar *ptv, void *data, void *foreach_arg);
+
+struct ptvar *ptvar_init(size_t nr, size_t size);
+void ptvar_free(struct ptvar *ptv);
+void *ptvar_get(struct ptvar *ptv);
+bool ptvar_foreach(struct ptvar *ptv, ptvar_iter_fn fn, void *foreach_arg);
+
+#endif /* __LIBFROG_PTVAR_H__ */
diff --git a/scrub/counter.c b/scrub/counter.c
index 4800e751..43444927 100644
--- a/scrub/counter.c
+++ b/scrub/counter.c
@@ -9,7 +9,7 @@
 #include <string.h>
 #include <assert.h>
 #include <pthread.h>
-#include "ptvar.h"
+#include "libfrog/ptvar.h"
 #include "counter.h"
 
 /*
diff --git a/scrub/phase7.c b/scrub/phase7.c
index 8a028e19..8ac1da07 100644
--- a/scrub/phase7.c
+++ b/scrub/phase7.c
@@ -8,7 +8,7 @@
 #include <stdlib.h>
 #include <sys/statvfs.h>
 #include "path.h"
-#include "ptvar.h"
+#include "libfrog/ptvar.h"
 #include "xfs_scrub.h"
 #include "common.h"
 #include "fscounters.h"
diff --git a/scrub/read_verify.c b/scrub/read_verify.c
index 4a9b91f2..d56f4893 100644
--- a/scrub/read_verify.c
+++ b/scrub/read_verify.c
@@ -7,7 +7,7 @@
 #include <stdint.h>
 #include <stdlib.h>
 #include <sys/statvfs.h>
-#include "ptvar.h"
+#include "libfrog/ptvar.h"
 #include "workqueue.h"
 #include "path.h"
 #include "xfs_scrub.h"


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 07/12] libfrog: move radix-tree.h to libfrog/
  2019-09-04  4:35 [PATCH 00/12] libfrog: move header files Darrick J. Wong
                   ` (5 preceding siblings ...)
  2019-09-04  4:36 ` [PATCH 06/12] libfrog: move ptvar.h " Darrick J. Wong
@ 2019-09-04  4:36 ` Darrick J. Wong
  2019-09-04 23:33   ` Dave Chinner
  2019-09-04  4:36 ` [PATCH 08/12] libfrog: move workqueue.h " Darrick J. Wong
                   ` (4 subsequent siblings)
  11 siblings, 1 reply; 25+ messages in thread
From: Darrick J. Wong @ 2019-09-04  4:36 UTC (permalink / raw)
  To: sandeen, darrick.wong; +Cc: linux-xfs

From: Darrick J. Wong <darrick.wong@oracle.com>

Move this header to libfrog since the code is there already.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
---
 include/Makefile     |    1 -
 include/libxfs.h     |    2 +-
 include/radix-tree.h |   63 --------------------------------------------------
 libfrog/Makefile     |    1 +
 libfrog/radix-tree.h |   63 ++++++++++++++++++++++++++++++++++++++++++++++++++
 libxfs/libxfs_priv.h |    2 +-
 6 files changed, 66 insertions(+), 66 deletions(-)
 delete mode 100644 include/radix-tree.h
 create mode 100644 libfrog/radix-tree.h


diff --git a/include/Makefile b/include/Makefile
index 7b922420..2a00dea9 100644
--- a/include/Makefile
+++ b/include/Makefile
@@ -16,7 +16,6 @@ LIBHFILES = libxfs.h \
 	kmem.h \
 	list.h \
 	parent.h \
-	radix-tree.h \
 	xfs_btree_trace.h \
 	xfs_inode.h \
 	xfs_log_recover.h \
diff --git a/include/libxfs.h b/include/libxfs.h
index dd5fe542..663063bc 100644
--- a/include/libxfs.h
+++ b/include/libxfs.h
@@ -16,7 +16,7 @@
 #include "cache.h"
 #include "bitops.h"
 #include "kmem.h"
-#include "radix-tree.h"
+#include "libfrog/radix-tree.h"
 #include "atomic.h"
 
 #include "xfs_types.h"
diff --git a/include/radix-tree.h b/include/radix-tree.h
deleted file mode 100644
index 81ee010c..00000000
--- a/include/radix-tree.h
+++ /dev/null
@@ -1,63 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * Copyright (C) 2001 Momchil Velikov
- * Portions Copyright (C) 2001 Christoph Hellwig
- */
-#ifndef __XFS_SUPPORT_RADIX_TREE_H__
-#define __XFS_SUPPORT_RADIX_TREE_H__
-
-#define RADIX_TREE_TAGS
-
-struct radix_tree_root {
-	unsigned int		height;
-	struct radix_tree_node	*rnode;
-};
-
-#define RADIX_TREE_INIT(mask)	{					\
-	.height = 0,							\
-	.rnode = NULL,							\
-}
-
-#define RADIX_TREE(name, mask) \
-	struct radix_tree_root name = RADIX_TREE_INIT(mask)
-
-#define INIT_RADIX_TREE(root, mask)					\
-do {									\
-	(root)->height = 0;						\
-	(root)->rnode = NULL;						\
-} while (0)
-
-#ifdef RADIX_TREE_TAGS
-#define RADIX_TREE_MAX_TAGS 2
-#endif
-
-int radix_tree_insert(struct radix_tree_root *, unsigned long, void *);
-void *radix_tree_lookup(struct radix_tree_root *, unsigned long);
-void **radix_tree_lookup_slot(struct radix_tree_root *, unsigned long);
-void *radix_tree_lookup_first(struct radix_tree_root *, unsigned long *);
-void *radix_tree_delete(struct radix_tree_root *, unsigned long);
-unsigned int
-radix_tree_gang_lookup(struct radix_tree_root *root, void **results,
-			unsigned long first_index, unsigned int max_items);
-unsigned int
-radix_tree_gang_lookup_ex(struct radix_tree_root *root, void **results,
-			unsigned long first_index, unsigned long last_index,
-			unsigned int max_items);
-
-void radix_tree_init(void);
-
-#ifdef RADIX_TREE_TAGS
-void *radix_tree_tag_set(struct radix_tree_root *root,
-			unsigned long index, unsigned int tag);
-void *radix_tree_tag_clear(struct radix_tree_root *root,
-			unsigned long index, unsigned int tag);
-int radix_tree_tag_get(struct radix_tree_root *root,
-			unsigned long index, unsigned int tag);
-unsigned int
-radix_tree_gang_lookup_tag(struct radix_tree_root *root, void **results,
-			unsigned long first_index, unsigned int max_items,
-			unsigned int tag);
-int radix_tree_tagged(struct radix_tree_root *root, unsigned int tag);
-#endif
-
-#endif /* __XFS_SUPPORT_RADIX_TREE_H__ */
diff --git a/libfrog/Makefile b/libfrog/Makefile
index 25ea248e..482893ef 100644
--- a/libfrog/Makefile
+++ b/libfrog/Makefile
@@ -36,6 +36,7 @@ crc32defs.h \
 crc32table.h \
 fsgeom.h \
 ptvar.h \
+radix-tree.h \
 topology.h
 
 LSRCFILES += gen_crc32table.c
diff --git a/libfrog/radix-tree.h b/libfrog/radix-tree.h
new file mode 100644
index 00000000..f08156b9
--- /dev/null
+++ b/libfrog/radix-tree.h
@@ -0,0 +1,63 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2001 Momchil Velikov
+ * Portions Copyright (C) 2001 Christoph Hellwig
+ */
+#ifndef __LIBFROG_RADIX_TREE_H__
+#define __LIBFROG_RADIX_TREE_H__
+
+#define RADIX_TREE_TAGS
+
+struct radix_tree_root {
+	unsigned int		height;
+	struct radix_tree_node	*rnode;
+};
+
+#define RADIX_TREE_INIT(mask)	{					\
+	.height = 0,							\
+	.rnode = NULL,							\
+}
+
+#define RADIX_TREE(name, mask) \
+	struct radix_tree_root name = RADIX_TREE_INIT(mask)
+
+#define INIT_RADIX_TREE(root, mask)					\
+do {									\
+	(root)->height = 0;						\
+	(root)->rnode = NULL;						\
+} while (0)
+
+#ifdef RADIX_TREE_TAGS
+#define RADIX_TREE_MAX_TAGS 2
+#endif
+
+int radix_tree_insert(struct radix_tree_root *, unsigned long, void *);
+void *radix_tree_lookup(struct radix_tree_root *, unsigned long);
+void **radix_tree_lookup_slot(struct radix_tree_root *, unsigned long);
+void *radix_tree_lookup_first(struct radix_tree_root *, unsigned long *);
+void *radix_tree_delete(struct radix_tree_root *, unsigned long);
+unsigned int
+radix_tree_gang_lookup(struct radix_tree_root *root, void **results,
+			unsigned long first_index, unsigned int max_items);
+unsigned int
+radix_tree_gang_lookup_ex(struct radix_tree_root *root, void **results,
+			unsigned long first_index, unsigned long last_index,
+			unsigned int max_items);
+
+void radix_tree_init(void);
+
+#ifdef RADIX_TREE_TAGS
+void *radix_tree_tag_set(struct radix_tree_root *root,
+			unsigned long index, unsigned int tag);
+void *radix_tree_tag_clear(struct radix_tree_root *root,
+			unsigned long index, unsigned int tag);
+int radix_tree_tag_get(struct radix_tree_root *root,
+			unsigned long index, unsigned int tag);
+unsigned int
+radix_tree_gang_lookup_tag(struct radix_tree_root *root, void **results,
+			unsigned long first_index, unsigned int max_items,
+			unsigned int tag);
+int radix_tree_tagged(struct radix_tree_root *root, unsigned int tag);
+#endif
+
+#endif /* __LIBFROG_RADIX_TREE_H__ */
diff --git a/libxfs/libxfs_priv.h b/libxfs/libxfs_priv.h
index 8b3de170..ec4d7d3b 100644
--- a/libxfs/libxfs_priv.h
+++ b/libxfs/libxfs_priv.h
@@ -46,7 +46,7 @@
 #include "cache.h"
 #include "bitops.h"
 #include "kmem.h"
-#include "radix-tree.h"
+#include "libfrog/radix-tree.h"
 #include "atomic.h"
 
 #include "xfs_types.h"


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 08/12] libfrog: move workqueue.h to libfrog/
  2019-09-04  4:35 [PATCH 00/12] libfrog: move header files Darrick J. Wong
                   ` (6 preceding siblings ...)
  2019-09-04  4:36 ` [PATCH 07/12] libfrog: move radix-tree.h " Darrick J. Wong
@ 2019-09-04  4:36 ` Darrick J. Wong
  2019-09-04 23:34   ` Dave Chinner
  2019-09-04  4:36 ` [PATCH 09/12] libfrog: move crc32c.h " Darrick J. Wong
                   ` (3 subsequent siblings)
  11 siblings, 1 reply; 25+ messages in thread
From: Darrick J. Wong @ 2019-09-04  4:36 UTC (permalink / raw)
  To: sandeen, darrick.wong; +Cc: linux-xfs

From: Darrick J. Wong <darrick.wong@oracle.com>

Move this header to libfrog since the code is there already.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
---
 include/workqueue.h |   41 -----------------------------------------
 libfrog/Makefile    |    3 ++-
 libfrog/workqueue.h |   41 +++++++++++++++++++++++++++++++++++++++++
 repair/threads.h    |    2 +-
 scrub/fscounters.c  |    2 +-
 scrub/inodes.c      |    2 +-
 scrub/phase1.c      |    2 +-
 scrub/phase2.c      |    2 +-
 scrub/phase3.c      |    2 +-
 scrub/phase4.c      |    2 +-
 scrub/phase5.c      |    2 +-
 scrub/phase6.c      |    2 +-
 scrub/read_verify.c |    2 +-
 scrub/spacemap.c    |    2 +-
 scrub/vfs.c         |    2 +-
 15 files changed, 55 insertions(+), 54 deletions(-)
 delete mode 100644 include/workqueue.h
 create mode 100644 libfrog/workqueue.h


diff --git a/include/workqueue.h b/include/workqueue.h
deleted file mode 100644
index c45dc4fb..00000000
--- a/include/workqueue.h
+++ /dev/null
@@ -1,41 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * Copyright (C) 2017 Oracle.  All Rights Reserved.
- * Author: Darrick J. Wong <darrick.wong@oracle.com>
- */
-#ifndef	_WORKQUEUE_H_
-#define	_WORKQUEUE_H_
-
-#include <pthread.h>
-
-struct workqueue;
-
-typedef void workqueue_func_t(struct workqueue *wq, uint32_t index, void *arg);
-
-struct workqueue_item {
-	struct workqueue	*queue;
-	struct workqueue_item	*next;
-	workqueue_func_t	*function;
-	void			*arg;
-	uint32_t		index;
-};
-
-struct workqueue {
-	void			*wq_ctx;
-	pthread_t		*threads;
-	struct workqueue_item	*next_item;
-	struct workqueue_item	*last_item;
-	pthread_mutex_t		lock;
-	pthread_cond_t		wakeup;
-	unsigned int		item_count;
-	unsigned int		thread_count;
-	bool			terminate;
-};
-
-int workqueue_create(struct workqueue *wq, void *wq_ctx,
-		unsigned int nr_workers);
-int workqueue_add(struct workqueue *wq, workqueue_func_t fn,
-		uint32_t index, void *arg);
-void workqueue_destroy(struct workqueue *wq);
-
-#endif	/* _WORKQUEUE_H_ */
diff --git a/libfrog/Makefile b/libfrog/Makefile
index 482893ef..5506c96f 100644
--- a/libfrog/Makefile
+++ b/libfrog/Makefile
@@ -37,7 +37,8 @@ crc32table.h \
 fsgeom.h \
 ptvar.h \
 radix-tree.h \
-topology.h
+topology.h \
+workqueue.h
 
 LSRCFILES += gen_crc32table.c
 
diff --git a/libfrog/workqueue.h b/libfrog/workqueue.h
new file mode 100644
index 00000000..a1f3a57c
--- /dev/null
+++ b/libfrog/workqueue.h
@@ -0,0 +1,41 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2017 Oracle.  All Rights Reserved.
+ * Author: Darrick J. Wong <darrick.wong@oracle.com>
+ */
+#ifndef	__LIBFROG_WORKQUEUE_H__
+#define	__LIBFROG_WORKQUEUE_H__
+
+#include <pthread.h>
+
+struct workqueue;
+
+typedef void workqueue_func_t(struct workqueue *wq, uint32_t index, void *arg);
+
+struct workqueue_item {
+	struct workqueue	*queue;
+	struct workqueue_item	*next;
+	workqueue_func_t	*function;
+	void			*arg;
+	uint32_t		index;
+};
+
+struct workqueue {
+	void			*wq_ctx;
+	pthread_t		*threads;
+	struct workqueue_item	*next_item;
+	struct workqueue_item	*last_item;
+	pthread_mutex_t		lock;
+	pthread_cond_t		wakeup;
+	unsigned int		item_count;
+	unsigned int		thread_count;
+	bool			terminate;
+};
+
+int workqueue_create(struct workqueue *wq, void *wq_ctx,
+		unsigned int nr_workers);
+int workqueue_add(struct workqueue *wq, workqueue_func_t fn,
+		uint32_t index, void *arg);
+void workqueue_destroy(struct workqueue *wq);
+
+#endif	/* __LIBFROG_WORKQUEUE_H__ */
diff --git a/repair/threads.h b/repair/threads.h
index 22f74d1f..55c7c632 100644
--- a/repair/threads.h
+++ b/repair/threads.h
@@ -3,7 +3,7 @@
 #ifndef	_XFS_REPAIR_THREADS_H_
 #define	_XFS_REPAIR_THREADS_H_
 
-#include "workqueue.h"
+#include "libfrog/workqueue.h"
 
 void	thread_init(void);
 
diff --git a/scrub/fscounters.c b/scrub/fscounters.c
index f8cc1e94..9635c44f 100644
--- a/scrub/fscounters.c
+++ b/scrub/fscounters.c
@@ -11,7 +11,7 @@
 #include "xfs_arch.h"
 #include "xfs_format.h"
 #include "path.h"
-#include "workqueue.h"
+#include "libfrog/workqueue.h"
 #include "xfs_scrub.h"
 #include "common.h"
 #include "fscounters.h"
diff --git a/scrub/inodes.c b/scrub/inodes.c
index faffef54..19923de5 100644
--- a/scrub/inodes.c
+++ b/scrub/inodes.c
@@ -13,7 +13,7 @@
 #include "xfs_format.h"
 #include "handle.h"
 #include "path.h"
-#include "workqueue.h"
+#include "libfrog/workqueue.h"
 #include "xfs_scrub.h"
 #include "common.h"
 #include "inodes.h"
diff --git a/scrub/phase1.c b/scrub/phase1.c
index 23df9a15..d0e77cab 100644
--- a/scrub/phase1.c
+++ b/scrub/phase1.c
@@ -14,7 +14,7 @@
 #include <stdint.h>
 #include <pthread.h>
 #include "libfrog.h"
-#include "workqueue.h"
+#include "libfrog/workqueue.h"
 #include "input.h"
 #include "path.h"
 #include "handle.h"
diff --git a/scrub/phase2.c b/scrub/phase2.c
index a80da7fd..baec11dd 100644
--- a/scrub/phase2.c
+++ b/scrub/phase2.c
@@ -9,7 +9,7 @@
 #include <sys/statvfs.h>
 #include "list.h"
 #include "path.h"
-#include "workqueue.h"
+#include "libfrog/workqueue.h"
 #include "xfs_scrub.h"
 #include "common.h"
 #include "scrub.h"
diff --git a/scrub/phase3.c b/scrub/phase3.c
index 8c02f1cb..64a499c3 100644
--- a/scrub/phase3.c
+++ b/scrub/phase3.c
@@ -9,7 +9,7 @@
 #include <sys/statvfs.h>
 #include "list.h"
 #include "path.h"
-#include "workqueue.h"
+#include "libfrog/workqueue.h"
 #include "xfs_scrub.h"
 #include "common.h"
 #include "counter.h"
diff --git a/scrub/phase4.c b/scrub/phase4.c
index 49f00723..14074835 100644
--- a/scrub/phase4.c
+++ b/scrub/phase4.c
@@ -10,7 +10,7 @@
 #include <sys/statvfs.h>
 #include "list.h"
 #include "path.h"
-#include "workqueue.h"
+#include "libfrog/workqueue.h"
 #include "xfs_scrub.h"
 #include "common.h"
 #include "progress.h"
diff --git a/scrub/phase5.c b/scrub/phase5.c
index f3ee22e6..ab015821 100644
--- a/scrub/phase5.c
+++ b/scrub/phase5.c
@@ -15,7 +15,7 @@
 #include "handle.h"
 #include "list.h"
 #include "path.h"
-#include "workqueue.h"
+#include "libfrog/workqueue.h"
 #include "xfs_scrub.h"
 #include "common.h"
 #include "inodes.h"
diff --git a/scrub/phase6.c b/scrub/phase6.c
index 9b0d228a..d0e62cea 100644
--- a/scrub/phase6.c
+++ b/scrub/phase6.c
@@ -9,7 +9,7 @@
 #include <sys/statvfs.h>
 #include "handle.h"
 #include "path.h"
-#include "workqueue.h"
+#include "libfrog/workqueue.h"
 #include "xfs_scrub.h"
 #include "common.h"
 #include "libfrog/bitmap.h"
diff --git a/scrub/read_verify.c b/scrub/read_verify.c
index d56f4893..828f6be6 100644
--- a/scrub/read_verify.c
+++ b/scrub/read_verify.c
@@ -8,7 +8,7 @@
 #include <stdlib.h>
 #include <sys/statvfs.h>
 #include "libfrog/ptvar.h"
-#include "workqueue.h"
+#include "libfrog/workqueue.h"
 #include "path.h"
 #include "xfs_scrub.h"
 #include "common.h"
diff --git a/scrub/spacemap.c b/scrub/spacemap.c
index c3621a3a..774efbaa 100644
--- a/scrub/spacemap.c
+++ b/scrub/spacemap.c
@@ -8,7 +8,7 @@
 #include <string.h>
 #include <pthread.h>
 #include <sys/statvfs.h>
-#include "workqueue.h"
+#include "libfrog/workqueue.h"
 #include "path.h"
 #include "xfs_scrub.h"
 #include "common.h"
diff --git a/scrub/vfs.c b/scrub/vfs.c
index 7b0b5bcd..7d79e7f7 100644
--- a/scrub/vfs.c
+++ b/scrub/vfs.c
@@ -10,7 +10,7 @@
 #include <sys/statvfs.h>
 #include "handle.h"
 #include "path.h"
-#include "workqueue.h"
+#include "libfrog/workqueue.h"
 #include "xfs_scrub.h"
 #include "common.h"
 #include "vfs.h"


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 09/12] libfrog: move crc32c.h to libfrog/
  2019-09-04  4:35 [PATCH 00/12] libfrog: move header files Darrick J. Wong
                   ` (7 preceding siblings ...)
  2019-09-04  4:36 ` [PATCH 08/12] libfrog: move workqueue.h " Darrick J. Wong
@ 2019-09-04  4:36 ` Darrick J. Wong
  2019-09-04 23:37   ` Dave Chinner
  2019-09-04  4:36 ` [PATCH 10/12] libfrog: move path.h " Darrick J. Wong
                   ` (2 subsequent siblings)
  11 siblings, 1 reply; 25+ messages in thread
From: Darrick J. Wong @ 2019-09-04  4:36 UTC (permalink / raw)
  To: sandeen, darrick.wong; +Cc: linux-xfs

From: Darrick J. Wong <darrick.wong@oracle.com>

Move this header to libfrog since the code is there already.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
---
 include/crc32c.h         |   11 -
 include/crc32cselftest.h |  706 ----------------------------------------------
 io/crc32cselftest.c      |    4 
 libfrog/Makefile         |    2 
 libfrog/crc32c.h         |   11 +
 libfrog/crc32cselftest.h |  706 ++++++++++++++++++++++++++++++++++++++++++++++
 libxfs/libxfs_priv.h     |    2 
 7 files changed, 722 insertions(+), 720 deletions(-)
 delete mode 100644 include/crc32c.h
 delete mode 100644 include/crc32cselftest.h
 create mode 100644 libfrog/crc32c.h
 create mode 100644 libfrog/crc32cselftest.h


diff --git a/include/crc32c.h b/include/crc32c.h
deleted file mode 100644
index b4d8aa05..00000000
--- a/include/crc32c.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * Copyright (c) 2000-2005 Silicon Graphics, Inc.
- * All Rights Reserved.
- */
-#ifndef LIBFROG_CRC32C_H_
-#define LIBFROG_CRC32C_H_
-
-extern uint32_t crc32c_le(uint32_t crc, unsigned char const *p, size_t len);
-
-#endif /* LIBFROG_CRC32C_H_ */
diff --git a/include/crc32cselftest.h b/include/crc32cselftest.h
deleted file mode 100644
index 11da676b..00000000
--- a/include/crc32cselftest.h
+++ /dev/null
@@ -1,706 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * Aug 8, 2011 Bob Pearson with help from Joakim Tjernlund and George Spelvin
- * cleaned up code to current version of sparse and added the slicing-by-8
- * algorithm to the closely similar existing slicing-by-4 algorithm.
- * Oct 15, 2000 Matt Domsch <Matt_Domsch@dell.com>
- * Nicer crc32 functions/docs submitted by linux@horizon.com.  Thanks!
- * Code was from the public domain, copyright abandoned.  Code was
- * subsequently included in the kernel, thus was re-licensed under the
- * GNU GPL v2.
- * Oct 12, 2000 Matt Domsch <Matt_Domsch@dell.com>
- * Same crc32 function was used in 5 other places in the kernel.
- * I made one version, and deleted the others.
- * There are various incantations of crc32().  Some use a seed of 0 or ~0.
- * Some xor at the end with ~0.  The generic crc32() function takes
- * seed as an argument, and doesn't xor at the end.  Then individual
- * users can do whatever they need.
- *   drivers/net/smc9194.c uses seed ~0, doesn't xor with ~0.
- *   fs/jffs2 uses seed 0, doesn't xor with ~0.
- *   fs/partitions/efi.c uses seed ~0, xor's with ~0.
- */
-
-/* see: Documentation/crc32.txt for a description of algorithms */
-
-/*
- * lifted from the 3.8-rc2 kernel source for xfsprogs. Killed CONFIG_X86
- * specific bits for just the generic algorithm. Also removed the big endian
- * version of the algorithm as XFS only uses the little endian CRC version to
- * match the hardware acceleration available on Intel CPUs.
- */
-
-/* This is just the crc32 self test bits from crc32.c. */
-
-#ifndef _LIBFROG_CRC32CSELFTEST_H_
-#define _LIBFROG_CRC32CSELFTEST_H_
-
-/* 4096 random bytes */
-static uint8_t __attribute__((__aligned__(8))) test_buf[] =
-{
-	0x5b, 0x85, 0x21, 0xcb, 0x09, 0x68, 0x7d, 0x30,
-	0xc7, 0x69, 0xd7, 0x30, 0x92, 0xde, 0x59, 0xe4,
-	0xc9, 0x6e, 0x8b, 0xdb, 0x98, 0x6b, 0xaa, 0x60,
-	0xa8, 0xb5, 0xbc, 0x6c, 0xa9, 0xb1, 0x5b, 0x2c,
-	0xea, 0xb4, 0x92, 0x6a, 0x3f, 0x79, 0x91, 0xe4,
-	0xe9, 0x70, 0x51, 0x8c, 0x7f, 0x95, 0x6f, 0x1a,
-	0x56, 0xa1, 0x5c, 0x27, 0x03, 0x67, 0x9f, 0x3a,
-	0xe2, 0x31, 0x11, 0x29, 0x6b, 0x98, 0xfc, 0xc4,
-	0x53, 0x24, 0xc5, 0x8b, 0xce, 0x47, 0xb2, 0xb9,
-	0x32, 0xcb, 0xc1, 0xd0, 0x03, 0x57, 0x4e, 0xd4,
-	0xe9, 0x3c, 0xa1, 0x63, 0xcf, 0x12, 0x0e, 0xca,
-	0xe1, 0x13, 0xd1, 0x93, 0xa6, 0x88, 0x5c, 0x61,
-	0x5b, 0xbb, 0xf0, 0x19, 0x46, 0xb4, 0xcf, 0x9e,
-	0xb6, 0x6b, 0x4c, 0x3a, 0xcf, 0x60, 0xf9, 0x7a,
-	0x8d, 0x07, 0x63, 0xdb, 0x40, 0xe9, 0x0b, 0x6f,
-	0xad, 0x97, 0xf1, 0xed, 0xd0, 0x1e, 0x26, 0xfd,
-	0xbf, 0xb7, 0xc8, 0x04, 0x94, 0xf8, 0x8b, 0x8c,
-	0xf1, 0xab, 0x7a, 0xd4, 0xdd, 0xf3, 0xe8, 0x88,
-	0xc3, 0xed, 0x17, 0x8a, 0x9b, 0x40, 0x0d, 0x53,
-	0x62, 0x12, 0x03, 0x5f, 0x1b, 0x35, 0x32, 0x1f,
-	0xb4, 0x7b, 0x93, 0x78, 0x0d, 0xdb, 0xce, 0xa4,
-	0xc0, 0x47, 0xd5, 0xbf, 0x68, 0xe8, 0x5d, 0x74,
-	0x8f, 0x8e, 0x75, 0x1c, 0xb2, 0x4f, 0x9a, 0x60,
-	0xd1, 0xbe, 0x10, 0xf4, 0x5c, 0xa1, 0x53, 0x09,
-	0xa5, 0xe0, 0x09, 0x54, 0x85, 0x5c, 0xdc, 0x07,
-	0xe7, 0x21, 0x69, 0x7b, 0x8a, 0xfd, 0x90, 0xf1,
-	0x22, 0xd0, 0xb4, 0x36, 0x28, 0xe6, 0xb8, 0x0f,
-	0x39, 0xde, 0xc8, 0xf3, 0x86, 0x60, 0x34, 0xd2,
-	0x5e, 0xdf, 0xfd, 0xcf, 0x0f, 0xa9, 0x65, 0xf0,
-	0xd5, 0x4d, 0x96, 0x40, 0xe3, 0xdf, 0x3f, 0x95,
-	0x5a, 0x39, 0x19, 0x93, 0xf4, 0x75, 0xce, 0x22,
-	0x00, 0x1c, 0x93, 0xe2, 0x03, 0x66, 0xf4, 0x93,
-	0x73, 0x86, 0x81, 0x8e, 0x29, 0x44, 0x48, 0x86,
-	0x61, 0x7c, 0x48, 0xa3, 0x43, 0xd2, 0x9c, 0x8d,
-	0xd4, 0x95, 0xdd, 0xe1, 0x22, 0x89, 0x3a, 0x40,
-	0x4c, 0x1b, 0x8a, 0x04, 0xa8, 0x09, 0x69, 0x8b,
-	0xea, 0xc6, 0x55, 0x8e, 0x57, 0xe6, 0x64, 0x35,
-	0xf0, 0xc7, 0x16, 0x9f, 0x5d, 0x5e, 0x86, 0x40,
-	0x46, 0xbb, 0xe5, 0x45, 0x88, 0xfe, 0xc9, 0x63,
-	0x15, 0xfb, 0xf5, 0xbd, 0x71, 0x61, 0xeb, 0x7b,
-	0x78, 0x70, 0x07, 0x31, 0x03, 0x9f, 0xb2, 0xc8,
-	0xa7, 0xab, 0x47, 0xfd, 0xdf, 0xa0, 0x78, 0x72,
-	0xa4, 0x2a, 0xe4, 0xb6, 0xba, 0xc0, 0x1e, 0x86,
-	0x71, 0xe6, 0x3d, 0x18, 0x37, 0x70, 0xe6, 0xff,
-	0xe0, 0xbc, 0x0b, 0x22, 0xa0, 0x1f, 0xd3, 0xed,
-	0xa2, 0x55, 0x39, 0xab, 0xa8, 0x13, 0x73, 0x7c,
-	0x3f, 0xb2, 0xd6, 0x19, 0xac, 0xff, 0x99, 0xed,
-	0xe8, 0xe6, 0xa6, 0x22, 0xe3, 0x9c, 0xf1, 0x30,
-	0xdc, 0x01, 0x0a, 0x56, 0xfa, 0xe4, 0xc9, 0x99,
-	0xdd, 0xa8, 0xd8, 0xda, 0x35, 0x51, 0x73, 0xb4,
-	0x40, 0x86, 0x85, 0xdb, 0x5c, 0xd5, 0x85, 0x80,
-	0x14, 0x9c, 0xfd, 0x98, 0xa9, 0x82, 0xc5, 0x37,
-	0xff, 0x32, 0x5d, 0xd0, 0x0b, 0xfa, 0xdc, 0x04,
-	0x5e, 0x09, 0xd2, 0xca, 0x17, 0x4b, 0x1a, 0x8e,
-	0x15, 0xe1, 0xcc, 0x4e, 0x52, 0x88, 0x35, 0xbd,
-	0x48, 0xfe, 0x15, 0xa0, 0x91, 0xfd, 0x7e, 0x6c,
-	0x0e, 0x5d, 0x79, 0x1b, 0x81, 0x79, 0xd2, 0x09,
-	0x34, 0x70, 0x3d, 0x81, 0xec, 0xf6, 0x24, 0xbb,
-	0xfb, 0xf1, 0x7b, 0xdf, 0x54, 0xea, 0x80, 0x9b,
-	0xc7, 0x99, 0x9e, 0xbd, 0x16, 0x78, 0x12, 0x53,
-	0x5e, 0x01, 0xa7, 0x4e, 0xbd, 0x67, 0xe1, 0x9b,
-	0x4c, 0x0e, 0x61, 0x45, 0x97, 0xd2, 0xf0, 0x0f,
-	0xfe, 0x15, 0x08, 0xb7, 0x11, 0x4c, 0xe7, 0xff,
-	0x81, 0x53, 0xff, 0x91, 0x25, 0x38, 0x7e, 0x40,
-	0x94, 0xe5, 0xe0, 0xad, 0xe6, 0xd9, 0x79, 0xb6,
-	0x92, 0xc9, 0xfc, 0xde, 0xc3, 0x1a, 0x23, 0xbb,
-	0xdd, 0xc8, 0x51, 0x0c, 0x3a, 0x72, 0xfa, 0x73,
-	0x6f, 0xb7, 0xee, 0x61, 0x39, 0x03, 0x01, 0x3f,
-	0x7f, 0x94, 0x2e, 0x2e, 0xba, 0x3a, 0xbb, 0xb4,
-	0xfa, 0x6a, 0x17, 0xfe, 0xea, 0xef, 0x5e, 0x66,
-	0x97, 0x3f, 0x32, 0x3d, 0xd7, 0x3e, 0xb1, 0xf1,
-	0x6c, 0x14, 0x4c, 0xfd, 0x37, 0xd3, 0x38, 0x80,
-	0xfb, 0xde, 0xa6, 0x24, 0x1e, 0xc8, 0xca, 0x7f,
-	0x3a, 0x93, 0xd8, 0x8b, 0x18, 0x13, 0xb2, 0xe5,
-	0xe4, 0x93, 0x05, 0x53, 0x4f, 0x84, 0x66, 0xa7,
-	0x58, 0x5c, 0x7b, 0x86, 0x52, 0x6d, 0x0d, 0xce,
-	0xa4, 0x30, 0x7d, 0xb6, 0x18, 0x9f, 0xeb, 0xff,
-	0x22, 0xbb, 0x72, 0x29, 0xb9, 0x44, 0x0b, 0x48,
-	0x1e, 0x84, 0x71, 0x81, 0xe3, 0x6d, 0x73, 0x26,
-	0x92, 0xb4, 0x4d, 0x2a, 0x29, 0xb8, 0x1f, 0x72,
-	0xed, 0xd0, 0xe1, 0x64, 0x77, 0xea, 0x8e, 0x88,
-	0x0f, 0xef, 0x3f, 0xb1, 0x3b, 0xad, 0xf9, 0xc9,
-	0x8b, 0xd0, 0xac, 0xc6, 0xcc, 0xa9, 0x40, 0xcc,
-	0x76, 0xf6, 0x3b, 0x53, 0xb5, 0x88, 0xcb, 0xc8,
-	0x37, 0xf1, 0xa2, 0xba, 0x23, 0x15, 0x99, 0x09,
-	0xcc, 0xe7, 0x7a, 0x3b, 0x37, 0xf7, 0x58, 0xc8,
-	0x46, 0x8c, 0x2b, 0x2f, 0x4e, 0x0e, 0xa6, 0x5c,
-	0xea, 0x85, 0x55, 0xba, 0x02, 0x0e, 0x0e, 0x48,
-	0xbc, 0xe1, 0xb1, 0x01, 0x35, 0x79, 0x13, 0x3d,
-	0x1b, 0xc0, 0x53, 0x68, 0x11, 0xe7, 0x95, 0x0f,
-	0x9d, 0x3f, 0x4c, 0x47, 0x7b, 0x4d, 0x1c, 0xae,
-	0x50, 0x9b, 0xcb, 0xdd, 0x05, 0x8d, 0x9a, 0x97,
-	0xfd, 0x8c, 0xef, 0x0c, 0x1d, 0x67, 0x73, 0xa8,
-	0x28, 0x36, 0xd5, 0xb6, 0x92, 0x33, 0x40, 0x75,
-	0x0b, 0x51, 0xc3, 0x64, 0xba, 0x1d, 0xc2, 0xcc,
-	0xee, 0x7d, 0x54, 0x0f, 0x27, 0x69, 0xa7, 0x27,
-	0x63, 0x30, 0x29, 0xd9, 0xc8, 0x84, 0xd8, 0xdf,
-	0x9f, 0x68, 0x8d, 0x04, 0xca, 0xa6, 0xc5, 0xc7,
-	0x7a, 0x5c, 0xc8, 0xd1, 0xcb, 0x4a, 0xec, 0xd0,
-	0xd8, 0x20, 0x69, 0xc5, 0x17, 0xcd, 0x78, 0xc8,
-	0x75, 0x23, 0x30, 0x69, 0xc9, 0xd4, 0xea, 0x5c,
-	0x4f, 0x6b, 0x86, 0x3f, 0x8b, 0xfe, 0xee, 0x44,
-	0xc9, 0x7c, 0xb7, 0xdd, 0x3e, 0xe5, 0xec, 0x54,
-	0x03, 0x3e, 0xaa, 0x82, 0xc6, 0xdf, 0xb2, 0x38,
-	0x0e, 0x5d, 0xb3, 0x88, 0xd9, 0xd3, 0x69, 0x5f,
-	0x8f, 0x70, 0x8a, 0x7e, 0x11, 0xd9, 0x1e, 0x7b,
-	0x38, 0xf1, 0x42, 0x1a, 0xc0, 0x35, 0xf5, 0xc7,
-	0x36, 0x85, 0xf5, 0xf7, 0xb8, 0x7e, 0xc7, 0xef,
-	0x18, 0xf1, 0x63, 0xd6, 0x7a, 0xc6, 0xc9, 0x0e,
-	0x4d, 0x69, 0x4f, 0x84, 0xef, 0x26, 0x41, 0x0c,
-	0xec, 0xc7, 0xe0, 0x7e, 0x3c, 0x67, 0x01, 0x4c,
-	0x62, 0x1a, 0x20, 0x6f, 0xee, 0x47, 0x4d, 0xc0,
-	0x99, 0x13, 0x8d, 0x91, 0x4a, 0x26, 0xd4, 0x37,
-	0x28, 0x90, 0x58, 0x75, 0x66, 0x2b, 0x0a, 0xdf,
-	0xda, 0xee, 0x92, 0x25, 0x90, 0x62, 0x39, 0x9e,
-	0x44, 0x98, 0xad, 0xc1, 0x88, 0xed, 0xe4, 0xb4,
-	0xaf, 0xf5, 0x8c, 0x9b, 0x48, 0x4d, 0x56, 0x60,
-	0x97, 0x0f, 0x61, 0x59, 0x9e, 0xa6, 0x27, 0xfe,
-	0xc1, 0x91, 0x15, 0x38, 0xb8, 0x0f, 0xae, 0x61,
-	0x7d, 0x26, 0x13, 0x5a, 0x73, 0xff, 0x1c, 0xa3,
-	0x61, 0x04, 0x58, 0x48, 0x55, 0x44, 0x11, 0xfe,
-	0x15, 0xca, 0xc3, 0xbd, 0xca, 0xc5, 0xb4, 0x40,
-	0x5d, 0x1b, 0x7f, 0x39, 0xb5, 0x9c, 0x35, 0xec,
-	0x61, 0x15, 0x32, 0x32, 0xb8, 0x4e, 0x40, 0x9f,
-	0x17, 0x1f, 0x0a, 0x4d, 0xa9, 0x91, 0xef, 0xb7,
-	0xb0, 0xeb, 0xc2, 0x83, 0x9a, 0x6c, 0xd2, 0x79,
-	0x43, 0x78, 0x5e, 0x2f, 0xe5, 0xdd, 0x1a, 0x3c,
-	0x45, 0xab, 0x29, 0x40, 0x3a, 0x37, 0x5b, 0x6f,
-	0xd7, 0xfc, 0x48, 0x64, 0x3c, 0x49, 0xfb, 0x21,
-	0xbe, 0xc3, 0xff, 0x07, 0xfb, 0x17, 0xe9, 0xc9,
-	0x0c, 0x4c, 0x5c, 0x15, 0x9e, 0x8e, 0x22, 0x30,
-	0x0a, 0xde, 0x48, 0x7f, 0xdb, 0x0d, 0xd1, 0x2b,
-	0x87, 0x38, 0x9e, 0xcc, 0x5a, 0x01, 0x16, 0xee,
-	0x75, 0x49, 0x0d, 0x30, 0x01, 0x34, 0x6a, 0xb6,
-	0x9a, 0x5a, 0x2a, 0xec, 0xbb, 0x48, 0xac, 0xd3,
-	0x77, 0x83, 0xd8, 0x08, 0x86, 0x4f, 0x48, 0x09,
-	0x29, 0x41, 0x79, 0xa1, 0x03, 0x12, 0xc4, 0xcd,
-	0x90, 0x55, 0x47, 0x66, 0x74, 0x9a, 0xcc, 0x4f,
-	0x35, 0x8c, 0xd6, 0x98, 0xef, 0xeb, 0x45, 0xb9,
-	0x9a, 0x26, 0x2f, 0x39, 0xa5, 0x70, 0x6d, 0xfc,
-	0xb4, 0x51, 0xee, 0xf4, 0x9c, 0xe7, 0x38, 0x59,
-	0xad, 0xf4, 0xbc, 0x46, 0xff, 0x46, 0x8e, 0x60,
-	0x9c, 0xa3, 0x60, 0x1d, 0xf8, 0x26, 0x72, 0xf5,
-	0x72, 0x9d, 0x68, 0x80, 0x04, 0xf6, 0x0b, 0xa1,
-	0x0a, 0xd5, 0xa7, 0x82, 0x3a, 0x3e, 0x47, 0xa8,
-	0x5a, 0xde, 0x59, 0x4f, 0x7b, 0x07, 0xb3, 0xe9,
-	0x24, 0x19, 0x3d, 0x34, 0x05, 0xec, 0xf1, 0xab,
-	0x6e, 0x64, 0x8f, 0xd3, 0xe6, 0x41, 0x86, 0x80,
-	0x70, 0xe3, 0x8d, 0x60, 0x9c, 0x34, 0x25, 0x01,
-	0x07, 0x4d, 0x19, 0x41, 0x4e, 0x3d, 0x5c, 0x7e,
-	0xa8, 0xf5, 0xcc, 0xd5, 0x7b, 0xe2, 0x7d, 0x3d,
-	0x49, 0x86, 0x7d, 0x07, 0xb7, 0x10, 0xe3, 0x35,
-	0xb8, 0x84, 0x6d, 0x76, 0xab, 0x17, 0xc6, 0x38,
-	0xb4, 0xd3, 0x28, 0x57, 0xad, 0xd3, 0x88, 0x5a,
-	0xda, 0xea, 0xc8, 0x94, 0xcc, 0x37, 0x19, 0xac,
-	0x9c, 0x9f, 0x4b, 0x00, 0x15, 0xc0, 0xc8, 0xca,
-	0x1f, 0x15, 0xaa, 0xe0, 0xdb, 0xf9, 0x2f, 0x57,
-	0x1b, 0x24, 0xc7, 0x6f, 0x76, 0x29, 0xfb, 0xed,
-	0x25, 0x0d, 0xc0, 0xfe, 0xbd, 0x5a, 0xbf, 0x20,
-	0x08, 0x51, 0x05, 0xec, 0x71, 0xa3, 0xbf, 0xef,
-	0x5e, 0x99, 0x75, 0xdb, 0x3c, 0x5f, 0x9a, 0x8c,
-	0xbb, 0x19, 0x5c, 0x0e, 0x93, 0x19, 0xf8, 0x6a,
-	0xbc, 0xf2, 0x12, 0x54, 0x2f, 0xcb, 0x28, 0x64,
-	0x88, 0xb3, 0x92, 0x0d, 0x96, 0xd1, 0xa6, 0xe4,
-	0x1f, 0xf1, 0x4d, 0xa4, 0xab, 0x1c, 0xee, 0x54,
-	0xf2, 0xad, 0x29, 0x6d, 0x32, 0x37, 0xb2, 0x16,
-	0x77, 0x5c, 0xdc, 0x2e, 0x54, 0xec, 0x75, 0x26,
-	0xc6, 0x36, 0xd9, 0x17, 0x2c, 0xf1, 0x7a, 0xdc,
-	0x4b, 0xf1, 0xe2, 0xd9, 0x95, 0xba, 0xac, 0x87,
-	0xc1, 0xf3, 0x8e, 0x58, 0x08, 0xd8, 0x87, 0x60,
-	0xc9, 0xee, 0x6a, 0xde, 0xa4, 0xd2, 0xfc, 0x0d,
-	0xe5, 0x36, 0xc4, 0x5c, 0x52, 0xb3, 0x07, 0x54,
-	0x65, 0x24, 0xc1, 0xb1, 0xd1, 0xb1, 0x53, 0x13,
-	0x31, 0x79, 0x7f, 0x05, 0x76, 0xeb, 0x37, 0x59,
-	0x15, 0x2b, 0xd1, 0x3f, 0xac, 0x08, 0x97, 0xeb,
-	0x91, 0x98, 0xdf, 0x6c, 0x09, 0x0d, 0x04, 0x9f,
-	0xdc, 0x3b, 0x0e, 0x60, 0x68, 0x47, 0x23, 0x15,
-	0x16, 0xc6, 0x0b, 0x35, 0xf8, 0x77, 0xa2, 0x78,
-	0x50, 0xd4, 0x64, 0x22, 0x33, 0xff, 0xfb, 0x93,
-	0x71, 0x46, 0x50, 0x39, 0x1b, 0x9c, 0xea, 0x4e,
-	0x8d, 0x0c, 0x37, 0xe5, 0x5c, 0x51, 0x3a, 0x31,
-	0xb2, 0x85, 0x84, 0x3f, 0x41, 0xee, 0xa2, 0xc1,
-	0xc6, 0x13, 0x3b, 0x54, 0x28, 0xd2, 0x18, 0x37,
-	0xcc, 0x46, 0x9f, 0x6a, 0x91, 0x3d, 0x5a, 0x15,
-	0x3c, 0x89, 0xa3, 0x61, 0x06, 0x7d, 0x2e, 0x78,
-	0xbe, 0x7d, 0x40, 0xba, 0x2f, 0x95, 0xb1, 0x2f,
-	0x87, 0x3b, 0x8a, 0xbe, 0x6a, 0xf4, 0xc2, 0x31,
-	0x74, 0xee, 0x91, 0xe0, 0x23, 0xaa, 0x5d, 0x7f,
-	0xdd, 0xf0, 0x44, 0x8c, 0x0b, 0x59, 0x2b, 0xfc,
-	0x48, 0x3a, 0xdf, 0x07, 0x05, 0x38, 0x6c, 0xc9,
-	0xeb, 0x18, 0x24, 0x68, 0x8d, 0x58, 0x98, 0xd3,
-	0x31, 0xa3, 0xe4, 0x70, 0x59, 0xb1, 0x21, 0xbe,
-	0x7e, 0x65, 0x7d, 0xb8, 0x04, 0xab, 0xf6, 0xe4,
-	0xd7, 0xda, 0xec, 0x09, 0x8f, 0xda, 0x6d, 0x24,
-	0x07, 0xcc, 0x29, 0x17, 0x05, 0x78, 0x1a, 0xc1,
-	0xb1, 0xce, 0xfc, 0xaa, 0x2d, 0xe7, 0xcc, 0x85,
-	0x84, 0x84, 0x03, 0x2a, 0x0c, 0x3f, 0xa9, 0xf8,
-	0xfd, 0x84, 0x53, 0x59, 0x5c, 0xf0, 0xd4, 0x09,
-	0xf0, 0xd2, 0x6c, 0x32, 0x03, 0xb0, 0xa0, 0x8c,
-	0x52, 0xeb, 0x23, 0x91, 0x88, 0x43, 0x13, 0x46,
-	0xf6, 0x1e, 0xb4, 0x1b, 0xf5, 0x8e, 0x3a, 0xb5,
-	0x3d, 0x00, 0xf6, 0xe5, 0x08, 0x3d, 0x5f, 0x39,
-	0xd3, 0x21, 0x69, 0xbc, 0x03, 0x22, 0x3a, 0xd2,
-	0x5c, 0x84, 0xf8, 0x15, 0xc4, 0x80, 0x0b, 0xbc,
-	0x29, 0x3c, 0xf3, 0x95, 0x98, 0xcd, 0x8f, 0x35,
-	0xbc, 0xa5, 0x3e, 0xfc, 0xd4, 0x13, 0x9e, 0xde,
-	0x4f, 0xce, 0x71, 0x9d, 0x09, 0xad, 0xf2, 0x80,
-	0x6b, 0x65, 0x7f, 0x03, 0x00, 0x14, 0x7c, 0x15,
-	0x85, 0x40, 0x6d, 0x70, 0xea, 0xdc, 0xb3, 0x63,
-	0x35, 0x4f, 0x4d, 0xe0, 0xd9, 0xd5, 0x3c, 0x58,
-	0x56, 0x23, 0x80, 0xe2, 0x36, 0xdd, 0x75, 0x1d,
-	0x94, 0x11, 0x41, 0x8e, 0xe0, 0x81, 0x8e, 0xcf,
-	0xe0, 0xe5, 0xf6, 0xde, 0xd1, 0xe7, 0x04, 0x12,
-	0x79, 0x92, 0x2b, 0x71, 0x2a, 0x79, 0x8b, 0x7c,
-	0x44, 0x79, 0x16, 0x30, 0x4e, 0xf4, 0xf6, 0x9b,
-	0xb7, 0x40, 0xa3, 0x5a, 0xa7, 0x69, 0x3e, 0xc1,
-	0x3a, 0x04, 0xd0, 0x88, 0xa0, 0x3b, 0xdd, 0xc6,
-	0x9e, 0x7e, 0x1e, 0x1e, 0x8f, 0x44, 0xf7, 0x73,
-	0x67, 0x1e, 0x1a, 0x78, 0xfa, 0x62, 0xf4, 0xa9,
-	0xa8, 0xc6, 0x5b, 0xb8, 0xfa, 0x06, 0x7d, 0x5e,
-	0x38, 0x1c, 0x9a, 0x39, 0xe9, 0x39, 0x98, 0x22,
-	0x0b, 0xa7, 0xac, 0x0b, 0xf3, 0xbc, 0xf1, 0xeb,
-	0x8c, 0x81, 0xe3, 0x48, 0x8a, 0xed, 0x42, 0xc2,
-	0x38, 0xcf, 0x3e, 0xda, 0xd2, 0x89, 0x8d, 0x9c,
-	0x53, 0xb5, 0x2f, 0x41, 0x01, 0x26, 0x84, 0x9c,
-	0xa3, 0x56, 0xf6, 0x49, 0xc7, 0xd4, 0x9f, 0x93,
-	0x1b, 0x96, 0x49, 0x5e, 0xad, 0xb3, 0x84, 0x1f,
-	0x3c, 0xa4, 0xe0, 0x9b, 0xd1, 0x90, 0xbc, 0x38,
-	0x6c, 0xdd, 0x95, 0x4d, 0x9d, 0xb1, 0x71, 0x57,
-	0x2d, 0x34, 0xe8, 0xb8, 0x42, 0xc7, 0x99, 0x03,
-	0xc7, 0x07, 0x30, 0x65, 0x91, 0x55, 0xd5, 0x90,
-	0x70, 0x97, 0x37, 0x68, 0xd4, 0x11, 0xf9, 0xe8,
-	0xce, 0xec, 0xdc, 0x34, 0xd5, 0xd3, 0xb7, 0xc4,
-	0xb8, 0x97, 0x05, 0x92, 0xad, 0xf8, 0xe2, 0x36,
-	0x64, 0x41, 0xc9, 0xc5, 0x41, 0x77, 0x52, 0xd7,
-	0x2c, 0xa5, 0x24, 0x2f, 0xd9, 0x34, 0x0b, 0x47,
-	0x35, 0xa7, 0x28, 0x8b, 0xc5, 0xcd, 0xe9, 0x46,
-	0xac, 0x39, 0x94, 0x3c, 0x10, 0xc6, 0x29, 0x73,
-	0x0e, 0x0e, 0x5d, 0xe0, 0x71, 0x03, 0x8a, 0x72,
-	0x0e, 0x26, 0xb0, 0x7d, 0x84, 0xed, 0x95, 0x23,
-	0x49, 0x5a, 0x45, 0x83, 0x45, 0x60, 0x11, 0x4a,
-	0x46, 0x31, 0xd4, 0xd8, 0x16, 0x54, 0x98, 0x58,
-	0xed, 0x6d, 0xcc, 0x5d, 0xd6, 0x50, 0x61, 0x9f,
-	0x9d, 0xc5, 0x3e, 0x9d, 0x32, 0x47, 0xde, 0x96,
-	0xe1, 0x5d, 0xd8, 0xf8, 0xb4, 0x69, 0x6f, 0xb9,
-	0x15, 0x90, 0x57, 0x7a, 0xf6, 0xad, 0xb0, 0x5b,
-	0xf5, 0xa6, 0x36, 0x94, 0xfd, 0x84, 0xce, 0x1c,
-	0x0f, 0x4b, 0xd0, 0xc2, 0x5b, 0x6b, 0x56, 0xef,
-	0x73, 0x93, 0x0b, 0xc3, 0xee, 0xd9, 0xcf, 0xd3,
-	0xa4, 0x22, 0x58, 0xcd, 0x50, 0x6e, 0x65, 0xf4,
-	0xe9, 0xb7, 0x71, 0xaf, 0x4b, 0xb3, 0xb6, 0x2f,
-	0x0f, 0x0e, 0x3b, 0xc9, 0x85, 0x14, 0xf5, 0x17,
-	0xe8, 0x7a, 0x3a, 0xbf, 0x5f, 0x5e, 0xf8, 0x18,
-	0x48, 0xa6, 0x72, 0xab, 0x06, 0x95, 0xe9, 0xc8,
-	0xa7, 0xf4, 0x32, 0x44, 0x04, 0x0c, 0x84, 0x98,
-	0x73, 0xe3, 0x89, 0x8d, 0x5f, 0x7e, 0x4a, 0x42,
-	0x8f, 0xc5, 0x28, 0xb1, 0x82, 0xef, 0x1c, 0x97,
-	0x31, 0x3b, 0x4d, 0xe0, 0x0e, 0x10, 0x10, 0x97,
-	0x93, 0x49, 0x78, 0x2f, 0x0d, 0x86, 0x8b, 0xa1,
-	0x53, 0xa9, 0x81, 0x20, 0x79, 0xe7, 0x07, 0x77,
-	0xb6, 0xac, 0x5e, 0xd2, 0x05, 0xcd, 0xe9, 0xdb,
-	0x8a, 0x94, 0x82, 0x8a, 0x23, 0xb9, 0x3d, 0x1c,
-	0xa9, 0x7d, 0x72, 0x4a, 0xed, 0x33, 0xa3, 0xdb,
-	0x21, 0xa7, 0x86, 0x33, 0x45, 0xa5, 0xaa, 0x56,
-	0x45, 0xb5, 0x83, 0x29, 0x40, 0x47, 0x79, 0x04,
-	0x6e, 0xb9, 0x95, 0xd0, 0x81, 0x77, 0x2d, 0x48,
-	0x1e, 0xfe, 0xc3, 0xc2, 0x1e, 0xe5, 0xf2, 0xbe,
-	0xfd, 0x3b, 0x94, 0x9f, 0xc4, 0xc4, 0x26, 0x9d,
-	0xe4, 0x66, 0x1e, 0x19, 0xee, 0x6c, 0x79, 0x97,
-	0x11, 0x31, 0x4b, 0x0d, 0x01, 0xcb, 0xde, 0xa8,
-	0xf6, 0x6d, 0x7c, 0x39, 0x46, 0x4e, 0x7e, 0x3f,
-	0x94, 0x17, 0xdf, 0xa1, 0x7d, 0xd9, 0x1c, 0x8e,
-	0xbc, 0x7d, 0x33, 0x7d, 0xe3, 0x12, 0x40, 0xca,
-	0xab, 0x37, 0x11, 0x46, 0xd4, 0xae, 0xef, 0x44,
-	0xa2, 0xb3, 0x6a, 0x66, 0x0e, 0x0c, 0x90, 0x7f,
-	0xdf, 0x5c, 0x66, 0x5f, 0xf2, 0x94, 0x9f, 0xa6,
-	0x73, 0x4f, 0xeb, 0x0d, 0xad, 0xbf, 0xc0, 0x63,
-	0x5c, 0xdc, 0x46, 0x51, 0xe8, 0x8e, 0x90, 0x19,
-	0xa8, 0xa4, 0x3c, 0x91, 0x79, 0xfa, 0x7e, 0x58,
-	0x85, 0x13, 0x55, 0xc5, 0x19, 0x82, 0x37, 0x1b,
-	0x0a, 0x02, 0x1f, 0x99, 0x6b, 0x18, 0xf1, 0x28,
-	0x08, 0xa2, 0x73, 0xb8, 0x0f, 0x2e, 0xcd, 0xbf,
-	0xf3, 0x86, 0x7f, 0xea, 0xef, 0xd0, 0xbb, 0xa6,
-	0x21, 0xdf, 0x49, 0x73, 0x51, 0xcc, 0x36, 0xd3,
-	0x3e, 0xa0, 0xf8, 0x44, 0xdf, 0xd3, 0xa6, 0xbe,
-	0x8a, 0xd4, 0x57, 0xdd, 0x72, 0x94, 0x61, 0x0f,
-	0x82, 0xd1, 0x07, 0xb8, 0x7c, 0x18, 0x83, 0xdf,
-	0x3a, 0xe5, 0x50, 0x6a, 0x82, 0x20, 0xac, 0xa9,
-	0xa8, 0xff, 0xd9, 0xf3, 0x77, 0x33, 0x5a, 0x9e,
-	0x7f, 0x6d, 0xfe, 0x5d, 0x33, 0x41, 0x42, 0xe7,
-	0x6c, 0x19, 0xe0, 0x44, 0x8a, 0x15, 0xf6, 0x70,
-	0x98, 0xb7, 0x68, 0x4d, 0xfa, 0x97, 0x39, 0xb0,
-	0x8e, 0xe8, 0x84, 0x8b, 0x75, 0x30, 0xb7, 0x7d,
-	0x92, 0x69, 0x20, 0x9c, 0x81, 0xfb, 0x4b, 0xf4,
-	0x01, 0x50, 0xeb, 0xce, 0x0c, 0x1c, 0x6c, 0xb5,
-	0x4a, 0xd7, 0x27, 0x0c, 0xce, 0xbb, 0xe5, 0x85,
-	0xf0, 0xb6, 0xee, 0xd5, 0x70, 0xdd, 0x3b, 0xfc,
-	0xd4, 0x99, 0xf1, 0x33, 0xdd, 0x8b, 0xc4, 0x2f,
-	0xae, 0xab, 0x74, 0x96, 0x32, 0xc7, 0x4c, 0x56,
-	0x3c, 0x89, 0x0f, 0x96, 0x0b, 0x42, 0xc0, 0xcb,
-	0xee, 0x0f, 0x0b, 0x8c, 0xfb, 0x7e, 0x47, 0x7b,
-	0x64, 0x48, 0xfd, 0xb2, 0x00, 0x80, 0x89, 0xa5,
-	0x13, 0x55, 0x62, 0xfc, 0x8f, 0xe2, 0x42, 0x03,
-	0xb7, 0x4e, 0x2a, 0x79, 0xb4, 0x82, 0xea, 0x23,
-	0x49, 0xda, 0xaf, 0x52, 0x63, 0x1e, 0x60, 0x03,
-	0x89, 0x06, 0x44, 0x46, 0x08, 0xc3, 0xc4, 0x87,
-	0x70, 0x2e, 0xda, 0x94, 0xad, 0x6b, 0xe0, 0xe4,
-	0xd1, 0x8a, 0x06, 0xc2, 0xa8, 0xc0, 0xa7, 0x43,
-	0x3c, 0x47, 0x52, 0x0e, 0xc3, 0x77, 0x81, 0x11,
-	0x67, 0x0e, 0xa0, 0x70, 0x04, 0x47, 0x29, 0x40,
-	0x86, 0x0d, 0x34, 0x56, 0xa7, 0xc9, 0x35, 0x59,
-	0x68, 0xdc, 0x93, 0x81, 0x70, 0xee, 0x86, 0xd9,
-	0x80, 0x06, 0x40, 0x4f, 0x1a, 0x0d, 0x40, 0x30,
-	0x0b, 0xcb, 0x96, 0x47, 0xc1, 0xb7, 0x52, 0xfd,
-	0x56, 0xe0, 0x72, 0x4b, 0xfb, 0xbd, 0x92, 0x45,
-	0x61, 0x71, 0xc2, 0x33, 0x11, 0xbf, 0x52, 0x83,
-	0x79, 0x26, 0xe0, 0x49, 0x6b, 0xb7, 0x05, 0x8b,
-	0xe8, 0x0e, 0x87, 0x31, 0xd7, 0x9d, 0x8a, 0xf5,
-	0xc0, 0x5f, 0x2e, 0x58, 0x4a, 0xdb, 0x11, 0xb3,
-	0x6c, 0x30, 0x2a, 0x46, 0x19, 0xe3, 0x27, 0x84,
-	0x1f, 0x63, 0x6e, 0xf6, 0x57, 0xc7, 0xc9, 0xd8,
-	0x5e, 0xba, 0xb3, 0x87, 0xd5, 0x83, 0x26, 0x34,
-	0x21, 0x9e, 0x65, 0xde, 0x42, 0xd3, 0xbe, 0x7b,
-	0xbc, 0x91, 0x71, 0x44, 0x4d, 0x99, 0x3b, 0x31,
-	0xe5, 0x3f, 0x11, 0x4e, 0x7f, 0x13, 0x51, 0x3b,
-	0xae, 0x79, 0xc9, 0xd3, 0x81, 0x8e, 0x25, 0x40,
-	0x10, 0xfc, 0x07, 0x1e, 0xf9, 0x7b, 0x9a, 0x4b,
-	0x6c, 0xe3, 0xb3, 0xad, 0x1a, 0x0a, 0xdd, 0x9e,
-	0x59, 0x0c, 0xa2, 0xcd, 0xae, 0x48, 0x4a, 0x38,
-	0x5b, 0x47, 0x41, 0x94, 0x65, 0x6b, 0xbb, 0xeb,
-	0x5b, 0xe3, 0xaf, 0x07, 0x5b, 0xd4, 0x4a, 0xa2,
-	0xc9, 0x5d, 0x2f, 0x64, 0x03, 0xd7, 0x3a, 0x2c,
-	0x6e, 0xce, 0x76, 0x95, 0xb4, 0xb3, 0xc0, 0xf1,
-	0xe2, 0x45, 0x73, 0x7a, 0x5c, 0xab, 0xc1, 0xfc,
-	0x02, 0x8d, 0x81, 0x29, 0xb3, 0xac, 0x07, 0xec,
-	0x40, 0x7d, 0x45, 0xd9, 0x7a, 0x59, 0xee, 0x34,
-	0xf0, 0xe9, 0xd5, 0x7b, 0x96, 0xb1, 0x3d, 0x95,
-	0xcc, 0x86, 0xb5, 0xb6, 0x04, 0x2d, 0xb5, 0x92,
-	0x7e, 0x76, 0xf4, 0x06, 0xa9, 0xa3, 0x12, 0x0f,
-	0xb1, 0xaf, 0x26, 0xba, 0x7c, 0xfc, 0x7e, 0x1c,
-	0xbc, 0x2c, 0x49, 0x97, 0x53, 0x60, 0x13, 0x0b,
-	0xa6, 0x61, 0x83, 0x89, 0x42, 0xd4, 0x17, 0x0c,
-	0x6c, 0x26, 0x52, 0xc3, 0xb3, 0xd4, 0x67, 0xf5,
-	0xe3, 0x04, 0xb7, 0xf4, 0xcb, 0x80, 0xb8, 0xcb,
-	0x77, 0x56, 0x3e, 0xaa, 0x57, 0x54, 0xee, 0xb4,
-	0x2c, 0x67, 0xcf, 0xf2, 0xdc, 0xbe, 0x55, 0xf9,
-	0x43, 0x1f, 0x6e, 0x22, 0x97, 0x67, 0x7f, 0xc4,
-	0xef, 0xb1, 0x26, 0x31, 0x1e, 0x27, 0xdf, 0x41,
-	0x80, 0x47, 0x6c, 0xe2, 0xfa, 0xa9, 0x8c, 0x2a,
-	0xf6, 0xf2, 0xab, 0xf0, 0x15, 0xda, 0x6c, 0xc8,
-	0xfe, 0xb5, 0x23, 0xde, 0xa9, 0x05, 0x3f, 0x06,
-	0x54, 0x4c, 0xcd, 0xe1, 0xab, 0xfc, 0x0e, 0x62,
-	0x33, 0x31, 0x73, 0x2c, 0x76, 0xcb, 0xb4, 0x47,
-	0x1e, 0x20, 0xad, 0xd8, 0xf2, 0x31, 0xdd, 0xc4,
-	0x8b, 0x0c, 0x77, 0xbe, 0xe1, 0x8b, 0x26, 0x00,
-	0x02, 0x58, 0xd6, 0x8d, 0xef, 0xad, 0x74, 0x67,
-	0xab, 0x3f, 0xef, 0xcb, 0x6f, 0xb0, 0xcc, 0x81,
-	0x44, 0x4c, 0xaf, 0xe9, 0x49, 0x4f, 0xdb, 0xa0,
-	0x25, 0xa4, 0xf0, 0x89, 0xf1, 0xbe, 0xd8, 0x10,
-	0xff, 0xb1, 0x3b, 0x4b, 0xfa, 0x98, 0xf5, 0x79,
-	0x6d, 0x1e, 0x69, 0x4d, 0x57, 0xb1, 0xc8, 0x19,
-	0x1b, 0xbd, 0x1e, 0x8c, 0x84, 0xb7, 0x7b, 0xe8,
-	0xd2, 0x2d, 0x09, 0x41, 0x41, 0x37, 0x3d, 0xb1,
-	0x6f, 0x26, 0x5d, 0x71, 0x16, 0x3d, 0xb7, 0x83,
-	0x27, 0x2c, 0xa7, 0xb6, 0x50, 0xbd, 0x91, 0x86,
-	0xab, 0x24, 0xa1, 0x38, 0xfd, 0xea, 0x71, 0x55,
-	0x7e, 0x9a, 0x07, 0x77, 0x4b, 0xfa, 0x61, 0x66,
-	0x20, 0x1e, 0x28, 0x95, 0x18, 0x1b, 0xa4, 0xa0,
-	0xfd, 0xc0, 0x89, 0x72, 0x43, 0xd9, 0x3b, 0x49,
-	0x5a, 0x3f, 0x9d, 0xbf, 0xdb, 0xb4, 0x46, 0xea,
-	0x42, 0x01, 0x77, 0x23, 0x68, 0x95, 0xb6, 0x24,
-	0xb3, 0xa8, 0x6c, 0x28, 0x3b, 0x11, 0x40, 0x7e,
-	0x18, 0x65, 0x6d, 0xd8, 0x24, 0x42, 0x7d, 0x88,
-	0xc0, 0x52, 0xd9, 0x05, 0xe4, 0x95, 0x90, 0x87,
-	0x8c, 0xf4, 0xd0, 0x6b, 0xb9, 0x83, 0x99, 0x34,
-	0x6d, 0xfe, 0x54, 0x40, 0x94, 0x52, 0x21, 0x4f,
-	0x14, 0x25, 0xc5, 0xd6, 0x5e, 0x95, 0xdc, 0x0a,
-	0x2b, 0x89, 0x20, 0x11, 0x84, 0x48, 0xd6, 0x3a,
-	0xcd, 0x5c, 0x24, 0xad, 0x62, 0xe3, 0xb1, 0x93,
-	0x25, 0x8d, 0xcd, 0x7e, 0xfc, 0x27, 0xa3, 0x37,
-	0xfd, 0x84, 0xfc, 0x1b, 0xb2, 0xf1, 0x27, 0x38,
-	0x5a, 0xb7, 0xfc, 0xf2, 0xfa, 0x95, 0x66, 0xd4,
-	0xfb, 0xba, 0xa7, 0xd7, 0xa3, 0x72, 0x69, 0x48,
-	0x48, 0x8c, 0xeb, 0x28, 0x89, 0xfe, 0x33, 0x65,
-	0x5a, 0x36, 0x01, 0x7e, 0x06, 0x79, 0x0a, 0x09,
-	0x3b, 0x74, 0x11, 0x9a, 0x6e, 0xbf, 0xd4, 0x9e,
-	0x58, 0x90, 0x49, 0x4f, 0x4d, 0x08, 0xd4, 0xe5,
-	0x4a, 0x09, 0x21, 0xef, 0x8b, 0xb8, 0x74, 0x3b,
-	0x91, 0xdd, 0x36, 0x85, 0x60, 0x2d, 0xfa, 0xd4,
-	0x45, 0x7b, 0x45, 0x53, 0xf5, 0x47, 0x87, 0x7e,
-	0xa6, 0x37, 0xc8, 0x78, 0x7a, 0x68, 0x9d, 0x8d,
-	0x65, 0x2c, 0x0e, 0x91, 0x5c, 0xa2, 0x60, 0xf0,
-	0x8e, 0x3f, 0xe9, 0x1a, 0xcd, 0xaa, 0xe7, 0xd5,
-	0x77, 0x18, 0xaf, 0xc9, 0xbc, 0x18, 0xea, 0x48,
-	0x1b, 0xfb, 0x22, 0x48, 0x70, 0x16, 0x29, 0x9e,
-	0x5b, 0xc1, 0x2c, 0x66, 0x23, 0xbc, 0xf0, 0x1f,
-	0xef, 0xaf, 0xe4, 0xd6, 0x04, 0x19, 0x82, 0x7a,
-	0x0b, 0xba, 0x4b, 0x46, 0xb1, 0x6a, 0x85, 0x5d,
-	0xb4, 0x73, 0xd6, 0x21, 0xa1, 0x71, 0x60, 0x14,
-	0xee, 0x0a, 0x77, 0xc4, 0x66, 0x2e, 0xf9, 0x69,
-	0x30, 0xaf, 0x41, 0x0b, 0xc8, 0x83, 0x3c, 0x53,
-	0x99, 0x19, 0x27, 0x46, 0xf7, 0x41, 0x6e, 0x56,
-	0xdc, 0x94, 0x28, 0x67, 0x4e, 0xb7, 0x25, 0x48,
-	0x8a, 0xc2, 0xe0, 0x60, 0x96, 0xcc, 0x18, 0xf4,
-	0x84, 0xdd, 0xa7, 0x5e, 0x3e, 0x05, 0x0b, 0x26,
-	0x26, 0xb2, 0x5c, 0x1f, 0x57, 0x1a, 0x04, 0x7e,
-	0x6a, 0xe3, 0x2f, 0xb4, 0x35, 0xb6, 0x38, 0x40,
-	0x40, 0xcd, 0x6f, 0x87, 0x2e, 0xef, 0xa3, 0xd7,
-	0xa9, 0xc2, 0xe8, 0x0d, 0x27, 0xdf, 0x44, 0x62,
-	0x99, 0xa0, 0xfc, 0xcf, 0x81, 0x78, 0xcb, 0xfe,
-	0xe5, 0xa0, 0x03, 0x4e, 0x6c, 0xd7, 0xf4, 0xaf,
-	0x7a, 0xbb, 0x61, 0x82, 0xfe, 0x71, 0x89, 0xb2,
-	0x22, 0x7c, 0x8e, 0x83, 0x04, 0xce, 0xf6, 0x5d,
-	0x84, 0x8f, 0x95, 0x6a, 0x7f, 0xad, 0xfd, 0x32,
-	0x9c, 0x5e, 0xe4, 0x9c, 0x89, 0x60, 0x54, 0xaa,
-	0x96, 0x72, 0xd2, 0xd7, 0x36, 0x85, 0xa9, 0x45,
-	0xd2, 0x2a, 0xa1, 0x81, 0x49, 0x6f, 0x7e, 0x04,
-	0xfa, 0xe2, 0xfe, 0x90, 0x26, 0x77, 0x5a, 0x33,
-	0xb8, 0x04, 0x9a, 0x7a, 0xe6, 0x4c, 0x4f, 0xad,
-	0x72, 0x96, 0x08, 0x28, 0x58, 0x13, 0xf8, 0xc4,
-	0x1c, 0xf0, 0xc3, 0x45, 0x95, 0x49, 0x20, 0x8c,
-	0x9f, 0x39, 0x70, 0xe1, 0x77, 0xfe, 0xd5, 0x4b,
-	0xaf, 0x86, 0xda, 0xef, 0x22, 0x06, 0x83, 0x36,
-	0x29, 0x12, 0x11, 0x40, 0xbc, 0x3b, 0x86, 0xaa,
-	0xaa, 0x65, 0x60, 0xc3, 0x80, 0xca, 0xed, 0xa9,
-	0xf3, 0xb0, 0x79, 0x96, 0xa2, 0x55, 0x27, 0x28,
-	0x55, 0x73, 0x26, 0xa5, 0x50, 0xea, 0x92, 0x4b,
-	0x3c, 0x5c, 0x82, 0x33, 0xf0, 0x01, 0x3f, 0x03,
-	0xc1, 0x08, 0x05, 0xbf, 0x98, 0xf4, 0x9b, 0x6d,
-	0xa5, 0xa8, 0xb4, 0x82, 0x0c, 0x06, 0xfa, 0xff,
-	0x2d, 0x08, 0xf3, 0x05, 0x4f, 0x57, 0x2a, 0x39,
-	0xd4, 0x83, 0x0d, 0x75, 0x51, 0xd8, 0x5b, 0x1b,
-	0xd3, 0x51, 0x5a, 0x32, 0x2a, 0x9b, 0x32, 0xb2,
-	0xf2, 0xa4, 0x96, 0x12, 0xf2, 0xae, 0x40, 0x34,
-	0x67, 0xa8, 0xf5, 0x44, 0xd5, 0x35, 0x53, 0xfe,
-	0xa3, 0x60, 0x96, 0x63, 0x0f, 0x1f, 0x6e, 0xb0,
-	0x5a, 0x42, 0xa6, 0xfc, 0x51, 0x0b, 0x60, 0x27,
-	0xbc, 0x06, 0x71, 0xed, 0x65, 0x5b, 0x23, 0x86,
-	0x4a, 0x07, 0x3b, 0x22, 0x07, 0x46, 0xe6, 0x90,
-	0x3e, 0xf3, 0x25, 0x50, 0x1b, 0x4c, 0x7f, 0x03,
-	0x08, 0xa8, 0x36, 0x6b, 0x87, 0xe5, 0xe3, 0xdb,
-	0x9a, 0x38, 0x83, 0xff, 0x9f, 0x1a, 0x9f, 0x57,
-	0xa4, 0x2a, 0xf6, 0x37, 0xbc, 0x1a, 0xff, 0xc9,
-	0x1e, 0x35, 0x0c, 0xc3, 0x7c, 0xa3, 0xb2, 0xe5,
-	0xd2, 0xc6, 0xb4, 0x57, 0x47, 0xe4, 0x32, 0x16,
-	0x6d, 0xa9, 0xae, 0x64, 0xe6, 0x2d, 0x8d, 0xc5,
-	0x8d, 0x50, 0x8e, 0xe8, 0x1a, 0x22, 0x34, 0x2a,
-	0xd9, 0xeb, 0x51, 0x90, 0x4a, 0xb1, 0x41, 0x7d,
-	0x64, 0xf9, 0xb9, 0x0d, 0xf6, 0x23, 0x33, 0xb0,
-	0x33, 0xf4, 0xf7, 0x3f, 0x27, 0x84, 0xc6, 0x0f,
-	0x54, 0xa5, 0xc0, 0x2e, 0xec, 0x0b, 0x3a, 0x48,
-	0x6e, 0x80, 0x35, 0x81, 0x43, 0x9b, 0x90, 0xb1,
-	0xd0, 0x2b, 0xea, 0x21, 0xdc, 0xda, 0x5b, 0x09,
-	0xf4, 0xcc, 0x10, 0xb4, 0xc7, 0xfe, 0x79, 0x51,
-	0xc3, 0xc5, 0xac, 0x88, 0x74, 0x84, 0x0b, 0x4b,
-	0xca, 0x79, 0x16, 0x29, 0xfb, 0x69, 0x54, 0xdf,
-	0x41, 0x7e, 0xe9, 0xc7, 0x8e, 0xea, 0xa5, 0xfe,
-	0xfc, 0x76, 0x0e, 0x90, 0xc4, 0x92, 0x38, 0xad,
-	0x7b, 0x48, 0xe6, 0x6e, 0xf7, 0x21, 0xfd, 0x4e,
-	0x93, 0x0a, 0x7b, 0x41, 0x83, 0x68, 0xfb, 0x57,
-	0x51, 0x76, 0x34, 0xa9, 0x6c, 0x00, 0xaa, 0x4f,
-	0x66, 0x65, 0x98, 0x4a, 0x4f, 0xa3, 0xa0, 0xef,
-	0x69, 0x3f, 0xe3, 0x1c, 0x92, 0x8c, 0xfd, 0xd8,
-	0xe8, 0xde, 0x7c, 0x7f, 0x3e, 0x84, 0x8e, 0x69,
-	0x3c, 0xf1, 0xf2, 0x05, 0x46, 0xdc, 0x2f, 0x9d,
-	0x5e, 0x6e, 0x4c, 0xfb, 0xb5, 0x99, 0x2a, 0x59,
-	0x63, 0xc1, 0x34, 0xbc, 0x57, 0xc0, 0x0d, 0xb9,
-	0x61, 0x25, 0xf3, 0x33, 0x23, 0x51, 0xb6, 0x0d,
-	0x07, 0xa6, 0xab, 0x94, 0x4a, 0xb7, 0x2a, 0xea,
-	0xee, 0xac, 0xa3, 0xc3, 0x04, 0x8b, 0x0e, 0x56,
-	0xfe, 0x44, 0xa7, 0x39, 0xe2, 0xed, 0xed, 0xb4,
-	0x22, 0x2b, 0xac, 0x12, 0x32, 0x28, 0x91, 0xd8,
-	0xa5, 0xab, 0xff, 0x5f, 0xe0, 0x4b, 0xda, 0x78,
-	0x17, 0xda, 0xf1, 0x01, 0x5b, 0xcd, 0xe2, 0x5f,
-	0x50, 0x45, 0x73, 0x2b, 0xe4, 0x76, 0x77, 0xf4,
-	0x64, 0x1d, 0x43, 0xfb, 0x84, 0x7a, 0xea, 0x91,
-	0xae, 0xf9, 0x9e, 0xb7, 0xb4, 0xb0, 0x91, 0x5f,
-	0x16, 0x35, 0x9a, 0x11, 0xb8, 0xc7, 0xc1, 0x8c,
-	0xc6, 0x10, 0x8d, 0x2f, 0x63, 0x4a, 0xa7, 0x57,
-	0x3a, 0x51, 0xd6, 0x32, 0x2d, 0x64, 0x72, 0xd4,
-	0x66, 0xdc, 0x10, 0xa6, 0x67, 0xd6, 0x04, 0x23,
-	0x9d, 0x0a, 0x11, 0x77, 0xdd, 0x37, 0x94, 0x17,
-	0x3c, 0xbf, 0x8b, 0x65, 0xb0, 0x2e, 0x5e, 0x66,
-	0x47, 0x64, 0xac, 0xdd, 0xf0, 0x84, 0xfd, 0x39,
-	0xfa, 0x15, 0x5d, 0xef, 0xae, 0xca, 0xc1, 0x36,
-	0xa7, 0x5c, 0xbf, 0xc7, 0x08, 0xc2, 0x66, 0x00,
-	0x74, 0x74, 0x4e, 0x27, 0x3f, 0x55, 0x8a, 0xb7,
-	0x38, 0x66, 0x83, 0x6d, 0xcf, 0x99, 0x9e, 0x60,
-	0x8f, 0xdd, 0x2e, 0x62, 0x22, 0x0e, 0xef, 0x0c,
-	0x98, 0xa7, 0x85, 0x74, 0x3b, 0x9d, 0xec, 0x9e,
-	0xa9, 0x19, 0x72, 0xa5, 0x7f, 0x2c, 0x39, 0xb7,
-	0x7d, 0xb7, 0xf1, 0x12, 0x65, 0x27, 0x4b, 0x5a,
-	0xde, 0x17, 0xfe, 0xad, 0x44, 0xf3, 0x20, 0x4d,
-	0xfd, 0xe4, 0x1f, 0xb5, 0x81, 0xb0, 0x36, 0x37,
-	0x08, 0x6f, 0xc3, 0x0c, 0xe9, 0x85, 0x98, 0x82,
-	0xa9, 0x62, 0x0c, 0xc4, 0x97, 0xc0, 0x50, 0xc8,
-	0xa7, 0x3c, 0x50, 0x9f, 0x43, 0xb9, 0xcd, 0x5e,
-	0x4d, 0xfa, 0x1c, 0x4b, 0x0b, 0xa9, 0x98, 0x85,
-	0x38, 0x92, 0xac, 0x8d, 0xe4, 0xad, 0x9b, 0x98,
-	0xab, 0xd9, 0x38, 0xac, 0x62, 0x52, 0xa3, 0x22,
-	0x63, 0x0f, 0xbf, 0x95, 0x48, 0xdf, 0x69, 0xe7,
-	0x8b, 0x33, 0xd5, 0xb2, 0xbd, 0x05, 0x49, 0x49,
-	0x9d, 0x57, 0x73, 0x19, 0x33, 0xae, 0xfa, 0x33,
-	0xf1, 0x19, 0xa8, 0x80, 0xce, 0x04, 0x9f, 0xbc,
-	0x1d, 0x65, 0x82, 0x1b, 0xe5, 0x3a, 0x51, 0xc8,
-	0x1c, 0x21, 0xe3, 0x5d, 0xf3, 0x7d, 0x9b, 0x2f,
-	0x2c, 0x1d, 0x4a, 0x7f, 0x9b, 0x68, 0x35, 0xa3,
-	0xb2, 0x50, 0xf7, 0x62, 0x79, 0xcd, 0xf4, 0x98,
-	0x4f, 0xe5, 0x63, 0x7c, 0x3e, 0x45, 0x31, 0x8c,
-	0x16, 0xa0, 0x12, 0xc8, 0x58, 0xce, 0x39, 0xa6,
-	0xbc, 0x54, 0xdb, 0xc5, 0xe0, 0xd5, 0xba, 0xbc,
-	0xb9, 0x04, 0xf4, 0x8d, 0xe8, 0x2f, 0x15, 0x9d,
-};
-
-/* 100 test cases */
-static struct crc_test {
-	uint32_t crc;	/* random starting crc */
-	uint32_t start;	/* random 6 bit offset in buf */
-	uint32_t length;	/* random 11 bit length of test */
-	uint32_t crc32c_le;	/* expected crc32c_le result */
-} test[] =
-{
-	{0x674bf11d, 0x00000038, 0x00000542, 0xf6e93d6c},
-	{0x35c672c6, 0x0000003a, 0x000001aa, 0x0fe92aca},
-	{0x496da28e, 0x00000039, 0x000005af, 0x52e1ebb8},
-	{0x09a9b90e, 0x00000027, 0x000001f8, 0x0798af9a},
-	{0xdc97e5a9, 0x00000025, 0x000003b6, 0x18eb3152},
-	{0x47c58900, 0x0000000a, 0x000000b9, 0xd00d08c7},
-	{0x292561e8, 0x0000000c, 0x00000403, 0x8ba966bc},
-	{0x415037f6, 0x00000003, 0x00000676, 0x11d694a2},
-	{0x3466e707, 0x00000026, 0x00000042, 0x6ab3208d},
-	{0xafd1281b, 0x00000023, 0x000002ee, 0xba4603c5},
-	{0xd3857b18, 0x00000028, 0x000004a2, 0xe6071c6f},
-	{0x1d825a8f, 0x0000002b, 0x0000050b, 0x179ec30a},
-	{0x5033e3bc, 0x0000000b, 0x00000078, 0x0903beb8},
-	{0x94f1fb5e, 0x0000000f, 0x000003a2, 0x6a7cb4fa},
-	{0xc9a0fe14, 0x00000009, 0x00000473, 0xdb535801},
-	{0x88a034b1, 0x0000001c, 0x000005ad, 0x92bed597},
-	{0xf0f72239, 0x00000020, 0x0000026d, 0x192a3f1b},
-	{0xcc20a5e3, 0x0000003b, 0x0000067a, 0xccbaec1a},
-	{0xce589c95, 0x0000002b, 0x00000641, 0x7eabae4d},
-	{0x78edc885, 0x00000035, 0x000005be, 0x28c72982},
-	{0x9d40a377, 0x0000003b, 0x00000038, 0xc3cd4d18},
-	{0x703d0e01, 0x0000003c, 0x000006f1, 0xbca8f0e7},
-	{0x776bf505, 0x0000000f, 0x000005b2, 0x713f60b3},
-	{0x4a3e7854, 0x00000027, 0x000004b8, 0xebd08fd5},
-	{0x209172dd, 0x0000003b, 0x00000356, 0x64406c59},
-	{0x3ba4cc5b, 0x0000002f, 0x00000203, 0x7421890e},
-	{0xfc62f297, 0x00000000, 0x00000079, 0xe9347603},
-	{0x64280b8b, 0x00000016, 0x000007ab, 0x1bef9060},
-	{0x97dd724b, 0x00000033, 0x000007ad, 0x34720072},
-	{0x61394b52, 0x00000035, 0x00000571, 0x48310f59},
-	{0x29b4faff, 0x00000024, 0x0000006e, 0x783a4213},
-	{0x29bfb1dc, 0x0000000b, 0x00000244, 0x9e8efd41},
-	{0x86ae934b, 0x00000035, 0x00000104, 0xfc3d34a5},
-	{0xc4c1024e, 0x0000002e, 0x000006b1, 0x17a52ae2},
-	{0x3287a80a, 0x00000026, 0x00000496, 0x886d935a},
-	{0xa4db423e, 0x00000023, 0x0000045d, 0xeaaeaeb2},
-	{0x7a1078df, 0x00000015, 0x0000014a, 0x8e900a4b},
-	{0x6048bd5b, 0x00000006, 0x0000006a, 0xd74662b1},
-	{0xd8f9ea20, 0x0000003d, 0x00000277, 0xd26752ba},
-	{0xea5ec3b4, 0x0000002a, 0x000004fe, 0x8b1fcd62},
-	{0x2dfb005d, 0x00000016, 0x00000345, 0xf54342fe},
-	{0x5a214ade, 0x00000020, 0x000005b6, 0x5b95b988},
-	{0xf0ab9cca, 0x00000032, 0x00000515, 0x2e1176be},
-	{0x91b444f9, 0x0000002e, 0x000007f8, 0x66120546},
-	{0x1b5d2ddb, 0x0000002e, 0x0000012c, 0xf256a5cc},
-	{0xd824d1bb, 0x0000003a, 0x000007b5, 0x4af1dd69},
-	{0x0470180c, 0x00000034, 0x000001f0, 0x56f0a04a},
-	{0xffaa3a3f, 0x00000036, 0x00000299, 0x74f6b6b2},
-	{0x6406cfeb, 0x00000023, 0x00000600, 0x085951fd},
-	{0xb24aaa38, 0x0000003e, 0x000004a1, 0xc65387eb},
-	{0x58b2ab7c, 0x00000039, 0x000002b4, 0x1ca9257b},
-	{0x3db85970, 0x00000006, 0x000002b6, 0xfd196d76},
-	{0x857830c5, 0x00000003, 0x00000590, 0x5ef88339},
-	{0xe1fcd978, 0x0000003e, 0x000007d8, 0x2c3714d9},
-	{0xb982a768, 0x00000016, 0x000006e0, 0x58576548},
-	{0x1d581ce8, 0x0000001e, 0x0000058b, 0xfd7c57de},
-	{0x2456719b, 0x00000025, 0x00000503, 0xd5fedd59},
-	{0xfae6d8f2, 0x00000000, 0x0000055d, 0x1cc3b17b},
-	{0xcba828e3, 0x00000039, 0x000002ce, 0x270eed73},
-	{0x13d25952, 0x0000000a, 0x0000072d, 0x91ecbb11},
-	{0x0342be3f, 0x00000015, 0x00000599, 0x05ed8d0c},
-	{0xeaa344e0, 0x00000014, 0x000004d8, 0x0b09ad5b},
-	{0xbbb52021, 0x0000003b, 0x00000272, 0xf8d511fb},
-	{0xb66384dc, 0x0000001d, 0x000007fc, 0x5ad832cc},
-	{0x616c01b6, 0x00000022, 0x000002c8, 0x1214d196},
-	{0xce2bdaad, 0x00000016, 0x0000062a, 0x5747218a},
-	{0x00fe84d7, 0x00000005, 0x00000205, 0xde8f14de},
-	{0xbebdcb4c, 0x00000006, 0x0000055d, 0x3563b7b9},
-	{0xd8b1a02a, 0x00000010, 0x00000387, 0x071475d0},
-	{0x3b96cad2, 0x00000036, 0x00000347, 0x54c79d60},
-	{0xc94c1ed7, 0x00000005, 0x0000038b, 0x4c53eee6},
-	{0x1aad454e, 0x00000025, 0x000002b2, 0x10137a3c},
-	{0xa4fec9a6, 0x00000000, 0x000006d6, 0xaa9d6c73},
-	{0x1bbe71e2, 0x0000001f, 0x000002fd, 0xb63d23e7},
-	{0x4201c7e4, 0x00000002, 0x000002b7, 0x7f53e9cf},
-	{0x23fddc96, 0x00000003, 0x00000627, 0x13c1cd83},
-	{0xd82ba25c, 0x00000016, 0x0000063e, 0x49ff5867},
-	{0x786f2032, 0x0000002d, 0x0000060f, 0x8467f211},
-	{0xfebe4e1f, 0x0000002a, 0x000004f2, 0x3f9683b2},
-	{0x1a6e0a39, 0x00000008, 0x00000672, 0x76a3f874},
-	{0x56000ab8, 0x0000000e, 0x000000e5, 0x863b702f},
-	{0x4717fe0c, 0x00000000, 0x000006ec, 0xdc6c58ff},
-	{0xd5d5d68e, 0x0000003c, 0x000003a3, 0x0622cc95},
-	{0xc25dd6c6, 0x00000024, 0x000006c0, 0xe85605cd},
-	{0xe9b11300, 0x00000023, 0x00000683, 0x31da5f06},
-	{0x95cd285e, 0x00000001, 0x00000047, 0xa1f2e784},
-	{0xd9245a25, 0x0000001e, 0x000003a6, 0xb07cc616},
-	{0x103279db, 0x00000006, 0x0000039b, 0xbf943b6c},
-	{0x1cba3172, 0x00000027, 0x000001c8, 0x2c01af1c},
-	{0x8f613739, 0x0000000c, 0x000001df, 0x0fe5f56d},
-	{0x1c6aa90d, 0x0000001b, 0x0000053c, 0xf8943b2d},
-	{0xaabe5b93, 0x0000003d, 0x00000715, 0xe4d89272},
-	{0xf15dd038, 0x00000006, 0x000006db, 0x7c2f6bbb},
-	{0x584dd49c, 0x00000020, 0x000007bc, 0xabbf388b},
-	{0x5d8c9506, 0x00000020, 0x00000470, 0x1dca1f4e},
-	{0xb80d17b0, 0x00000032, 0x00000346, 0x5c170e23},
-	{0xdaf0592e, 0x00000023, 0x000007b0, 0xc0e9d672},
-	{0x4793cc85, 0x0000000d, 0x00000706, 0xc18bdc86},
-	{0x82ebf64e, 0x00000009, 0x000007c3, 0xa874fcdd},
-	{0xb18a0319, 0x00000026, 0x000007db, 0x9dc0bb48},
-};
-
-static int
-crc32c_test(void)
-{
-	int i;
-	int errors = 0;
-	int bytes = 0;
-	struct timeval start, stop;
-	uint64_t usec;
-
-	/* keep static to prevent cache warming code from
-	 * getting eliminated by the compiler */
-	static uint32_t crc;
-
-	/* pre-warm the cache */
-	for (i = 0; i < 100; i++) {
-		bytes += 2*test[i].length;
-
-		crc ^= crc32c_le(test[i].crc, test_buf +
-		    test[i].start, test[i].length);
-	}
-
-	gettimeofday(&start, NULL);
-	for (i = 0; i < 100; i++) {
-		if (test[i].crc32c_le != crc32c_le(test[i].crc, test_buf +
-		    test[i].start, test[i].length))
-			errors++;
-	}
-	gettimeofday(&stop, NULL);
-
-	usec = stop.tv_usec - start.tv_usec +
-		1000000 * (stop.tv_sec - start.tv_sec);
-
-	if (errors)
-		printf("crc32c: %d self tests failed\n", errors);
-	else {
-		printf("crc32c: tests passed, %d bytes in %" PRIu64 " usec\n",
-			bytes, usec);
-	}
-
-	return errors;
-}
-
-#endif /* _LIBFROG_CRC32CSELFTEST_H_ */
diff --git a/io/crc32cselftest.c b/io/crc32cselftest.c
index 28201384..f8f757f6 100644
--- a/io/crc32cselftest.c
+++ b/io/crc32cselftest.c
@@ -8,8 +8,8 @@
 #include "command.h"
 #include "init.h"
 #include "io.h"
-#include "crc32c.h"
-#include "crc32cselftest.h"
+#include "libfrog/crc32c.h"
+#include "libfrog/crc32cselftest.h"
 
 static int
 crc32cselftest_f(
diff --git a/libfrog/Makefile b/libfrog/Makefile
index 5506c96f..715589c7 100644
--- a/libfrog/Makefile
+++ b/libfrog/Makefile
@@ -32,6 +32,8 @@ avl64.h \
 bulkstat.h \
 bitmap.h \
 convert.h \
+crc32c.h \
+crc32cselftest.h \
 crc32defs.h \
 crc32table.h \
 fsgeom.h \
diff --git a/libfrog/crc32c.h b/libfrog/crc32c.h
new file mode 100644
index 00000000..22d25932
--- /dev/null
+++ b/libfrog/crc32c.h
@@ -0,0 +1,11 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Copyright (c) 2000-2005 Silicon Graphics, Inc.
+ * All Rights Reserved.
+ */
+#ifndef __LIBFROG_CRC32C_H__
+#define __LIBFROG_CRC32C_H__
+
+extern uint32_t crc32c_le(uint32_t crc, unsigned char const *p, size_t len);
+
+#endif /* __LIBFROG_CRC32C_H__ */
diff --git a/libfrog/crc32cselftest.h b/libfrog/crc32cselftest.h
new file mode 100644
index 00000000..08284153
--- /dev/null
+++ b/libfrog/crc32cselftest.h
@@ -0,0 +1,706 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Aug 8, 2011 Bob Pearson with help from Joakim Tjernlund and George Spelvin
+ * cleaned up code to current version of sparse and added the slicing-by-8
+ * algorithm to the closely similar existing slicing-by-4 algorithm.
+ * Oct 15, 2000 Matt Domsch <Matt_Domsch@dell.com>
+ * Nicer crc32 functions/docs submitted by linux@horizon.com.  Thanks!
+ * Code was from the public domain, copyright abandoned.  Code was
+ * subsequently included in the kernel, thus was re-licensed under the
+ * GNU GPL v2.
+ * Oct 12, 2000 Matt Domsch <Matt_Domsch@dell.com>
+ * Same crc32 function was used in 5 other places in the kernel.
+ * I made one version, and deleted the others.
+ * There are various incantations of crc32().  Some use a seed of 0 or ~0.
+ * Some xor at the end with ~0.  The generic crc32() function takes
+ * seed as an argument, and doesn't xor at the end.  Then individual
+ * users can do whatever they need.
+ *   drivers/net/smc9194.c uses seed ~0, doesn't xor with ~0.
+ *   fs/jffs2 uses seed 0, doesn't xor with ~0.
+ *   fs/partitions/efi.c uses seed ~0, xor's with ~0.
+ */
+
+/* see: Documentation/crc32.txt for a description of algorithms */
+
+/*
+ * lifted from the 3.8-rc2 kernel source for xfsprogs. Killed CONFIG_X86
+ * specific bits for just the generic algorithm. Also removed the big endian
+ * version of the algorithm as XFS only uses the little endian CRC version to
+ * match the hardware acceleration available on Intel CPUs.
+ */
+
+/* This is just the crc32 self test bits from crc32.c. */
+
+#ifndef __LIBFROG_CRC32CSELFTEST_H__
+#define __LIBFROG_CRC32CSELFTEST_H__
+
+/* 4096 random bytes */
+static uint8_t __attribute__((__aligned__(8))) test_buf[] =
+{
+	0x5b, 0x85, 0x21, 0xcb, 0x09, 0x68, 0x7d, 0x30,
+	0xc7, 0x69, 0xd7, 0x30, 0x92, 0xde, 0x59, 0xe4,
+	0xc9, 0x6e, 0x8b, 0xdb, 0x98, 0x6b, 0xaa, 0x60,
+	0xa8, 0xb5, 0xbc, 0x6c, 0xa9, 0xb1, 0x5b, 0x2c,
+	0xea, 0xb4, 0x92, 0x6a, 0x3f, 0x79, 0x91, 0xe4,
+	0xe9, 0x70, 0x51, 0x8c, 0x7f, 0x95, 0x6f, 0x1a,
+	0x56, 0xa1, 0x5c, 0x27, 0x03, 0x67, 0x9f, 0x3a,
+	0xe2, 0x31, 0x11, 0x29, 0x6b, 0x98, 0xfc, 0xc4,
+	0x53, 0x24, 0xc5, 0x8b, 0xce, 0x47, 0xb2, 0xb9,
+	0x32, 0xcb, 0xc1, 0xd0, 0x03, 0x57, 0x4e, 0xd4,
+	0xe9, 0x3c, 0xa1, 0x63, 0xcf, 0x12, 0x0e, 0xca,
+	0xe1, 0x13, 0xd1, 0x93, 0xa6, 0x88, 0x5c, 0x61,
+	0x5b, 0xbb, 0xf0, 0x19, 0x46, 0xb4, 0xcf, 0x9e,
+	0xb6, 0x6b, 0x4c, 0x3a, 0xcf, 0x60, 0xf9, 0x7a,
+	0x8d, 0x07, 0x63, 0xdb, 0x40, 0xe9, 0x0b, 0x6f,
+	0xad, 0x97, 0xf1, 0xed, 0xd0, 0x1e, 0x26, 0xfd,
+	0xbf, 0xb7, 0xc8, 0x04, 0x94, 0xf8, 0x8b, 0x8c,
+	0xf1, 0xab, 0x7a, 0xd4, 0xdd, 0xf3, 0xe8, 0x88,
+	0xc3, 0xed, 0x17, 0x8a, 0x9b, 0x40, 0x0d, 0x53,
+	0x62, 0x12, 0x03, 0x5f, 0x1b, 0x35, 0x32, 0x1f,
+	0xb4, 0x7b, 0x93, 0x78, 0x0d, 0xdb, 0xce, 0xa4,
+	0xc0, 0x47, 0xd5, 0xbf, 0x68, 0xe8, 0x5d, 0x74,
+	0x8f, 0x8e, 0x75, 0x1c, 0xb2, 0x4f, 0x9a, 0x60,
+	0xd1, 0xbe, 0x10, 0xf4, 0x5c, 0xa1, 0x53, 0x09,
+	0xa5, 0xe0, 0x09, 0x54, 0x85, 0x5c, 0xdc, 0x07,
+	0xe7, 0x21, 0x69, 0x7b, 0x8a, 0xfd, 0x90, 0xf1,
+	0x22, 0xd0, 0xb4, 0x36, 0x28, 0xe6, 0xb8, 0x0f,
+	0x39, 0xde, 0xc8, 0xf3, 0x86, 0x60, 0x34, 0xd2,
+	0x5e, 0xdf, 0xfd, 0xcf, 0x0f, 0xa9, 0x65, 0xf0,
+	0xd5, 0x4d, 0x96, 0x40, 0xe3, 0xdf, 0x3f, 0x95,
+	0x5a, 0x39, 0x19, 0x93, 0xf4, 0x75, 0xce, 0x22,
+	0x00, 0x1c, 0x93, 0xe2, 0x03, 0x66, 0xf4, 0x93,
+	0x73, 0x86, 0x81, 0x8e, 0x29, 0x44, 0x48, 0x86,
+	0x61, 0x7c, 0x48, 0xa3, 0x43, 0xd2, 0x9c, 0x8d,
+	0xd4, 0x95, 0xdd, 0xe1, 0x22, 0x89, 0x3a, 0x40,
+	0x4c, 0x1b, 0x8a, 0x04, 0xa8, 0x09, 0x69, 0x8b,
+	0xea, 0xc6, 0x55, 0x8e, 0x57, 0xe6, 0x64, 0x35,
+	0xf0, 0xc7, 0x16, 0x9f, 0x5d, 0x5e, 0x86, 0x40,
+	0x46, 0xbb, 0xe5, 0x45, 0x88, 0xfe, 0xc9, 0x63,
+	0x15, 0xfb, 0xf5, 0xbd, 0x71, 0x61, 0xeb, 0x7b,
+	0x78, 0x70, 0x07, 0x31, 0x03, 0x9f, 0xb2, 0xc8,
+	0xa7, 0xab, 0x47, 0xfd, 0xdf, 0xa0, 0x78, 0x72,
+	0xa4, 0x2a, 0xe4, 0xb6, 0xba, 0xc0, 0x1e, 0x86,
+	0x71, 0xe6, 0x3d, 0x18, 0x37, 0x70, 0xe6, 0xff,
+	0xe0, 0xbc, 0x0b, 0x22, 0xa0, 0x1f, 0xd3, 0xed,
+	0xa2, 0x55, 0x39, 0xab, 0xa8, 0x13, 0x73, 0x7c,
+	0x3f, 0xb2, 0xd6, 0x19, 0xac, 0xff, 0x99, 0xed,
+	0xe8, 0xe6, 0xa6, 0x22, 0xe3, 0x9c, 0xf1, 0x30,
+	0xdc, 0x01, 0x0a, 0x56, 0xfa, 0xe4, 0xc9, 0x99,
+	0xdd, 0xa8, 0xd8, 0xda, 0x35, 0x51, 0x73, 0xb4,
+	0x40, 0x86, 0x85, 0xdb, 0x5c, 0xd5, 0x85, 0x80,
+	0x14, 0x9c, 0xfd, 0x98, 0xa9, 0x82, 0xc5, 0x37,
+	0xff, 0x32, 0x5d, 0xd0, 0x0b, 0xfa, 0xdc, 0x04,
+	0x5e, 0x09, 0xd2, 0xca, 0x17, 0x4b, 0x1a, 0x8e,
+	0x15, 0xe1, 0xcc, 0x4e, 0x52, 0x88, 0x35, 0xbd,
+	0x48, 0xfe, 0x15, 0xa0, 0x91, 0xfd, 0x7e, 0x6c,
+	0x0e, 0x5d, 0x79, 0x1b, 0x81, 0x79, 0xd2, 0x09,
+	0x34, 0x70, 0x3d, 0x81, 0xec, 0xf6, 0x24, 0xbb,
+	0xfb, 0xf1, 0x7b, 0xdf, 0x54, 0xea, 0x80, 0x9b,
+	0xc7, 0x99, 0x9e, 0xbd, 0x16, 0x78, 0x12, 0x53,
+	0x5e, 0x01, 0xa7, 0x4e, 0xbd, 0x67, 0xe1, 0x9b,
+	0x4c, 0x0e, 0x61, 0x45, 0x97, 0xd2, 0xf0, 0x0f,
+	0xfe, 0x15, 0x08, 0xb7, 0x11, 0x4c, 0xe7, 0xff,
+	0x81, 0x53, 0xff, 0x91, 0x25, 0x38, 0x7e, 0x40,
+	0x94, 0xe5, 0xe0, 0xad, 0xe6, 0xd9, 0x79, 0xb6,
+	0x92, 0xc9, 0xfc, 0xde, 0xc3, 0x1a, 0x23, 0xbb,
+	0xdd, 0xc8, 0x51, 0x0c, 0x3a, 0x72, 0xfa, 0x73,
+	0x6f, 0xb7, 0xee, 0x61, 0x39, 0x03, 0x01, 0x3f,
+	0x7f, 0x94, 0x2e, 0x2e, 0xba, 0x3a, 0xbb, 0xb4,
+	0xfa, 0x6a, 0x17, 0xfe, 0xea, 0xef, 0x5e, 0x66,
+	0x97, 0x3f, 0x32, 0x3d, 0xd7, 0x3e, 0xb1, 0xf1,
+	0x6c, 0x14, 0x4c, 0xfd, 0x37, 0xd3, 0x38, 0x80,
+	0xfb, 0xde, 0xa6, 0x24, 0x1e, 0xc8, 0xca, 0x7f,
+	0x3a, 0x93, 0xd8, 0x8b, 0x18, 0x13, 0xb2, 0xe5,
+	0xe4, 0x93, 0x05, 0x53, 0x4f, 0x84, 0x66, 0xa7,
+	0x58, 0x5c, 0x7b, 0x86, 0x52, 0x6d, 0x0d, 0xce,
+	0xa4, 0x30, 0x7d, 0xb6, 0x18, 0x9f, 0xeb, 0xff,
+	0x22, 0xbb, 0x72, 0x29, 0xb9, 0x44, 0x0b, 0x48,
+	0x1e, 0x84, 0x71, 0x81, 0xe3, 0x6d, 0x73, 0x26,
+	0x92, 0xb4, 0x4d, 0x2a, 0x29, 0xb8, 0x1f, 0x72,
+	0xed, 0xd0, 0xe1, 0x64, 0x77, 0xea, 0x8e, 0x88,
+	0x0f, 0xef, 0x3f, 0xb1, 0x3b, 0xad, 0xf9, 0xc9,
+	0x8b, 0xd0, 0xac, 0xc6, 0xcc, 0xa9, 0x40, 0xcc,
+	0x76, 0xf6, 0x3b, 0x53, 0xb5, 0x88, 0xcb, 0xc8,
+	0x37, 0xf1, 0xa2, 0xba, 0x23, 0x15, 0x99, 0x09,
+	0xcc, 0xe7, 0x7a, 0x3b, 0x37, 0xf7, 0x58, 0xc8,
+	0x46, 0x8c, 0x2b, 0x2f, 0x4e, 0x0e, 0xa6, 0x5c,
+	0xea, 0x85, 0x55, 0xba, 0x02, 0x0e, 0x0e, 0x48,
+	0xbc, 0xe1, 0xb1, 0x01, 0x35, 0x79, 0x13, 0x3d,
+	0x1b, 0xc0, 0x53, 0x68, 0x11, 0xe7, 0x95, 0x0f,
+	0x9d, 0x3f, 0x4c, 0x47, 0x7b, 0x4d, 0x1c, 0xae,
+	0x50, 0x9b, 0xcb, 0xdd, 0x05, 0x8d, 0x9a, 0x97,
+	0xfd, 0x8c, 0xef, 0x0c, 0x1d, 0x67, 0x73, 0xa8,
+	0x28, 0x36, 0xd5, 0xb6, 0x92, 0x33, 0x40, 0x75,
+	0x0b, 0x51, 0xc3, 0x64, 0xba, 0x1d, 0xc2, 0xcc,
+	0xee, 0x7d, 0x54, 0x0f, 0x27, 0x69, 0xa7, 0x27,
+	0x63, 0x30, 0x29, 0xd9, 0xc8, 0x84, 0xd8, 0xdf,
+	0x9f, 0x68, 0x8d, 0x04, 0xca, 0xa6, 0xc5, 0xc7,
+	0x7a, 0x5c, 0xc8, 0xd1, 0xcb, 0x4a, 0xec, 0xd0,
+	0xd8, 0x20, 0x69, 0xc5, 0x17, 0xcd, 0x78, 0xc8,
+	0x75, 0x23, 0x30, 0x69, 0xc9, 0xd4, 0xea, 0x5c,
+	0x4f, 0x6b, 0x86, 0x3f, 0x8b, 0xfe, 0xee, 0x44,
+	0xc9, 0x7c, 0xb7, 0xdd, 0x3e, 0xe5, 0xec, 0x54,
+	0x03, 0x3e, 0xaa, 0x82, 0xc6, 0xdf, 0xb2, 0x38,
+	0x0e, 0x5d, 0xb3, 0x88, 0xd9, 0xd3, 0x69, 0x5f,
+	0x8f, 0x70, 0x8a, 0x7e, 0x11, 0xd9, 0x1e, 0x7b,
+	0x38, 0xf1, 0x42, 0x1a, 0xc0, 0x35, 0xf5, 0xc7,
+	0x36, 0x85, 0xf5, 0xf7, 0xb8, 0x7e, 0xc7, 0xef,
+	0x18, 0xf1, 0x63, 0xd6, 0x7a, 0xc6, 0xc9, 0x0e,
+	0x4d, 0x69, 0x4f, 0x84, 0xef, 0x26, 0x41, 0x0c,
+	0xec, 0xc7, 0xe0, 0x7e, 0x3c, 0x67, 0x01, 0x4c,
+	0x62, 0x1a, 0x20, 0x6f, 0xee, 0x47, 0x4d, 0xc0,
+	0x99, 0x13, 0x8d, 0x91, 0x4a, 0x26, 0xd4, 0x37,
+	0x28, 0x90, 0x58, 0x75, 0x66, 0x2b, 0x0a, 0xdf,
+	0xda, 0xee, 0x92, 0x25, 0x90, 0x62, 0x39, 0x9e,
+	0x44, 0x98, 0xad, 0xc1, 0x88, 0xed, 0xe4, 0xb4,
+	0xaf, 0xf5, 0x8c, 0x9b, 0x48, 0x4d, 0x56, 0x60,
+	0x97, 0x0f, 0x61, 0x59, 0x9e, 0xa6, 0x27, 0xfe,
+	0xc1, 0x91, 0x15, 0x38, 0xb8, 0x0f, 0xae, 0x61,
+	0x7d, 0x26, 0x13, 0x5a, 0x73, 0xff, 0x1c, 0xa3,
+	0x61, 0x04, 0x58, 0x48, 0x55, 0x44, 0x11, 0xfe,
+	0x15, 0xca, 0xc3, 0xbd, 0xca, 0xc5, 0xb4, 0x40,
+	0x5d, 0x1b, 0x7f, 0x39, 0xb5, 0x9c, 0x35, 0xec,
+	0x61, 0x15, 0x32, 0x32, 0xb8, 0x4e, 0x40, 0x9f,
+	0x17, 0x1f, 0x0a, 0x4d, 0xa9, 0x91, 0xef, 0xb7,
+	0xb0, 0xeb, 0xc2, 0x83, 0x9a, 0x6c, 0xd2, 0x79,
+	0x43, 0x78, 0x5e, 0x2f, 0xe5, 0xdd, 0x1a, 0x3c,
+	0x45, 0xab, 0x29, 0x40, 0x3a, 0x37, 0x5b, 0x6f,
+	0xd7, 0xfc, 0x48, 0x64, 0x3c, 0x49, 0xfb, 0x21,
+	0xbe, 0xc3, 0xff, 0x07, 0xfb, 0x17, 0xe9, 0xc9,
+	0x0c, 0x4c, 0x5c, 0x15, 0x9e, 0x8e, 0x22, 0x30,
+	0x0a, 0xde, 0x48, 0x7f, 0xdb, 0x0d, 0xd1, 0x2b,
+	0x87, 0x38, 0x9e, 0xcc, 0x5a, 0x01, 0x16, 0xee,
+	0x75, 0x49, 0x0d, 0x30, 0x01, 0x34, 0x6a, 0xb6,
+	0x9a, 0x5a, 0x2a, 0xec, 0xbb, 0x48, 0xac, 0xd3,
+	0x77, 0x83, 0xd8, 0x08, 0x86, 0x4f, 0x48, 0x09,
+	0x29, 0x41, 0x79, 0xa1, 0x03, 0x12, 0xc4, 0xcd,
+	0x90, 0x55, 0x47, 0x66, 0x74, 0x9a, 0xcc, 0x4f,
+	0x35, 0x8c, 0xd6, 0x98, 0xef, 0xeb, 0x45, 0xb9,
+	0x9a, 0x26, 0x2f, 0x39, 0xa5, 0x70, 0x6d, 0xfc,
+	0xb4, 0x51, 0xee, 0xf4, 0x9c, 0xe7, 0x38, 0x59,
+	0xad, 0xf4, 0xbc, 0x46, 0xff, 0x46, 0x8e, 0x60,
+	0x9c, 0xa3, 0x60, 0x1d, 0xf8, 0x26, 0x72, 0xf5,
+	0x72, 0x9d, 0x68, 0x80, 0x04, 0xf6, 0x0b, 0xa1,
+	0x0a, 0xd5, 0xa7, 0x82, 0x3a, 0x3e, 0x47, 0xa8,
+	0x5a, 0xde, 0x59, 0x4f, 0x7b, 0x07, 0xb3, 0xe9,
+	0x24, 0x19, 0x3d, 0x34, 0x05, 0xec, 0xf1, 0xab,
+	0x6e, 0x64, 0x8f, 0xd3, 0xe6, 0x41, 0x86, 0x80,
+	0x70, 0xe3, 0x8d, 0x60, 0x9c, 0x34, 0x25, 0x01,
+	0x07, 0x4d, 0x19, 0x41, 0x4e, 0x3d, 0x5c, 0x7e,
+	0xa8, 0xf5, 0xcc, 0xd5, 0x7b, 0xe2, 0x7d, 0x3d,
+	0x49, 0x86, 0x7d, 0x07, 0xb7, 0x10, 0xe3, 0x35,
+	0xb8, 0x84, 0x6d, 0x76, 0xab, 0x17, 0xc6, 0x38,
+	0xb4, 0xd3, 0x28, 0x57, 0xad, 0xd3, 0x88, 0x5a,
+	0xda, 0xea, 0xc8, 0x94, 0xcc, 0x37, 0x19, 0xac,
+	0x9c, 0x9f, 0x4b, 0x00, 0x15, 0xc0, 0xc8, 0xca,
+	0x1f, 0x15, 0xaa, 0xe0, 0xdb, 0xf9, 0x2f, 0x57,
+	0x1b, 0x24, 0xc7, 0x6f, 0x76, 0x29, 0xfb, 0xed,
+	0x25, 0x0d, 0xc0, 0xfe, 0xbd, 0x5a, 0xbf, 0x20,
+	0x08, 0x51, 0x05, 0xec, 0x71, 0xa3, 0xbf, 0xef,
+	0x5e, 0x99, 0x75, 0xdb, 0x3c, 0x5f, 0x9a, 0x8c,
+	0xbb, 0x19, 0x5c, 0x0e, 0x93, 0x19, 0xf8, 0x6a,
+	0xbc, 0xf2, 0x12, 0x54, 0x2f, 0xcb, 0x28, 0x64,
+	0x88, 0xb3, 0x92, 0x0d, 0x96, 0xd1, 0xa6, 0xe4,
+	0x1f, 0xf1, 0x4d, 0xa4, 0xab, 0x1c, 0xee, 0x54,
+	0xf2, 0xad, 0x29, 0x6d, 0x32, 0x37, 0xb2, 0x16,
+	0x77, 0x5c, 0xdc, 0x2e, 0x54, 0xec, 0x75, 0x26,
+	0xc6, 0x36, 0xd9, 0x17, 0x2c, 0xf1, 0x7a, 0xdc,
+	0x4b, 0xf1, 0xe2, 0xd9, 0x95, 0xba, 0xac, 0x87,
+	0xc1, 0xf3, 0x8e, 0x58, 0x08, 0xd8, 0x87, 0x60,
+	0xc9, 0xee, 0x6a, 0xde, 0xa4, 0xd2, 0xfc, 0x0d,
+	0xe5, 0x36, 0xc4, 0x5c, 0x52, 0xb3, 0x07, 0x54,
+	0x65, 0x24, 0xc1, 0xb1, 0xd1, 0xb1, 0x53, 0x13,
+	0x31, 0x79, 0x7f, 0x05, 0x76, 0xeb, 0x37, 0x59,
+	0x15, 0x2b, 0xd1, 0x3f, 0xac, 0x08, 0x97, 0xeb,
+	0x91, 0x98, 0xdf, 0x6c, 0x09, 0x0d, 0x04, 0x9f,
+	0xdc, 0x3b, 0x0e, 0x60, 0x68, 0x47, 0x23, 0x15,
+	0x16, 0xc6, 0x0b, 0x35, 0xf8, 0x77, 0xa2, 0x78,
+	0x50, 0xd4, 0x64, 0x22, 0x33, 0xff, 0xfb, 0x93,
+	0x71, 0x46, 0x50, 0x39, 0x1b, 0x9c, 0xea, 0x4e,
+	0x8d, 0x0c, 0x37, 0xe5, 0x5c, 0x51, 0x3a, 0x31,
+	0xb2, 0x85, 0x84, 0x3f, 0x41, 0xee, 0xa2, 0xc1,
+	0xc6, 0x13, 0x3b, 0x54, 0x28, 0xd2, 0x18, 0x37,
+	0xcc, 0x46, 0x9f, 0x6a, 0x91, 0x3d, 0x5a, 0x15,
+	0x3c, 0x89, 0xa3, 0x61, 0x06, 0x7d, 0x2e, 0x78,
+	0xbe, 0x7d, 0x40, 0xba, 0x2f, 0x95, 0xb1, 0x2f,
+	0x87, 0x3b, 0x8a, 0xbe, 0x6a, 0xf4, 0xc2, 0x31,
+	0x74, 0xee, 0x91, 0xe0, 0x23, 0xaa, 0x5d, 0x7f,
+	0xdd, 0xf0, 0x44, 0x8c, 0x0b, 0x59, 0x2b, 0xfc,
+	0x48, 0x3a, 0xdf, 0x07, 0x05, 0x38, 0x6c, 0xc9,
+	0xeb, 0x18, 0x24, 0x68, 0x8d, 0x58, 0x98, 0xd3,
+	0x31, 0xa3, 0xe4, 0x70, 0x59, 0xb1, 0x21, 0xbe,
+	0x7e, 0x65, 0x7d, 0xb8, 0x04, 0xab, 0xf6, 0xe4,
+	0xd7, 0xda, 0xec, 0x09, 0x8f, 0xda, 0x6d, 0x24,
+	0x07, 0xcc, 0x29, 0x17, 0x05, 0x78, 0x1a, 0xc1,
+	0xb1, 0xce, 0xfc, 0xaa, 0x2d, 0xe7, 0xcc, 0x85,
+	0x84, 0x84, 0x03, 0x2a, 0x0c, 0x3f, 0xa9, 0xf8,
+	0xfd, 0x84, 0x53, 0x59, 0x5c, 0xf0, 0xd4, 0x09,
+	0xf0, 0xd2, 0x6c, 0x32, 0x03, 0xb0, 0xa0, 0x8c,
+	0x52, 0xeb, 0x23, 0x91, 0x88, 0x43, 0x13, 0x46,
+	0xf6, 0x1e, 0xb4, 0x1b, 0xf5, 0x8e, 0x3a, 0xb5,
+	0x3d, 0x00, 0xf6, 0xe5, 0x08, 0x3d, 0x5f, 0x39,
+	0xd3, 0x21, 0x69, 0xbc, 0x03, 0x22, 0x3a, 0xd2,
+	0x5c, 0x84, 0xf8, 0x15, 0xc4, 0x80, 0x0b, 0xbc,
+	0x29, 0x3c, 0xf3, 0x95, 0x98, 0xcd, 0x8f, 0x35,
+	0xbc, 0xa5, 0x3e, 0xfc, 0xd4, 0x13, 0x9e, 0xde,
+	0x4f, 0xce, 0x71, 0x9d, 0x09, 0xad, 0xf2, 0x80,
+	0x6b, 0x65, 0x7f, 0x03, 0x00, 0x14, 0x7c, 0x15,
+	0x85, 0x40, 0x6d, 0x70, 0xea, 0xdc, 0xb3, 0x63,
+	0x35, 0x4f, 0x4d, 0xe0, 0xd9, 0xd5, 0x3c, 0x58,
+	0x56, 0x23, 0x80, 0xe2, 0x36, 0xdd, 0x75, 0x1d,
+	0x94, 0x11, 0x41, 0x8e, 0xe0, 0x81, 0x8e, 0xcf,
+	0xe0, 0xe5, 0xf6, 0xde, 0xd1, 0xe7, 0x04, 0x12,
+	0x79, 0x92, 0x2b, 0x71, 0x2a, 0x79, 0x8b, 0x7c,
+	0x44, 0x79, 0x16, 0x30, 0x4e, 0xf4, 0xf6, 0x9b,
+	0xb7, 0x40, 0xa3, 0x5a, 0xa7, 0x69, 0x3e, 0xc1,
+	0x3a, 0x04, 0xd0, 0x88, 0xa0, 0x3b, 0xdd, 0xc6,
+	0x9e, 0x7e, 0x1e, 0x1e, 0x8f, 0x44, 0xf7, 0x73,
+	0x67, 0x1e, 0x1a, 0x78, 0xfa, 0x62, 0xf4, 0xa9,
+	0xa8, 0xc6, 0x5b, 0xb8, 0xfa, 0x06, 0x7d, 0x5e,
+	0x38, 0x1c, 0x9a, 0x39, 0xe9, 0x39, 0x98, 0x22,
+	0x0b, 0xa7, 0xac, 0x0b, 0xf3, 0xbc, 0xf1, 0xeb,
+	0x8c, 0x81, 0xe3, 0x48, 0x8a, 0xed, 0x42, 0xc2,
+	0x38, 0xcf, 0x3e, 0xda, 0xd2, 0x89, 0x8d, 0x9c,
+	0x53, 0xb5, 0x2f, 0x41, 0x01, 0x26, 0x84, 0x9c,
+	0xa3, 0x56, 0xf6, 0x49, 0xc7, 0xd4, 0x9f, 0x93,
+	0x1b, 0x96, 0x49, 0x5e, 0xad, 0xb3, 0x84, 0x1f,
+	0x3c, 0xa4, 0xe0, 0x9b, 0xd1, 0x90, 0xbc, 0x38,
+	0x6c, 0xdd, 0x95, 0x4d, 0x9d, 0xb1, 0x71, 0x57,
+	0x2d, 0x34, 0xe8, 0xb8, 0x42, 0xc7, 0x99, 0x03,
+	0xc7, 0x07, 0x30, 0x65, 0x91, 0x55, 0xd5, 0x90,
+	0x70, 0x97, 0x37, 0x68, 0xd4, 0x11, 0xf9, 0xe8,
+	0xce, 0xec, 0xdc, 0x34, 0xd5, 0xd3, 0xb7, 0xc4,
+	0xb8, 0x97, 0x05, 0x92, 0xad, 0xf8, 0xe2, 0x36,
+	0x64, 0x41, 0xc9, 0xc5, 0x41, 0x77, 0x52, 0xd7,
+	0x2c, 0xa5, 0x24, 0x2f, 0xd9, 0x34, 0x0b, 0x47,
+	0x35, 0xa7, 0x28, 0x8b, 0xc5, 0xcd, 0xe9, 0x46,
+	0xac, 0x39, 0x94, 0x3c, 0x10, 0xc6, 0x29, 0x73,
+	0x0e, 0x0e, 0x5d, 0xe0, 0x71, 0x03, 0x8a, 0x72,
+	0x0e, 0x26, 0xb0, 0x7d, 0x84, 0xed, 0x95, 0x23,
+	0x49, 0x5a, 0x45, 0x83, 0x45, 0x60, 0x11, 0x4a,
+	0x46, 0x31, 0xd4, 0xd8, 0x16, 0x54, 0x98, 0x58,
+	0xed, 0x6d, 0xcc, 0x5d, 0xd6, 0x50, 0x61, 0x9f,
+	0x9d, 0xc5, 0x3e, 0x9d, 0x32, 0x47, 0xde, 0x96,
+	0xe1, 0x5d, 0xd8, 0xf8, 0xb4, 0x69, 0x6f, 0xb9,
+	0x15, 0x90, 0x57, 0x7a, 0xf6, 0xad, 0xb0, 0x5b,
+	0xf5, 0xa6, 0x36, 0x94, 0xfd, 0x84, 0xce, 0x1c,
+	0x0f, 0x4b, 0xd0, 0xc2, 0x5b, 0x6b, 0x56, 0xef,
+	0x73, 0x93, 0x0b, 0xc3, 0xee, 0xd9, 0xcf, 0xd3,
+	0xa4, 0x22, 0x58, 0xcd, 0x50, 0x6e, 0x65, 0xf4,
+	0xe9, 0xb7, 0x71, 0xaf, 0x4b, 0xb3, 0xb6, 0x2f,
+	0x0f, 0x0e, 0x3b, 0xc9, 0x85, 0x14, 0xf5, 0x17,
+	0xe8, 0x7a, 0x3a, 0xbf, 0x5f, 0x5e, 0xf8, 0x18,
+	0x48, 0xa6, 0x72, 0xab, 0x06, 0x95, 0xe9, 0xc8,
+	0xa7, 0xf4, 0x32, 0x44, 0x04, 0x0c, 0x84, 0x98,
+	0x73, 0xe3, 0x89, 0x8d, 0x5f, 0x7e, 0x4a, 0x42,
+	0x8f, 0xc5, 0x28, 0xb1, 0x82, 0xef, 0x1c, 0x97,
+	0x31, 0x3b, 0x4d, 0xe0, 0x0e, 0x10, 0x10, 0x97,
+	0x93, 0x49, 0x78, 0x2f, 0x0d, 0x86, 0x8b, 0xa1,
+	0x53, 0xa9, 0x81, 0x20, 0x79, 0xe7, 0x07, 0x77,
+	0xb6, 0xac, 0x5e, 0xd2, 0x05, 0xcd, 0xe9, 0xdb,
+	0x8a, 0x94, 0x82, 0x8a, 0x23, 0xb9, 0x3d, 0x1c,
+	0xa9, 0x7d, 0x72, 0x4a, 0xed, 0x33, 0xa3, 0xdb,
+	0x21, 0xa7, 0x86, 0x33, 0x45, 0xa5, 0xaa, 0x56,
+	0x45, 0xb5, 0x83, 0x29, 0x40, 0x47, 0x79, 0x04,
+	0x6e, 0xb9, 0x95, 0xd0, 0x81, 0x77, 0x2d, 0x48,
+	0x1e, 0xfe, 0xc3, 0xc2, 0x1e, 0xe5, 0xf2, 0xbe,
+	0xfd, 0x3b, 0x94, 0x9f, 0xc4, 0xc4, 0x26, 0x9d,
+	0xe4, 0x66, 0x1e, 0x19, 0xee, 0x6c, 0x79, 0x97,
+	0x11, 0x31, 0x4b, 0x0d, 0x01, 0xcb, 0xde, 0xa8,
+	0xf6, 0x6d, 0x7c, 0x39, 0x46, 0x4e, 0x7e, 0x3f,
+	0x94, 0x17, 0xdf, 0xa1, 0x7d, 0xd9, 0x1c, 0x8e,
+	0xbc, 0x7d, 0x33, 0x7d, 0xe3, 0x12, 0x40, 0xca,
+	0xab, 0x37, 0x11, 0x46, 0xd4, 0xae, 0xef, 0x44,
+	0xa2, 0xb3, 0x6a, 0x66, 0x0e, 0x0c, 0x90, 0x7f,
+	0xdf, 0x5c, 0x66, 0x5f, 0xf2, 0x94, 0x9f, 0xa6,
+	0x73, 0x4f, 0xeb, 0x0d, 0xad, 0xbf, 0xc0, 0x63,
+	0x5c, 0xdc, 0x46, 0x51, 0xe8, 0x8e, 0x90, 0x19,
+	0xa8, 0xa4, 0x3c, 0x91, 0x79, 0xfa, 0x7e, 0x58,
+	0x85, 0x13, 0x55, 0xc5, 0x19, 0x82, 0x37, 0x1b,
+	0x0a, 0x02, 0x1f, 0x99, 0x6b, 0x18, 0xf1, 0x28,
+	0x08, 0xa2, 0x73, 0xb8, 0x0f, 0x2e, 0xcd, 0xbf,
+	0xf3, 0x86, 0x7f, 0xea, 0xef, 0xd0, 0xbb, 0xa6,
+	0x21, 0xdf, 0x49, 0x73, 0x51, 0xcc, 0x36, 0xd3,
+	0x3e, 0xa0, 0xf8, 0x44, 0xdf, 0xd3, 0xa6, 0xbe,
+	0x8a, 0xd4, 0x57, 0xdd, 0x72, 0x94, 0x61, 0x0f,
+	0x82, 0xd1, 0x07, 0xb8, 0x7c, 0x18, 0x83, 0xdf,
+	0x3a, 0xe5, 0x50, 0x6a, 0x82, 0x20, 0xac, 0xa9,
+	0xa8, 0xff, 0xd9, 0xf3, 0x77, 0x33, 0x5a, 0x9e,
+	0x7f, 0x6d, 0xfe, 0x5d, 0x33, 0x41, 0x42, 0xe7,
+	0x6c, 0x19, 0xe0, 0x44, 0x8a, 0x15, 0xf6, 0x70,
+	0x98, 0xb7, 0x68, 0x4d, 0xfa, 0x97, 0x39, 0xb0,
+	0x8e, 0xe8, 0x84, 0x8b, 0x75, 0x30, 0xb7, 0x7d,
+	0x92, 0x69, 0x20, 0x9c, 0x81, 0xfb, 0x4b, 0xf4,
+	0x01, 0x50, 0xeb, 0xce, 0x0c, 0x1c, 0x6c, 0xb5,
+	0x4a, 0xd7, 0x27, 0x0c, 0xce, 0xbb, 0xe5, 0x85,
+	0xf0, 0xb6, 0xee, 0xd5, 0x70, 0xdd, 0x3b, 0xfc,
+	0xd4, 0x99, 0xf1, 0x33, 0xdd, 0x8b, 0xc4, 0x2f,
+	0xae, 0xab, 0x74, 0x96, 0x32, 0xc7, 0x4c, 0x56,
+	0x3c, 0x89, 0x0f, 0x96, 0x0b, 0x42, 0xc0, 0xcb,
+	0xee, 0x0f, 0x0b, 0x8c, 0xfb, 0x7e, 0x47, 0x7b,
+	0x64, 0x48, 0xfd, 0xb2, 0x00, 0x80, 0x89, 0xa5,
+	0x13, 0x55, 0x62, 0xfc, 0x8f, 0xe2, 0x42, 0x03,
+	0xb7, 0x4e, 0x2a, 0x79, 0xb4, 0x82, 0xea, 0x23,
+	0x49, 0xda, 0xaf, 0x52, 0x63, 0x1e, 0x60, 0x03,
+	0x89, 0x06, 0x44, 0x46, 0x08, 0xc3, 0xc4, 0x87,
+	0x70, 0x2e, 0xda, 0x94, 0xad, 0x6b, 0xe0, 0xe4,
+	0xd1, 0x8a, 0x06, 0xc2, 0xa8, 0xc0, 0xa7, 0x43,
+	0x3c, 0x47, 0x52, 0x0e, 0xc3, 0x77, 0x81, 0x11,
+	0x67, 0x0e, 0xa0, 0x70, 0x04, 0x47, 0x29, 0x40,
+	0x86, 0x0d, 0x34, 0x56, 0xa7, 0xc9, 0x35, 0x59,
+	0x68, 0xdc, 0x93, 0x81, 0x70, 0xee, 0x86, 0xd9,
+	0x80, 0x06, 0x40, 0x4f, 0x1a, 0x0d, 0x40, 0x30,
+	0x0b, 0xcb, 0x96, 0x47, 0xc1, 0xb7, 0x52, 0xfd,
+	0x56, 0xe0, 0x72, 0x4b, 0xfb, 0xbd, 0x92, 0x45,
+	0x61, 0x71, 0xc2, 0x33, 0x11, 0xbf, 0x52, 0x83,
+	0x79, 0x26, 0xe0, 0x49, 0x6b, 0xb7, 0x05, 0x8b,
+	0xe8, 0x0e, 0x87, 0x31, 0xd7, 0x9d, 0x8a, 0xf5,
+	0xc0, 0x5f, 0x2e, 0x58, 0x4a, 0xdb, 0x11, 0xb3,
+	0x6c, 0x30, 0x2a, 0x46, 0x19, 0xe3, 0x27, 0x84,
+	0x1f, 0x63, 0x6e, 0xf6, 0x57, 0xc7, 0xc9, 0xd8,
+	0x5e, 0xba, 0xb3, 0x87, 0xd5, 0x83, 0x26, 0x34,
+	0x21, 0x9e, 0x65, 0xde, 0x42, 0xd3, 0xbe, 0x7b,
+	0xbc, 0x91, 0x71, 0x44, 0x4d, 0x99, 0x3b, 0x31,
+	0xe5, 0x3f, 0x11, 0x4e, 0x7f, 0x13, 0x51, 0x3b,
+	0xae, 0x79, 0xc9, 0xd3, 0x81, 0x8e, 0x25, 0x40,
+	0x10, 0xfc, 0x07, 0x1e, 0xf9, 0x7b, 0x9a, 0x4b,
+	0x6c, 0xe3, 0xb3, 0xad, 0x1a, 0x0a, 0xdd, 0x9e,
+	0x59, 0x0c, 0xa2, 0xcd, 0xae, 0x48, 0x4a, 0x38,
+	0x5b, 0x47, 0x41, 0x94, 0x65, 0x6b, 0xbb, 0xeb,
+	0x5b, 0xe3, 0xaf, 0x07, 0x5b, 0xd4, 0x4a, 0xa2,
+	0xc9, 0x5d, 0x2f, 0x64, 0x03, 0xd7, 0x3a, 0x2c,
+	0x6e, 0xce, 0x76, 0x95, 0xb4, 0xb3, 0xc0, 0xf1,
+	0xe2, 0x45, 0x73, 0x7a, 0x5c, 0xab, 0xc1, 0xfc,
+	0x02, 0x8d, 0x81, 0x29, 0xb3, 0xac, 0x07, 0xec,
+	0x40, 0x7d, 0x45, 0xd9, 0x7a, 0x59, 0xee, 0x34,
+	0xf0, 0xe9, 0xd5, 0x7b, 0x96, 0xb1, 0x3d, 0x95,
+	0xcc, 0x86, 0xb5, 0xb6, 0x04, 0x2d, 0xb5, 0x92,
+	0x7e, 0x76, 0xf4, 0x06, 0xa9, 0xa3, 0x12, 0x0f,
+	0xb1, 0xaf, 0x26, 0xba, 0x7c, 0xfc, 0x7e, 0x1c,
+	0xbc, 0x2c, 0x49, 0x97, 0x53, 0x60, 0x13, 0x0b,
+	0xa6, 0x61, 0x83, 0x89, 0x42, 0xd4, 0x17, 0x0c,
+	0x6c, 0x26, 0x52, 0xc3, 0xb3, 0xd4, 0x67, 0xf5,
+	0xe3, 0x04, 0xb7, 0xf4, 0xcb, 0x80, 0xb8, 0xcb,
+	0x77, 0x56, 0x3e, 0xaa, 0x57, 0x54, 0xee, 0xb4,
+	0x2c, 0x67, 0xcf, 0xf2, 0xdc, 0xbe, 0x55, 0xf9,
+	0x43, 0x1f, 0x6e, 0x22, 0x97, 0x67, 0x7f, 0xc4,
+	0xef, 0xb1, 0x26, 0x31, 0x1e, 0x27, 0xdf, 0x41,
+	0x80, 0x47, 0x6c, 0xe2, 0xfa, 0xa9, 0x8c, 0x2a,
+	0xf6, 0xf2, 0xab, 0xf0, 0x15, 0xda, 0x6c, 0xc8,
+	0xfe, 0xb5, 0x23, 0xde, 0xa9, 0x05, 0x3f, 0x06,
+	0x54, 0x4c, 0xcd, 0xe1, 0xab, 0xfc, 0x0e, 0x62,
+	0x33, 0x31, 0x73, 0x2c, 0x76, 0xcb, 0xb4, 0x47,
+	0x1e, 0x20, 0xad, 0xd8, 0xf2, 0x31, 0xdd, 0xc4,
+	0x8b, 0x0c, 0x77, 0xbe, 0xe1, 0x8b, 0x26, 0x00,
+	0x02, 0x58, 0xd6, 0x8d, 0xef, 0xad, 0x74, 0x67,
+	0xab, 0x3f, 0xef, 0xcb, 0x6f, 0xb0, 0xcc, 0x81,
+	0x44, 0x4c, 0xaf, 0xe9, 0x49, 0x4f, 0xdb, 0xa0,
+	0x25, 0xa4, 0xf0, 0x89, 0xf1, 0xbe, 0xd8, 0x10,
+	0xff, 0xb1, 0x3b, 0x4b, 0xfa, 0x98, 0xf5, 0x79,
+	0x6d, 0x1e, 0x69, 0x4d, 0x57, 0xb1, 0xc8, 0x19,
+	0x1b, 0xbd, 0x1e, 0x8c, 0x84, 0xb7, 0x7b, 0xe8,
+	0xd2, 0x2d, 0x09, 0x41, 0x41, 0x37, 0x3d, 0xb1,
+	0x6f, 0x26, 0x5d, 0x71, 0x16, 0x3d, 0xb7, 0x83,
+	0x27, 0x2c, 0xa7, 0xb6, 0x50, 0xbd, 0x91, 0x86,
+	0xab, 0x24, 0xa1, 0x38, 0xfd, 0xea, 0x71, 0x55,
+	0x7e, 0x9a, 0x07, 0x77, 0x4b, 0xfa, 0x61, 0x66,
+	0x20, 0x1e, 0x28, 0x95, 0x18, 0x1b, 0xa4, 0xa0,
+	0xfd, 0xc0, 0x89, 0x72, 0x43, 0xd9, 0x3b, 0x49,
+	0x5a, 0x3f, 0x9d, 0xbf, 0xdb, 0xb4, 0x46, 0xea,
+	0x42, 0x01, 0x77, 0x23, 0x68, 0x95, 0xb6, 0x24,
+	0xb3, 0xa8, 0x6c, 0x28, 0x3b, 0x11, 0x40, 0x7e,
+	0x18, 0x65, 0x6d, 0xd8, 0x24, 0x42, 0x7d, 0x88,
+	0xc0, 0x52, 0xd9, 0x05, 0xe4, 0x95, 0x90, 0x87,
+	0x8c, 0xf4, 0xd0, 0x6b, 0xb9, 0x83, 0x99, 0x34,
+	0x6d, 0xfe, 0x54, 0x40, 0x94, 0x52, 0x21, 0x4f,
+	0x14, 0x25, 0xc5, 0xd6, 0x5e, 0x95, 0xdc, 0x0a,
+	0x2b, 0x89, 0x20, 0x11, 0x84, 0x48, 0xd6, 0x3a,
+	0xcd, 0x5c, 0x24, 0xad, 0x62, 0xe3, 0xb1, 0x93,
+	0x25, 0x8d, 0xcd, 0x7e, 0xfc, 0x27, 0xa3, 0x37,
+	0xfd, 0x84, 0xfc, 0x1b, 0xb2, 0xf1, 0x27, 0x38,
+	0x5a, 0xb7, 0xfc, 0xf2, 0xfa, 0x95, 0x66, 0xd4,
+	0xfb, 0xba, 0xa7, 0xd7, 0xa3, 0x72, 0x69, 0x48,
+	0x48, 0x8c, 0xeb, 0x28, 0x89, 0xfe, 0x33, 0x65,
+	0x5a, 0x36, 0x01, 0x7e, 0x06, 0x79, 0x0a, 0x09,
+	0x3b, 0x74, 0x11, 0x9a, 0x6e, 0xbf, 0xd4, 0x9e,
+	0x58, 0x90, 0x49, 0x4f, 0x4d, 0x08, 0xd4, 0xe5,
+	0x4a, 0x09, 0x21, 0xef, 0x8b, 0xb8, 0x74, 0x3b,
+	0x91, 0xdd, 0x36, 0x85, 0x60, 0x2d, 0xfa, 0xd4,
+	0x45, 0x7b, 0x45, 0x53, 0xf5, 0x47, 0x87, 0x7e,
+	0xa6, 0x37, 0xc8, 0x78, 0x7a, 0x68, 0x9d, 0x8d,
+	0x65, 0x2c, 0x0e, 0x91, 0x5c, 0xa2, 0x60, 0xf0,
+	0x8e, 0x3f, 0xe9, 0x1a, 0xcd, 0xaa, 0xe7, 0xd5,
+	0x77, 0x18, 0xaf, 0xc9, 0xbc, 0x18, 0xea, 0x48,
+	0x1b, 0xfb, 0x22, 0x48, 0x70, 0x16, 0x29, 0x9e,
+	0x5b, 0xc1, 0x2c, 0x66, 0x23, 0xbc, 0xf0, 0x1f,
+	0xef, 0xaf, 0xe4, 0xd6, 0x04, 0x19, 0x82, 0x7a,
+	0x0b, 0xba, 0x4b, 0x46, 0xb1, 0x6a, 0x85, 0x5d,
+	0xb4, 0x73, 0xd6, 0x21, 0xa1, 0x71, 0x60, 0x14,
+	0xee, 0x0a, 0x77, 0xc4, 0x66, 0x2e, 0xf9, 0x69,
+	0x30, 0xaf, 0x41, 0x0b, 0xc8, 0x83, 0x3c, 0x53,
+	0x99, 0x19, 0x27, 0x46, 0xf7, 0x41, 0x6e, 0x56,
+	0xdc, 0x94, 0x28, 0x67, 0x4e, 0xb7, 0x25, 0x48,
+	0x8a, 0xc2, 0xe0, 0x60, 0x96, 0xcc, 0x18, 0xf4,
+	0x84, 0xdd, 0xa7, 0x5e, 0x3e, 0x05, 0x0b, 0x26,
+	0x26, 0xb2, 0x5c, 0x1f, 0x57, 0x1a, 0x04, 0x7e,
+	0x6a, 0xe3, 0x2f, 0xb4, 0x35, 0xb6, 0x38, 0x40,
+	0x40, 0xcd, 0x6f, 0x87, 0x2e, 0xef, 0xa3, 0xd7,
+	0xa9, 0xc2, 0xe8, 0x0d, 0x27, 0xdf, 0x44, 0x62,
+	0x99, 0xa0, 0xfc, 0xcf, 0x81, 0x78, 0xcb, 0xfe,
+	0xe5, 0xa0, 0x03, 0x4e, 0x6c, 0xd7, 0xf4, 0xaf,
+	0x7a, 0xbb, 0x61, 0x82, 0xfe, 0x71, 0x89, 0xb2,
+	0x22, 0x7c, 0x8e, 0x83, 0x04, 0xce, 0xf6, 0x5d,
+	0x84, 0x8f, 0x95, 0x6a, 0x7f, 0xad, 0xfd, 0x32,
+	0x9c, 0x5e, 0xe4, 0x9c, 0x89, 0x60, 0x54, 0xaa,
+	0x96, 0x72, 0xd2, 0xd7, 0x36, 0x85, 0xa9, 0x45,
+	0xd2, 0x2a, 0xa1, 0x81, 0x49, 0x6f, 0x7e, 0x04,
+	0xfa, 0xe2, 0xfe, 0x90, 0x26, 0x77, 0x5a, 0x33,
+	0xb8, 0x04, 0x9a, 0x7a, 0xe6, 0x4c, 0x4f, 0xad,
+	0x72, 0x96, 0x08, 0x28, 0x58, 0x13, 0xf8, 0xc4,
+	0x1c, 0xf0, 0xc3, 0x45, 0x95, 0x49, 0x20, 0x8c,
+	0x9f, 0x39, 0x70, 0xe1, 0x77, 0xfe, 0xd5, 0x4b,
+	0xaf, 0x86, 0xda, 0xef, 0x22, 0x06, 0x83, 0x36,
+	0x29, 0x12, 0x11, 0x40, 0xbc, 0x3b, 0x86, 0xaa,
+	0xaa, 0x65, 0x60, 0xc3, 0x80, 0xca, 0xed, 0xa9,
+	0xf3, 0xb0, 0x79, 0x96, 0xa2, 0x55, 0x27, 0x28,
+	0x55, 0x73, 0x26, 0xa5, 0x50, 0xea, 0x92, 0x4b,
+	0x3c, 0x5c, 0x82, 0x33, 0xf0, 0x01, 0x3f, 0x03,
+	0xc1, 0x08, 0x05, 0xbf, 0x98, 0xf4, 0x9b, 0x6d,
+	0xa5, 0xa8, 0xb4, 0x82, 0x0c, 0x06, 0xfa, 0xff,
+	0x2d, 0x08, 0xf3, 0x05, 0x4f, 0x57, 0x2a, 0x39,
+	0xd4, 0x83, 0x0d, 0x75, 0x51, 0xd8, 0x5b, 0x1b,
+	0xd3, 0x51, 0x5a, 0x32, 0x2a, 0x9b, 0x32, 0xb2,
+	0xf2, 0xa4, 0x96, 0x12, 0xf2, 0xae, 0x40, 0x34,
+	0x67, 0xa8, 0xf5, 0x44, 0xd5, 0x35, 0x53, 0xfe,
+	0xa3, 0x60, 0x96, 0x63, 0x0f, 0x1f, 0x6e, 0xb0,
+	0x5a, 0x42, 0xa6, 0xfc, 0x51, 0x0b, 0x60, 0x27,
+	0xbc, 0x06, 0x71, 0xed, 0x65, 0x5b, 0x23, 0x86,
+	0x4a, 0x07, 0x3b, 0x22, 0x07, 0x46, 0xe6, 0x90,
+	0x3e, 0xf3, 0x25, 0x50, 0x1b, 0x4c, 0x7f, 0x03,
+	0x08, 0xa8, 0x36, 0x6b, 0x87, 0xe5, 0xe3, 0xdb,
+	0x9a, 0x38, 0x83, 0xff, 0x9f, 0x1a, 0x9f, 0x57,
+	0xa4, 0x2a, 0xf6, 0x37, 0xbc, 0x1a, 0xff, 0xc9,
+	0x1e, 0x35, 0x0c, 0xc3, 0x7c, 0xa3, 0xb2, 0xe5,
+	0xd2, 0xc6, 0xb4, 0x57, 0x47, 0xe4, 0x32, 0x16,
+	0x6d, 0xa9, 0xae, 0x64, 0xe6, 0x2d, 0x8d, 0xc5,
+	0x8d, 0x50, 0x8e, 0xe8, 0x1a, 0x22, 0x34, 0x2a,
+	0xd9, 0xeb, 0x51, 0x90, 0x4a, 0xb1, 0x41, 0x7d,
+	0x64, 0xf9, 0xb9, 0x0d, 0xf6, 0x23, 0x33, 0xb0,
+	0x33, 0xf4, 0xf7, 0x3f, 0x27, 0x84, 0xc6, 0x0f,
+	0x54, 0xa5, 0xc0, 0x2e, 0xec, 0x0b, 0x3a, 0x48,
+	0x6e, 0x80, 0x35, 0x81, 0x43, 0x9b, 0x90, 0xb1,
+	0xd0, 0x2b, 0xea, 0x21, 0xdc, 0xda, 0x5b, 0x09,
+	0xf4, 0xcc, 0x10, 0xb4, 0xc7, 0xfe, 0x79, 0x51,
+	0xc3, 0xc5, 0xac, 0x88, 0x74, 0x84, 0x0b, 0x4b,
+	0xca, 0x79, 0x16, 0x29, 0xfb, 0x69, 0x54, 0xdf,
+	0x41, 0x7e, 0xe9, 0xc7, 0x8e, 0xea, 0xa5, 0xfe,
+	0xfc, 0x76, 0x0e, 0x90, 0xc4, 0x92, 0x38, 0xad,
+	0x7b, 0x48, 0xe6, 0x6e, 0xf7, 0x21, 0xfd, 0x4e,
+	0x93, 0x0a, 0x7b, 0x41, 0x83, 0x68, 0xfb, 0x57,
+	0x51, 0x76, 0x34, 0xa9, 0x6c, 0x00, 0xaa, 0x4f,
+	0x66, 0x65, 0x98, 0x4a, 0x4f, 0xa3, 0xa0, 0xef,
+	0x69, 0x3f, 0xe3, 0x1c, 0x92, 0x8c, 0xfd, 0xd8,
+	0xe8, 0xde, 0x7c, 0x7f, 0x3e, 0x84, 0x8e, 0x69,
+	0x3c, 0xf1, 0xf2, 0x05, 0x46, 0xdc, 0x2f, 0x9d,
+	0x5e, 0x6e, 0x4c, 0xfb, 0xb5, 0x99, 0x2a, 0x59,
+	0x63, 0xc1, 0x34, 0xbc, 0x57, 0xc0, 0x0d, 0xb9,
+	0x61, 0x25, 0xf3, 0x33, 0x23, 0x51, 0xb6, 0x0d,
+	0x07, 0xa6, 0xab, 0x94, 0x4a, 0xb7, 0x2a, 0xea,
+	0xee, 0xac, 0xa3, 0xc3, 0x04, 0x8b, 0x0e, 0x56,
+	0xfe, 0x44, 0xa7, 0x39, 0xe2, 0xed, 0xed, 0xb4,
+	0x22, 0x2b, 0xac, 0x12, 0x32, 0x28, 0x91, 0xd8,
+	0xa5, 0xab, 0xff, 0x5f, 0xe0, 0x4b, 0xda, 0x78,
+	0x17, 0xda, 0xf1, 0x01, 0x5b, 0xcd, 0xe2, 0x5f,
+	0x50, 0x45, 0x73, 0x2b, 0xe4, 0x76, 0x77, 0xf4,
+	0x64, 0x1d, 0x43, 0xfb, 0x84, 0x7a, 0xea, 0x91,
+	0xae, 0xf9, 0x9e, 0xb7, 0xb4, 0xb0, 0x91, 0x5f,
+	0x16, 0x35, 0x9a, 0x11, 0xb8, 0xc7, 0xc1, 0x8c,
+	0xc6, 0x10, 0x8d, 0x2f, 0x63, 0x4a, 0xa7, 0x57,
+	0x3a, 0x51, 0xd6, 0x32, 0x2d, 0x64, 0x72, 0xd4,
+	0x66, 0xdc, 0x10, 0xa6, 0x67, 0xd6, 0x04, 0x23,
+	0x9d, 0x0a, 0x11, 0x77, 0xdd, 0x37, 0x94, 0x17,
+	0x3c, 0xbf, 0x8b, 0x65, 0xb0, 0x2e, 0x5e, 0x66,
+	0x47, 0x64, 0xac, 0xdd, 0xf0, 0x84, 0xfd, 0x39,
+	0xfa, 0x15, 0x5d, 0xef, 0xae, 0xca, 0xc1, 0x36,
+	0xa7, 0x5c, 0xbf, 0xc7, 0x08, 0xc2, 0x66, 0x00,
+	0x74, 0x74, 0x4e, 0x27, 0x3f, 0x55, 0x8a, 0xb7,
+	0x38, 0x66, 0x83, 0x6d, 0xcf, 0x99, 0x9e, 0x60,
+	0x8f, 0xdd, 0x2e, 0x62, 0x22, 0x0e, 0xef, 0x0c,
+	0x98, 0xa7, 0x85, 0x74, 0x3b, 0x9d, 0xec, 0x9e,
+	0xa9, 0x19, 0x72, 0xa5, 0x7f, 0x2c, 0x39, 0xb7,
+	0x7d, 0xb7, 0xf1, 0x12, 0x65, 0x27, 0x4b, 0x5a,
+	0xde, 0x17, 0xfe, 0xad, 0x44, 0xf3, 0x20, 0x4d,
+	0xfd, 0xe4, 0x1f, 0xb5, 0x81, 0xb0, 0x36, 0x37,
+	0x08, 0x6f, 0xc3, 0x0c, 0xe9, 0x85, 0x98, 0x82,
+	0xa9, 0x62, 0x0c, 0xc4, 0x97, 0xc0, 0x50, 0xc8,
+	0xa7, 0x3c, 0x50, 0x9f, 0x43, 0xb9, 0xcd, 0x5e,
+	0x4d, 0xfa, 0x1c, 0x4b, 0x0b, 0xa9, 0x98, 0x85,
+	0x38, 0x92, 0xac, 0x8d, 0xe4, 0xad, 0x9b, 0x98,
+	0xab, 0xd9, 0x38, 0xac, 0x62, 0x52, 0xa3, 0x22,
+	0x63, 0x0f, 0xbf, 0x95, 0x48, 0xdf, 0x69, 0xe7,
+	0x8b, 0x33, 0xd5, 0xb2, 0xbd, 0x05, 0x49, 0x49,
+	0x9d, 0x57, 0x73, 0x19, 0x33, 0xae, 0xfa, 0x33,
+	0xf1, 0x19, 0xa8, 0x80, 0xce, 0x04, 0x9f, 0xbc,
+	0x1d, 0x65, 0x82, 0x1b, 0xe5, 0x3a, 0x51, 0xc8,
+	0x1c, 0x21, 0xe3, 0x5d, 0xf3, 0x7d, 0x9b, 0x2f,
+	0x2c, 0x1d, 0x4a, 0x7f, 0x9b, 0x68, 0x35, 0xa3,
+	0xb2, 0x50, 0xf7, 0x62, 0x79, 0xcd, 0xf4, 0x98,
+	0x4f, 0xe5, 0x63, 0x7c, 0x3e, 0x45, 0x31, 0x8c,
+	0x16, 0xa0, 0x12, 0xc8, 0x58, 0xce, 0x39, 0xa6,
+	0xbc, 0x54, 0xdb, 0xc5, 0xe0, 0xd5, 0xba, 0xbc,
+	0xb9, 0x04, 0xf4, 0x8d, 0xe8, 0x2f, 0x15, 0x9d,
+};
+
+/* 100 test cases */
+static struct crc_test {
+	uint32_t crc;	/* random starting crc */
+	uint32_t start;	/* random 6 bit offset in buf */
+	uint32_t length;	/* random 11 bit length of test */
+	uint32_t crc32c_le;	/* expected crc32c_le result */
+} test[] =
+{
+	{0x674bf11d, 0x00000038, 0x00000542, 0xf6e93d6c},
+	{0x35c672c6, 0x0000003a, 0x000001aa, 0x0fe92aca},
+	{0x496da28e, 0x00000039, 0x000005af, 0x52e1ebb8},
+	{0x09a9b90e, 0x00000027, 0x000001f8, 0x0798af9a},
+	{0xdc97e5a9, 0x00000025, 0x000003b6, 0x18eb3152},
+	{0x47c58900, 0x0000000a, 0x000000b9, 0xd00d08c7},
+	{0x292561e8, 0x0000000c, 0x00000403, 0x8ba966bc},
+	{0x415037f6, 0x00000003, 0x00000676, 0x11d694a2},
+	{0x3466e707, 0x00000026, 0x00000042, 0x6ab3208d},
+	{0xafd1281b, 0x00000023, 0x000002ee, 0xba4603c5},
+	{0xd3857b18, 0x00000028, 0x000004a2, 0xe6071c6f},
+	{0x1d825a8f, 0x0000002b, 0x0000050b, 0x179ec30a},
+	{0x5033e3bc, 0x0000000b, 0x00000078, 0x0903beb8},
+	{0x94f1fb5e, 0x0000000f, 0x000003a2, 0x6a7cb4fa},
+	{0xc9a0fe14, 0x00000009, 0x00000473, 0xdb535801},
+	{0x88a034b1, 0x0000001c, 0x000005ad, 0x92bed597},
+	{0xf0f72239, 0x00000020, 0x0000026d, 0x192a3f1b},
+	{0xcc20a5e3, 0x0000003b, 0x0000067a, 0xccbaec1a},
+	{0xce589c95, 0x0000002b, 0x00000641, 0x7eabae4d},
+	{0x78edc885, 0x00000035, 0x000005be, 0x28c72982},
+	{0x9d40a377, 0x0000003b, 0x00000038, 0xc3cd4d18},
+	{0x703d0e01, 0x0000003c, 0x000006f1, 0xbca8f0e7},
+	{0x776bf505, 0x0000000f, 0x000005b2, 0x713f60b3},
+	{0x4a3e7854, 0x00000027, 0x000004b8, 0xebd08fd5},
+	{0x209172dd, 0x0000003b, 0x00000356, 0x64406c59},
+	{0x3ba4cc5b, 0x0000002f, 0x00000203, 0x7421890e},
+	{0xfc62f297, 0x00000000, 0x00000079, 0xe9347603},
+	{0x64280b8b, 0x00000016, 0x000007ab, 0x1bef9060},
+	{0x97dd724b, 0x00000033, 0x000007ad, 0x34720072},
+	{0x61394b52, 0x00000035, 0x00000571, 0x48310f59},
+	{0x29b4faff, 0x00000024, 0x0000006e, 0x783a4213},
+	{0x29bfb1dc, 0x0000000b, 0x00000244, 0x9e8efd41},
+	{0x86ae934b, 0x00000035, 0x00000104, 0xfc3d34a5},
+	{0xc4c1024e, 0x0000002e, 0x000006b1, 0x17a52ae2},
+	{0x3287a80a, 0x00000026, 0x00000496, 0x886d935a},
+	{0xa4db423e, 0x00000023, 0x0000045d, 0xeaaeaeb2},
+	{0x7a1078df, 0x00000015, 0x0000014a, 0x8e900a4b},
+	{0x6048bd5b, 0x00000006, 0x0000006a, 0xd74662b1},
+	{0xd8f9ea20, 0x0000003d, 0x00000277, 0xd26752ba},
+	{0xea5ec3b4, 0x0000002a, 0x000004fe, 0x8b1fcd62},
+	{0x2dfb005d, 0x00000016, 0x00000345, 0xf54342fe},
+	{0x5a214ade, 0x00000020, 0x000005b6, 0x5b95b988},
+	{0xf0ab9cca, 0x00000032, 0x00000515, 0x2e1176be},
+	{0x91b444f9, 0x0000002e, 0x000007f8, 0x66120546},
+	{0x1b5d2ddb, 0x0000002e, 0x0000012c, 0xf256a5cc},
+	{0xd824d1bb, 0x0000003a, 0x000007b5, 0x4af1dd69},
+	{0x0470180c, 0x00000034, 0x000001f0, 0x56f0a04a},
+	{0xffaa3a3f, 0x00000036, 0x00000299, 0x74f6b6b2},
+	{0x6406cfeb, 0x00000023, 0x00000600, 0x085951fd},
+	{0xb24aaa38, 0x0000003e, 0x000004a1, 0xc65387eb},
+	{0x58b2ab7c, 0x00000039, 0x000002b4, 0x1ca9257b},
+	{0x3db85970, 0x00000006, 0x000002b6, 0xfd196d76},
+	{0x857830c5, 0x00000003, 0x00000590, 0x5ef88339},
+	{0xe1fcd978, 0x0000003e, 0x000007d8, 0x2c3714d9},
+	{0xb982a768, 0x00000016, 0x000006e0, 0x58576548},
+	{0x1d581ce8, 0x0000001e, 0x0000058b, 0xfd7c57de},
+	{0x2456719b, 0x00000025, 0x00000503, 0xd5fedd59},
+	{0xfae6d8f2, 0x00000000, 0x0000055d, 0x1cc3b17b},
+	{0xcba828e3, 0x00000039, 0x000002ce, 0x270eed73},
+	{0x13d25952, 0x0000000a, 0x0000072d, 0x91ecbb11},
+	{0x0342be3f, 0x00000015, 0x00000599, 0x05ed8d0c},
+	{0xeaa344e0, 0x00000014, 0x000004d8, 0x0b09ad5b},
+	{0xbbb52021, 0x0000003b, 0x00000272, 0xf8d511fb},
+	{0xb66384dc, 0x0000001d, 0x000007fc, 0x5ad832cc},
+	{0x616c01b6, 0x00000022, 0x000002c8, 0x1214d196},
+	{0xce2bdaad, 0x00000016, 0x0000062a, 0x5747218a},
+	{0x00fe84d7, 0x00000005, 0x00000205, 0xde8f14de},
+	{0xbebdcb4c, 0x00000006, 0x0000055d, 0x3563b7b9},
+	{0xd8b1a02a, 0x00000010, 0x00000387, 0x071475d0},
+	{0x3b96cad2, 0x00000036, 0x00000347, 0x54c79d60},
+	{0xc94c1ed7, 0x00000005, 0x0000038b, 0x4c53eee6},
+	{0x1aad454e, 0x00000025, 0x000002b2, 0x10137a3c},
+	{0xa4fec9a6, 0x00000000, 0x000006d6, 0xaa9d6c73},
+	{0x1bbe71e2, 0x0000001f, 0x000002fd, 0xb63d23e7},
+	{0x4201c7e4, 0x00000002, 0x000002b7, 0x7f53e9cf},
+	{0x23fddc96, 0x00000003, 0x00000627, 0x13c1cd83},
+	{0xd82ba25c, 0x00000016, 0x0000063e, 0x49ff5867},
+	{0x786f2032, 0x0000002d, 0x0000060f, 0x8467f211},
+	{0xfebe4e1f, 0x0000002a, 0x000004f2, 0x3f9683b2},
+	{0x1a6e0a39, 0x00000008, 0x00000672, 0x76a3f874},
+	{0x56000ab8, 0x0000000e, 0x000000e5, 0x863b702f},
+	{0x4717fe0c, 0x00000000, 0x000006ec, 0xdc6c58ff},
+	{0xd5d5d68e, 0x0000003c, 0x000003a3, 0x0622cc95},
+	{0xc25dd6c6, 0x00000024, 0x000006c0, 0xe85605cd},
+	{0xe9b11300, 0x00000023, 0x00000683, 0x31da5f06},
+	{0x95cd285e, 0x00000001, 0x00000047, 0xa1f2e784},
+	{0xd9245a25, 0x0000001e, 0x000003a6, 0xb07cc616},
+	{0x103279db, 0x00000006, 0x0000039b, 0xbf943b6c},
+	{0x1cba3172, 0x00000027, 0x000001c8, 0x2c01af1c},
+	{0x8f613739, 0x0000000c, 0x000001df, 0x0fe5f56d},
+	{0x1c6aa90d, 0x0000001b, 0x0000053c, 0xf8943b2d},
+	{0xaabe5b93, 0x0000003d, 0x00000715, 0xe4d89272},
+	{0xf15dd038, 0x00000006, 0x000006db, 0x7c2f6bbb},
+	{0x584dd49c, 0x00000020, 0x000007bc, 0xabbf388b},
+	{0x5d8c9506, 0x00000020, 0x00000470, 0x1dca1f4e},
+	{0xb80d17b0, 0x00000032, 0x00000346, 0x5c170e23},
+	{0xdaf0592e, 0x00000023, 0x000007b0, 0xc0e9d672},
+	{0x4793cc85, 0x0000000d, 0x00000706, 0xc18bdc86},
+	{0x82ebf64e, 0x00000009, 0x000007c3, 0xa874fcdd},
+	{0xb18a0319, 0x00000026, 0x000007db, 0x9dc0bb48},
+};
+
+static int
+crc32c_test(void)
+{
+	int i;
+	int errors = 0;
+	int bytes = 0;
+	struct timeval start, stop;
+	uint64_t usec;
+
+	/* keep static to prevent cache warming code from
+	 * getting eliminated by the compiler */
+	static uint32_t crc;
+
+	/* pre-warm the cache */
+	for (i = 0; i < 100; i++) {
+		bytes += 2*test[i].length;
+
+		crc ^= crc32c_le(test[i].crc, test_buf +
+		    test[i].start, test[i].length);
+	}
+
+	gettimeofday(&start, NULL);
+	for (i = 0; i < 100; i++) {
+		if (test[i].crc32c_le != crc32c_le(test[i].crc, test_buf +
+		    test[i].start, test[i].length))
+			errors++;
+	}
+	gettimeofday(&stop, NULL);
+
+	usec = stop.tv_usec - start.tv_usec +
+		1000000 * (stop.tv_sec - start.tv_sec);
+
+	if (errors)
+		printf("crc32c: %d self tests failed\n", errors);
+	else {
+		printf("crc32c: tests passed, %d bytes in %" PRIu64 " usec\n",
+			bytes, usec);
+	}
+
+	return errors;
+}
+
+#endif /* __LIBFROG_CRC32CSELFTEST_H__ */
diff --git a/libxfs/libxfs_priv.h b/libxfs/libxfs_priv.h
index ec4d7d3b..96d74bfa 100644
--- a/libxfs/libxfs_priv.h
+++ b/libxfs/libxfs_priv.h
@@ -53,7 +53,7 @@
 #include "xfs_arch.h"
 
 #include "xfs_fs.h"
-#include "crc32c.h"
+#include "libfrog/crc32c.h"
 
 /* Zones used in libxfs allocations that aren't in shared header files */
 extern kmem_zone_t *xfs_buf_item_zone;


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 10/12] libfrog: move path.h to libfrog/
  2019-09-04  4:35 [PATCH 00/12] libfrog: move header files Darrick J. Wong
                   ` (8 preceding siblings ...)
  2019-09-04  4:36 ` [PATCH 09/12] libfrog: move crc32c.h " Darrick J. Wong
@ 2019-09-04  4:36 ` Darrick J. Wong
  2019-09-04 23:39   ` Dave Chinner
  2019-09-04  4:36 ` [PATCH 11/12] libfrog: move workqueue.h " Darrick J. Wong
  2019-09-04  4:36 ` [PATCH 12/12] libfrog: move libfrog.h to libfrog/util.h Darrick J. Wong
  11 siblings, 1 reply; 25+ messages in thread
From: Darrick J. Wong @ 2019-09-04  4:36 UTC (permalink / raw)
  To: sandeen, darrick.wong; +Cc: linux-xfs

From: Darrick J. Wong <darrick.wong@oracle.com>

Move this header to libfrog since the code is there already.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
---
 fsr/xfs_fsr.c       |    2 +-
 growfs/xfs_growfs.c |    2 +-
 include/Makefile    |    1 -
 include/path.h      |   61 ---------------------------------------------------
 io/cowextsize.c     |    2 +-
 io/encrypt.c        |    2 +-
 io/fsmap.c          |    2 +-
 io/io.h             |    2 +-
 io/label.c          |    2 +-
 io/parent.c         |    2 +-
 io/scrub.c          |    2 +-
 libfrog/Makefile    |    1 +
 libfrog/paths.c     |    2 +-
 libfrog/paths.h     |   61 +++++++++++++++++++++++++++++++++++++++++++++++++++
 quota/init.c        |    2 +-
 quota/quota.h       |    2 +-
 scrub/common.c      |    2 +-
 scrub/disk.c        |    2 +-
 scrub/filemap.c     |    2 +-
 scrub/fscounters.c  |    2 +-
 scrub/inodes.c      |    2 +-
 scrub/phase1.c      |    2 +-
 scrub/phase2.c      |    2 +-
 scrub/phase3.c      |    2 +-
 scrub/phase4.c      |    2 +-
 scrub/phase5.c      |    2 +-
 scrub/phase6.c      |    2 +-
 scrub/phase7.c      |    2 +-
 scrub/progress.c    |    2 +-
 scrub/read_verify.c |    2 +-
 scrub/repair.c      |    2 +-
 scrub/scrub.c       |    2 +-
 scrub/spacemap.c    |    2 +-
 scrub/unicrash.c    |    2 +-
 scrub/vfs.c         |    2 +-
 scrub/xfs_scrub.c   |    2 +-
 spaceman/file.c     |    2 +-
 spaceman/freesp.c   |    2 +-
 spaceman/info.c     |    2 +-
 spaceman/init.c     |    2 +-
 spaceman/prealloc.c |    2 +-
 spaceman/trim.c     |    2 +-
 42 files changed, 100 insertions(+), 100 deletions(-)
 delete mode 100644 include/path.h
 create mode 100644 libfrog/paths.h


diff --git a/fsr/xfs_fsr.c b/fsr/xfs_fsr.c
index 1fd89eb8..a53eb924 100644
--- a/fsr/xfs_fsr.c
+++ b/fsr/xfs_fsr.c
@@ -10,7 +10,7 @@
 #include "jdm.h"
 #include "xfs_bmap_btree.h"
 #include "xfs_attr_sf.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "libfrog/fsgeom.h"
 #include "libfrog/bulkstat.h"
 
diff --git a/growfs/xfs_growfs.c b/growfs/xfs_growfs.c
index a3fe74ae..eab15984 100644
--- a/growfs/xfs_growfs.c
+++ b/growfs/xfs_growfs.c
@@ -5,7 +5,7 @@
  */
 
 #include "libxfs.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "libfrog/fsgeom.h"
 
 static void
diff --git a/include/Makefile b/include/Makefile
index 2a00dea9..fc90bc48 100644
--- a/include/Makefile
+++ b/include/Makefile
@@ -28,7 +28,6 @@ LIBHFILES = libxfs.h \
 	xfs_trans.h \
 	command.h \
 	input.h \
-	path.h \
 	project.h \
 	platform_defs.h
 
diff --git a/include/path.h b/include/path.h
deleted file mode 100644
index 2d6c3c53..00000000
--- a/include/path.h
+++ /dev/null
@@ -1,61 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * Copyright (c) 2005 Silicon Graphics, Inc.
- * All Rights Reserved.
- */
-#ifndef __PATH_H__
-#define __PATH_H__
-
-#include "platform_defs.h"
-
-/*
- * XFS Filesystem Paths
- *
- * Utility routines for iterating and searching through the list
- * of known mounted filesystems and project paths.
- */
-
-#define FS_MOUNT_POINT	(1<<0)
-#define FS_PROJECT_PATH	(1<<1)
-#define FS_FOREIGN	(1<<2)
-
-typedef struct fs_path {
-	char		*fs_name;	/* Data device for filesystem 	*/
-	dev_t		fs_datadev;
-	char		*fs_log;	/* External log device, if any	*/
-	dev_t		fs_logdev;
-	char		*fs_rt;		/* Realtime device, if any	*/
-	dev_t		fs_rtdev;
-	char		*fs_dir;	/* Directory / mount point	*/
-	uint		fs_flags;	/* FS_{MOUNT_POINT,PROJECT_PATH}*/
-	uint		fs_prid;	/* Project ID for tree root	*/
-} fs_path_t;
-
-extern int fs_count;		/* number of entries in fs table */
-extern int xfs_fs_count;	/* number of xfs entries in fs table */
-extern fs_path_t *fs_table;	/* array of entries in fs table  */
-extern fs_path_t *fs_path;	/* current entry in the fs table */
-extern char *mtab_file;
-
-extern void fs_table_initialise(int, char *[], int, char *[]);
-extern void fs_table_destroy(void);
-
-extern void fs_table_insert_project_path(char *__dir, uint __projid);
-
-
-extern fs_path_t *fs_table_lookup(const char *__dir, uint __flags);
-extern fs_path_t *fs_table_lookup_mount(const char *__dir);
-extern fs_path_t *fs_table_lookup_blkdev(const char *bdev);
-
-typedef struct fs_cursor {
-	uint		count;		/* total count of mount entries	*/
-	uint		index;		/* current position in table	*/
-	uint		flags;		/* iterator flags: mounts/trees */
-	fs_path_t	*table;		/* local/global table pointer	*/
-	fs_path_t	local;		/* space for single-entry table	*/
-} fs_cursor_t;
-
-extern void fs_cursor_initialise(char *__dir, uint __flags, fs_cursor_t *__cp);
-extern fs_path_t *fs_cursor_next_entry(fs_cursor_t *__cp);
-
-#endif	/* __PATH_H__ */
diff --git a/io/cowextsize.c b/io/cowextsize.c
index 029605af..da5c6680 100644
--- a/io/cowextsize.c
+++ b/io/cowextsize.c
@@ -14,7 +14,7 @@
 #include "init.h"
 #include "io.h"
 #include "input.h"
-#include "path.h"
+#include "libfrog/paths.h"
 
 static cmdinfo_t cowextsize_cmd;
 static long cowextsize;
diff --git a/io/encrypt.c b/io/encrypt.c
index 8db35259..7a0b2465 100644
--- a/io/encrypt.c
+++ b/io/encrypt.c
@@ -7,7 +7,7 @@
 #include "platform_defs.h"
 #include "command.h"
 #include "init.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "io.h"
 
 #ifndef ARRAY_SIZE
diff --git a/io/fsmap.c b/io/fsmap.c
index e91ffc36..12ec1e44 100644
--- a/io/fsmap.c
+++ b/io/fsmap.c
@@ -6,7 +6,7 @@
 #include "platform_defs.h"
 #include "command.h"
 #include "init.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "io.h"
 #include "input.h"
 #include "libfrog/fsgeom.h"
diff --git a/io/io.h b/io/io.h
index 0848ab98..00dff2b7 100644
--- a/io/io.h
+++ b/io/io.h
@@ -5,7 +5,7 @@
  */
 
 #include "xfs.h"
-#include "path.h"
+#include "libfrog/paths.h"
 
 /*
  * Read/write patterns (default is always "forward")
diff --git a/io/label.c b/io/label.c
index 72e07964..890ddde4 100644
--- a/io/label.c
+++ b/io/label.c
@@ -6,7 +6,7 @@
 #include <sys/ioctl.h>
 #include "platform_defs.h"
 #include "libxfs.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "command.h"
 #include "init.h"
 #include "io.h"
diff --git a/io/parent.c b/io/parent.c
index 18bbf9b8..a78b4588 100644
--- a/io/parent.c
+++ b/io/parent.c
@@ -6,7 +6,7 @@
 
 #include "command.h"
 #include "input.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "parent.h"
 #include "handle.h"
 #include "jdm.h"
diff --git a/io/scrub.c b/io/scrub.c
index 052497be..9d1c62b5 100644
--- a/io/scrub.c
+++ b/io/scrub.c
@@ -9,7 +9,7 @@
 #include "command.h"
 #include "input.h"
 #include "init.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "io.h"
 
 static struct cmdinfo scrub_cmd;
diff --git a/libfrog/Makefile b/libfrog/Makefile
index 715589c7..f8f7de68 100644
--- a/libfrog/Makefile
+++ b/libfrog/Makefile
@@ -37,6 +37,7 @@ crc32cselftest.h \
 crc32defs.h \
 crc32table.h \
 fsgeom.h \
+paths.h \
 ptvar.h \
 radix-tree.h \
 topology.h \
diff --git a/libfrog/paths.c b/libfrog/paths.c
index 6e266654..f0f4548e 100644
--- a/libfrog/paths.c
+++ b/libfrog/paths.c
@@ -12,7 +12,7 @@
 #include <unistd.h>
 #include <sys/types.h>
 #include <sys/stat.h>
-#include "path.h"
+#include "paths.h"
 #include "input.h"
 #include "project.h"
 #include <limits.h>
diff --git a/libfrog/paths.h b/libfrog/paths.h
new file mode 100644
index 00000000..c08e3733
--- /dev/null
+++ b/libfrog/paths.h
@@ -0,0 +1,61 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2005 Silicon Graphics, Inc.
+ * All Rights Reserved.
+ */
+#ifndef __LIBFROG_PATH_H__
+#define __LIBFROG_PATH_H__
+
+#include "platform_defs.h"
+
+/*
+ * XFS Filesystem Paths
+ *
+ * Utility routines for iterating and searching through the list
+ * of known mounted filesystems and project paths.
+ */
+
+#define FS_MOUNT_POINT	(1<<0)
+#define FS_PROJECT_PATH	(1<<1)
+#define FS_FOREIGN	(1<<2)
+
+typedef struct fs_path {
+	char		*fs_name;	/* Data device for filesystem 	*/
+	dev_t		fs_datadev;
+	char		*fs_log;	/* External log device, if any	*/
+	dev_t		fs_logdev;
+	char		*fs_rt;		/* Realtime device, if any	*/
+	dev_t		fs_rtdev;
+	char		*fs_dir;	/* Directory / mount point	*/
+	uint		fs_flags;	/* FS_{MOUNT_POINT,PROJECT_PATH}*/
+	uint		fs_prid;	/* Project ID for tree root	*/
+} fs_path_t;
+
+extern int fs_count;		/* number of entries in fs table */
+extern int xfs_fs_count;	/* number of xfs entries in fs table */
+extern fs_path_t *fs_table;	/* array of entries in fs table  */
+extern fs_path_t *fs_path;	/* current entry in the fs table */
+extern char *mtab_file;
+
+extern void fs_table_initialise(int, char *[], int, char *[]);
+extern void fs_table_destroy(void);
+
+extern void fs_table_insert_project_path(char *__dir, uint __projid);
+
+
+extern fs_path_t *fs_table_lookup(const char *__dir, uint __flags);
+extern fs_path_t *fs_table_lookup_mount(const char *__dir);
+extern fs_path_t *fs_table_lookup_blkdev(const char *bdev);
+
+typedef struct fs_cursor {
+	uint		count;		/* total count of mount entries	*/
+	uint		index;		/* current position in table	*/
+	uint		flags;		/* iterator flags: mounts/trees */
+	fs_path_t	*table;		/* local/global table pointer	*/
+	fs_path_t	local;		/* space for single-entry table	*/
+} fs_cursor_t;
+
+extern void fs_cursor_initialise(char *__dir, uint __flags, fs_cursor_t *__cp);
+extern fs_path_t *fs_cursor_next_entry(fs_cursor_t *__cp);
+
+#endif	/* __LIBFROG_PATH_H__ */
diff --git a/quota/init.c b/quota/init.c
index 8244e38d..94258275 100644
--- a/quota/init.c
+++ b/quota/init.c
@@ -4,7 +4,7 @@
  * All Rights Reserved.
  */
 
-#include "path.h"
+#include "libfrog/paths.h"
 #include "command.h"
 #include "input.h"
 #include "init.h"
diff --git a/quota/quota.h b/quota/quota.h
index b7f259e8..5db0a741 100644
--- a/quota/quota.h
+++ b/quota/quota.h
@@ -5,7 +5,7 @@
  */
 
 #include "xqm.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "project.h"
 #include <stdbool.h>
 
diff --git a/scrub/common.c b/scrub/common.c
index 1cd2b7ba..7db47044 100644
--- a/scrub/common.c
+++ b/scrub/common.c
@@ -8,7 +8,7 @@
 #include <sys/statvfs.h>
 #include <syslog.h>
 #include "platform_defs.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "xfs_scrub.h"
 #include "common.h"
 #include "progress.h"
diff --git a/scrub/disk.c b/scrub/disk.c
index dd109533..91e13140 100644
--- a/scrub/disk.c
+++ b/scrub/disk.c
@@ -18,7 +18,7 @@
 #endif
 #include "platform_defs.h"
 #include "libfrog.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "xfs_scrub.h"
 #include "common.h"
 #include "disk.h"
diff --git a/scrub/filemap.c b/scrub/filemap.c
index dc8f4881..bdc6d8f9 100644
--- a/scrub/filemap.c
+++ b/scrub/filemap.c
@@ -10,7 +10,7 @@
 #include <string.h>
 #include <sys/types.h>
 #include <sys/statvfs.h>
-#include "path.h"
+#include "libfrog/paths.h"
 #include "xfs_scrub.h"
 #include "common.h"
 #include "filemap.h"
diff --git a/scrub/fscounters.c b/scrub/fscounters.c
index 9635c44f..8e4b3467 100644
--- a/scrub/fscounters.c
+++ b/scrub/fscounters.c
@@ -10,7 +10,7 @@
 #include "platform_defs.h"
 #include "xfs_arch.h"
 #include "xfs_format.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "libfrog/workqueue.h"
 #include "xfs_scrub.h"
 #include "common.h"
diff --git a/scrub/inodes.c b/scrub/inodes.c
index 19923de5..580a845e 100644
--- a/scrub/inodes.c
+++ b/scrub/inodes.c
@@ -12,7 +12,7 @@
 #include "xfs_arch.h"
 #include "xfs_format.h"
 #include "handle.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "libfrog/workqueue.h"
 #include "xfs_scrub.h"
 #include "common.h"
diff --git a/scrub/phase1.c b/scrub/phase1.c
index d0e77cab..d123c419 100644
--- a/scrub/phase1.c
+++ b/scrub/phase1.c
@@ -16,7 +16,7 @@
 #include "libfrog.h"
 #include "libfrog/workqueue.h"
 #include "input.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "handle.h"
 #include "bitops.h"
 #include "libfrog/avl64.h"
diff --git a/scrub/phase2.c b/scrub/phase2.c
index baec11dd..f064c83d 100644
--- a/scrub/phase2.c
+++ b/scrub/phase2.c
@@ -8,7 +8,7 @@
 #include <sys/types.h>
 #include <sys/statvfs.h>
 #include "list.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "libfrog/workqueue.h"
 #include "xfs_scrub.h"
 #include "common.h"
diff --git a/scrub/phase3.c b/scrub/phase3.c
index 64a499c3..5eff7907 100644
--- a/scrub/phase3.c
+++ b/scrub/phase3.c
@@ -8,7 +8,7 @@
 #include <sys/types.h>
 #include <sys/statvfs.h>
 #include "list.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "libfrog/workqueue.h"
 #include "xfs_scrub.h"
 #include "common.h"
diff --git a/scrub/phase4.c b/scrub/phase4.c
index 14074835..589777f6 100644
--- a/scrub/phase4.c
+++ b/scrub/phase4.c
@@ -9,7 +9,7 @@
 #include <sys/types.h>
 #include <sys/statvfs.h>
 #include "list.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "libfrog/workqueue.h"
 #include "xfs_scrub.h"
 #include "common.h"
diff --git a/scrub/phase5.c b/scrub/phase5.c
index ab015821..3ff34251 100644
--- a/scrub/phase5.c
+++ b/scrub/phase5.c
@@ -14,7 +14,7 @@
 #include <linux/fs.h>
 #include "handle.h"
 #include "list.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "libfrog/workqueue.h"
 #include "xfs_scrub.h"
 #include "common.h"
diff --git a/scrub/phase6.c b/scrub/phase6.c
index d0e62cea..506e75d2 100644
--- a/scrub/phase6.c
+++ b/scrub/phase6.c
@@ -8,7 +8,7 @@
 #include <dirent.h>
 #include <sys/statvfs.h>
 #include "handle.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "libfrog/workqueue.h"
 #include "xfs_scrub.h"
 #include "common.h"
diff --git a/scrub/phase7.c b/scrub/phase7.c
index 8ac1da07..f82b60d6 100644
--- a/scrub/phase7.c
+++ b/scrub/phase7.c
@@ -7,7 +7,7 @@
 #include <stdint.h>
 #include <stdlib.h>
 #include <sys/statvfs.h>
-#include "path.h"
+#include "libfrog/paths.h"
 #include "libfrog/ptvar.h"
 #include "xfs_scrub.h"
 #include "common.h"
diff --git a/scrub/progress.c b/scrub/progress.c
index d0afe90a..c9a9d286 100644
--- a/scrub/progress.c
+++ b/scrub/progress.c
@@ -8,7 +8,7 @@
 #include <pthread.h>
 #include <sys/statvfs.h>
 #include <time.h>
-#include "path.h"
+#include "libfrog/paths.h"
 #include "disk.h"
 #include "read_verify.h"
 #include "xfs_scrub.h"
diff --git a/scrub/read_verify.c b/scrub/read_verify.c
index 828f6be6..2152d167 100644
--- a/scrub/read_verify.c
+++ b/scrub/read_verify.c
@@ -9,7 +9,7 @@
 #include <sys/statvfs.h>
 #include "libfrog/ptvar.h"
 #include "libfrog/workqueue.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "xfs_scrub.h"
 #include "common.h"
 #include "counter.h"
diff --git a/scrub/repair.c b/scrub/repair.c
index 45450d8c..0e5afb20 100644
--- a/scrub/repair.c
+++ b/scrub/repair.c
@@ -9,7 +9,7 @@
 #include <sys/types.h>
 #include <sys/statvfs.h>
 #include "list.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "xfs_scrub.h"
 #include "common.h"
 #include "scrub.h"
diff --git a/scrub/scrub.c b/scrub/scrub.c
index 136ed529..ac67f8ec 100644
--- a/scrub/scrub.c
+++ b/scrub/scrub.c
@@ -11,7 +11,7 @@
 #include <sys/types.h>
 #include <sys/statvfs.h>
 #include "list.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "xfs_scrub.h"
 #include "common.h"
 #include "progress.h"
diff --git a/scrub/spacemap.c b/scrub/spacemap.c
index 774efbaa..a7876478 100644
--- a/scrub/spacemap.c
+++ b/scrub/spacemap.c
@@ -9,7 +9,7 @@
 #include <pthread.h>
 #include <sys/statvfs.h>
 #include "libfrog/workqueue.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "xfs_scrub.h"
 #include "common.h"
 #include "spacemap.h"
diff --git a/scrub/unicrash.c b/scrub/unicrash.c
index 824b10f0..17e8f34f 100644
--- a/scrub/unicrash.c
+++ b/scrub/unicrash.c
@@ -13,7 +13,7 @@
 #include <unicode/ustring.h>
 #include <unicode/unorm2.h>
 #include <unicode/uspoof.h>
-#include "path.h"
+#include "libfrog/paths.h"
 #include "xfs_scrub.h"
 #include "common.h"
 #include "unicrash.h"
diff --git a/scrub/vfs.c b/scrub/vfs.c
index 7d79e7f7..b5d54837 100644
--- a/scrub/vfs.c
+++ b/scrub/vfs.c
@@ -9,7 +9,7 @@
 #include <sys/types.h>
 #include <sys/statvfs.h>
 #include "handle.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "libfrog/workqueue.h"
 #include "xfs_scrub.h"
 #include "common.h"
diff --git a/scrub/xfs_scrub.c b/scrub/xfs_scrub.c
index 71fc274f..05478093 100644
--- a/scrub/xfs_scrub.c
+++ b/scrub/xfs_scrub.c
@@ -12,7 +12,7 @@
 #include <sys/statvfs.h>
 #include "platform_defs.h"
 #include "input.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "xfs_scrub.h"
 #include "common.h"
 #include "unicrash.h"
diff --git a/spaceman/file.c b/spaceman/file.c
index 34e5f005..f96a29e5 100644
--- a/spaceman/file.c
+++ b/spaceman/file.c
@@ -10,7 +10,7 @@
 #include "command.h"
 #include "input.h"
 #include "init.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "space.h"
 #include "libfrog/fsgeom.h"
 
diff --git a/spaceman/freesp.c b/spaceman/freesp.c
index 11d0aafb..034f2340 100644
--- a/spaceman/freesp.c
+++ b/spaceman/freesp.c
@@ -10,7 +10,7 @@
 #include <linux/fiemap.h>
 #include "command.h"
 #include "init.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "space.h"
 #include "input.h"
 
diff --git a/spaceman/info.c b/spaceman/info.c
index 80442e9a..f563cf1e 100644
--- a/spaceman/info.c
+++ b/spaceman/info.c
@@ -6,7 +6,7 @@
 #include "libxfs.h"
 #include "command.h"
 #include "init.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "space.h"
 #include "libfrog/fsgeom.h"
 
diff --git a/spaceman/init.c b/spaceman/init.c
index c845f920..fa0397ab 100644
--- a/spaceman/init.c
+++ b/spaceman/init.c
@@ -8,7 +8,7 @@
 #include "command.h"
 #include "input.h"
 #include "init.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "space.h"
 
 char	*progname;
diff --git a/spaceman/prealloc.c b/spaceman/prealloc.c
index 85dfc9ee..b223010c 100644
--- a/spaceman/prealloc.c
+++ b/spaceman/prealloc.c
@@ -8,7 +8,7 @@
 #include "command.h"
 #include "input.h"
 #include "init.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "space.h"
 
 static cmdinfo_t prealloc_cmd;
diff --git a/spaceman/trim.c b/spaceman/trim.c
index 88c75a57..b23e2bf9 100644
--- a/spaceman/trim.c
+++ b/spaceman/trim.c
@@ -7,7 +7,7 @@
 #include "libxfs.h"
 #include "command.h"
 #include "init.h"
-#include "path.h"
+#include "libfrog/paths.h"
 #include "space.h"
 #include "input.h"
 


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 11/12] libfrog: move workqueue.h to libfrog/
  2019-09-04  4:35 [PATCH 00/12] libfrog: move header files Darrick J. Wong
                   ` (9 preceding siblings ...)
  2019-09-04  4:36 ` [PATCH 10/12] libfrog: move path.h " Darrick J. Wong
@ 2019-09-04  4:36 ` Darrick J. Wong
  2019-09-04 23:40   ` Dave Chinner
  2019-09-04  4:36 ` [PATCH 12/12] libfrog: move libfrog.h to libfrog/util.h Darrick J. Wong
  11 siblings, 1 reply; 25+ messages in thread
From: Darrick J. Wong @ 2019-09-04  4:36 UTC (permalink / raw)
  To: sandeen, darrick.wong; +Cc: linux-xfs

From: Darrick J. Wong <darrick.wong@oracle.com>

Move this header to libfrog since the code is there already.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
---
 include/Makefile   |    1 -
 include/input.h    |    2 +-
 include/project.h  |   39 ---------------------------------------
 libfrog/Makefile   |    1 +
 libfrog/paths.c    |    2 +-
 libfrog/projects.c |    2 +-
 libfrog/projects.h |   39 +++++++++++++++++++++++++++++++++++++++
 quota/quota.h      |    2 +-
 8 files changed, 44 insertions(+), 44 deletions(-)
 delete mode 100644 include/project.h
 create mode 100644 libfrog/projects.h


diff --git a/include/Makefile b/include/Makefile
index fc90bc48..a80867e4 100644
--- a/include/Makefile
+++ b/include/Makefile
@@ -28,7 +28,6 @@ LIBHFILES = libxfs.h \
 	xfs_trans.h \
 	command.h \
 	input.h \
-	project.h \
 	platform_defs.h
 
 HFILES = handle.h \
diff --git a/include/input.h b/include/input.h
index 57fdd343..3c3fa116 100644
--- a/include/input.h
+++ b/include/input.h
@@ -9,7 +9,7 @@
 #include <pwd.h>
 #include <grp.h>
 #include <sys/types.h>
-#include "project.h"
+#include "libfrog/projects.h"
 #include "libfrog/convert.h"
 #include <stdbool.h>
 
diff --git a/include/project.h b/include/project.h
deleted file mode 100644
index 3577dadb..00000000
--- a/include/project.h
+++ /dev/null
@@ -1,39 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * Copyright (c) 2005 Silicon Graphics, Inc.
- * All Rights Reserved.
- */
-#ifndef __PROJECT_H__
-#define __PROJECT_H__
-
-#include "platform_defs.h"
-#include "xfs.h"
-
-extern int setprojid(const char *__name, int __fd, prid_t __id);
-extern int getprojid(const char *__name, int __fd, prid_t *__id);
-
-typedef struct fs_project {
-	prid_t		pr_prid;	/* project identifier */
-	char		*pr_name;	/* project name */
-} fs_project_t;
-
-extern void setprent(void);
-extern void endprent(void);
-extern fs_project_t *getprent(void);
-extern fs_project_t *getprnam(char *__name);
-extern fs_project_t *getprprid(prid_t __id);
-
-typedef struct fs_project_path {
-	prid_t		pp_prid;	/* project identifier */
-	char		*pp_pathname;	/* pathname to root of project tree */
-} fs_project_path_t;
-
-extern void setprpathent(void);
-extern void endprpathent(void);
-extern fs_project_path_t *getprpathent(void);
-
-extern void setprfiles(void);
-extern char *projid_file;
-extern char *projects_file;
-
-#endif	/* __PROJECT_H__ */
diff --git a/libfrog/Makefile b/libfrog/Makefile
index f8f7de68..25b5a03c 100644
--- a/libfrog/Makefile
+++ b/libfrog/Makefile
@@ -38,6 +38,7 @@ crc32defs.h \
 crc32table.h \
 fsgeom.h \
 paths.h \
+projects.h \
 ptvar.h \
 radix-tree.h \
 topology.h \
diff --git a/libfrog/paths.c b/libfrog/paths.c
index f0f4548e..32737223 100644
--- a/libfrog/paths.c
+++ b/libfrog/paths.c
@@ -14,7 +14,7 @@
 #include <sys/stat.h>
 #include "paths.h"
 #include "input.h"
-#include "project.h"
+#include "projects.h"
 #include <limits.h>
 
 extern char *progname;
diff --git a/libfrog/projects.c b/libfrog/projects.c
index 91bc78f2..dbde9702 100644
--- a/libfrog/projects.c
+++ b/libfrog/projects.c
@@ -7,7 +7,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include "project.h"
+#include "projects.h"
 
 #define PROJID		"/etc/projid"
 #define PROJECT_PATHS	"/etc/projects"
diff --git a/libfrog/projects.h b/libfrog/projects.h
new file mode 100644
index 00000000..77919474
--- /dev/null
+++ b/libfrog/projects.h
@@ -0,0 +1,39 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2005 Silicon Graphics, Inc.
+ * All Rights Reserved.
+ */
+#ifndef __LIBFROG_PROJECTS_H__
+#define __LIBFROG_PROJECTS_H__
+
+#include "platform_defs.h"
+#include "xfs.h"
+
+extern int setprojid(const char *__name, int __fd, prid_t __id);
+extern int getprojid(const char *__name, int __fd, prid_t *__id);
+
+typedef struct fs_project {
+	prid_t		pr_prid;	/* project identifier */
+	char		*pr_name;	/* project name */
+} fs_project_t;
+
+extern void setprent(void);
+extern void endprent(void);
+extern fs_project_t *getprent(void);
+extern fs_project_t *getprnam(char *__name);
+extern fs_project_t *getprprid(prid_t __id);
+
+typedef struct fs_project_path {
+	prid_t		pp_prid;	/* project identifier */
+	char		*pp_pathname;	/* pathname to root of project tree */
+} fs_project_path_t;
+
+extern void setprpathent(void);
+extern void endprpathent(void);
+extern fs_project_path_t *getprpathent(void);
+
+extern void setprfiles(void);
+extern char *projid_file;
+extern char *projects_file;
+
+#endif	/* __LIBFROG_PROJECTS_H__ */
diff --git a/quota/quota.h b/quota/quota.h
index 5db0a741..025d8877 100644
--- a/quota/quota.h
+++ b/quota/quota.h
@@ -6,7 +6,7 @@
 
 #include "xqm.h"
 #include "libfrog/paths.h"
-#include "project.h"
+#include "libfrog/projects.h"
 #include <stdbool.h>
 
 /*


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* [PATCH 12/12] libfrog: move libfrog.h to libfrog/util.h
  2019-09-04  4:35 [PATCH 00/12] libfrog: move header files Darrick J. Wong
                   ` (10 preceding siblings ...)
  2019-09-04  4:36 ` [PATCH 11/12] libfrog: move workqueue.h " Darrick J. Wong
@ 2019-09-04  4:36 ` Darrick J. Wong
  2019-09-04 23:43   ` Dave Chinner
  11 siblings, 1 reply; 25+ messages in thread
From: Darrick J. Wong @ 2019-09-04  4:36 UTC (permalink / raw)
  To: sandeen, darrick.wong; +Cc: linux-xfs

From: Darrick J. Wong <darrick.wong@oracle.com>

Move this header to libfrog since the code is there already.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
---
 include/libfrog.h |   11 -----------
 libfrog/fsgeom.c  |    2 +-
 libfrog/util.c    |    2 +-
 libfrog/util.h    |   11 +++++++++++
 mkfs/xfs_mkfs.c   |    2 +-
 repair/sb.c       |    2 +-
 scrub/disk.c      |    2 +-
 scrub/phase1.c    |    2 +-
 8 files changed, 17 insertions(+), 17 deletions(-)
 delete mode 100644 include/libfrog.h
 create mode 100644 libfrog/util.h


diff --git a/include/libfrog.h b/include/libfrog.h
deleted file mode 100644
index d33f0146..00000000
--- a/include/libfrog.h
+++ /dev/null
@@ -1,11 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * Copyright (c) 2000-2005 Silicon Graphics, Inc.
- * All Rights Reserved.
- */
-#ifndef __LIBFROG_UTIL_H_
-#define __LIBFROG_UTIL_H_
-
-unsigned int	log2_roundup(unsigned int i);
-
-#endif /* __LIBFROG_UTIL_H_ */
diff --git a/libfrog/fsgeom.c b/libfrog/fsgeom.c
index 9a428bf6..bc872834 100644
--- a/libfrog/fsgeom.c
+++ b/libfrog/fsgeom.c
@@ -4,7 +4,7 @@
  */
 #include "libxfs.h"
 #include "fsgeom.h"
-#include "libfrog.h"
+#include "util.h"
 
 void
 xfs_report_geom(
diff --git a/libfrog/util.c b/libfrog/util.c
index ff935184..8fb10cf8 100644
--- a/libfrog/util.c
+++ b/libfrog/util.c
@@ -4,7 +4,7 @@
  * All Rights Reserved.
  */
 #include "platform_defs.h"
-#include "libfrog.h"
+#include "util.h"
 
 /*
  * libfrog is a collection of miscellaneous userspace utilities.
diff --git a/libfrog/util.h b/libfrog/util.h
new file mode 100644
index 00000000..1b97881b
--- /dev/null
+++ b/libfrog/util.h
@@ -0,0 +1,11 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (c) 2000-2005 Silicon Graphics, Inc.
+ * All Rights Reserved.
+ */
+#ifndef __LIBFROG_UTIL_H__
+#define __LIBFROG_UTIL_H__
+
+unsigned int	log2_roundup(unsigned int i);
+
+#endif /* __LIBFROG_UTIL_H__ */
diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c
index 50913866..6254fd42 100644
--- a/mkfs/xfs_mkfs.c
+++ b/mkfs/xfs_mkfs.c
@@ -3,7 +3,7 @@
  * Copyright (c) 2000-2005 Silicon Graphics, Inc.
  * All Rights Reserved.
  */
-#include "libfrog.h"
+#include "libfrog/util.h"
 #include "libxfs.h"
 #include <ctype.h>
 #include "xfs_multidisk.h"
diff --git a/repair/sb.c b/repair/sb.c
index 3955dfba..91a36dd3 100644
--- a/repair/sb.c
+++ b/repair/sb.c
@@ -3,7 +3,7 @@
  * Copyright (c) 2000-2003,2005 Silicon Graphics, Inc.
  * All Rights Reserved.
  */
-#include "libfrog.h"
+#include "libfrog/util.h"
 #include "libxfs.h"
 #include "libxcmd.h"
 #include "libxlog.h"
diff --git a/scrub/disk.c b/scrub/disk.c
index 91e13140..dcdd5ba8 100644
--- a/scrub/disk.c
+++ b/scrub/disk.c
@@ -17,7 +17,7 @@
 # include <linux/hdreg.h>
 #endif
 #include "platform_defs.h"
-#include "libfrog.h"
+#include "libfrog/util.h"
 #include "libfrog/paths.h"
 #include "xfs_scrub.h"
 #include "common.h"
diff --git a/scrub/phase1.c b/scrub/phase1.c
index d123c419..3211a488 100644
--- a/scrub/phase1.c
+++ b/scrub/phase1.c
@@ -13,7 +13,7 @@
 #include <dirent.h>
 #include <stdint.h>
 #include <pthread.h>
-#include "libfrog.h"
+#include "libfrog/util.h"
 #include "libfrog/workqueue.h"
 #include "input.h"
 #include "libfrog/paths.h"


^ permalink raw reply related	[flat|nested] 25+ messages in thread

* Re: [PATCH 01/12] libxfs: move topology declarations into separate header
  2019-09-04  4:35 ` [PATCH 01/12] libxfs: move topology declarations into separate header Darrick J. Wong
@ 2019-09-04 23:24   ` Dave Chinner
  0 siblings, 0 replies; 25+ messages in thread
From: Dave Chinner @ 2019-09-04 23:24 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: sandeen, linux-xfs

On Tue, Sep 03, 2019 at 09:35:50PM -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 -------------------------------
>  libfrog/Makefile   |    3 ++-
>  libfrog/topology.c |    1 +
>  libfrog/topology.h |   39 +++++++++++++++++++++++++++++++++++++++
>  mkfs/xfs_mkfs.c    |    2 +-
>  repair/sb.c        |    1 +
>  6 files changed, 44 insertions(+), 33 deletions(-)
>  create mode 100644 libfrog/topology.h

*nod*

Reviewed-by: Dave Chinner <dchinner@redhat.com>

-- 
Dave Chinner
david@fromorbit.com

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 02/12] libfrog: move avl64.h to libfrog/
  2019-09-04  4:35 ` [PATCH 02/12] libfrog: move avl64.h to libfrog/ Darrick J. Wong
@ 2019-09-04 23:25   ` Dave Chinner
  0 siblings, 0 replies; 25+ messages in thread
From: Dave Chinner @ 2019-09-04 23:25 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: sandeen, linux-xfs

On Tue, Sep 03, 2019 at 09:35:56PM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
> 
> Move this header to libfrog since the code is there already.
> 
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> ---
>  include/avl64.h     |  127 ---------------------------------------------------
>  libfrog/Makefile    |    1 
>  libfrog/avl64.h     |  127 +++++++++++++++++++++++++++++++++++++++++++++++++++
>  repair/incore_ext.c |    2 -
>  repair/xfs_repair.c |    2 -
>  scrub/phase1.c      |    2 -
>  6 files changed, 131 insertions(+), 130 deletions(-)
>  delete mode 100644 include/avl64.h
>  create mode 100644 libfrog/avl64.h

looks fine.

Reviewed-by: Dave Chinner <dchinner@redhat.com>
-- 
Dave Chinner
david@fromorbit.com

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 03/12] libfrog: move bitmap.h to libfrog/
  2019-09-04  4:36 ` [PATCH 03/12] libfrog: move bitmap.h " Darrick J. Wong
@ 2019-09-04 23:28   ` Dave Chinner
  0 siblings, 0 replies; 25+ messages in thread
From: Dave Chinner @ 2019-09-04 23:28 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: sandeen, linux-xfs

On Tue, Sep 03, 2019 at 09:36:02PM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
> 
> Move this header to libfrog since the code is there already.
> 
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> ---
>  include/bitmap.h |   24 ------------------------
>  libfrog/Makefile |    1 +
>  libfrog/bitmap.h |   24 ++++++++++++++++++++++++
>  repair/rmap.c    |    2 +-
>  scrub/phase6.c   |    2 +-
>  5 files changed, 27 insertions(+), 26 deletions(-)
>  delete mode 100644 include/bitmap.h
>  create mode 100644 libfrog/bitmap.h

looks good.

FWIW, given these are file moves, you could tell git to generate
move diffs rather than long form entire-file-changed diffs. The
shortform git diffs are a lot easier to review :P

Reviewed-by: Dave Chinner <dchinner@redhat.com>
-- 
Dave Chinner
david@fromorbit.com

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 04/12] libfrog: move convert.h to libfrog/
  2019-09-04  4:36 ` [PATCH 04/12] libfrog: move convert.h " Darrick J. Wong
@ 2019-09-04 23:28   ` Dave Chinner
  0 siblings, 0 replies; 25+ messages in thread
From: Dave Chinner @ 2019-09-04 23:28 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: sandeen, linux-xfs

On Tue, Sep 03, 2019 at 09:36:09PM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
> 
> Move this header to libfrog since the code is there already.
> 
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> ---
>  include/convert.h |   25 -------------------------
>  include/input.h   |    2 +-
>  libfrog/Makefile  |    1 +
>  libfrog/convert.h |   25 +++++++++++++++++++++++++
>  4 files changed, 27 insertions(+), 26 deletions(-)
>  delete mode 100644 include/convert.h
>  create mode 100644 libfrog/convert.h

looks good.

Reviewed-by: Dave Chinner <dchinner@redhat.com>
-- 
Dave Chinner
david@fromorbit.com

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 05/12] libfrog: move fsgeom.h to libfrog/
  2019-09-04  4:36 ` [PATCH 05/12] libfrog: move fsgeom.h " Darrick J. Wong
@ 2019-09-04 23:32   ` Dave Chinner
  0 siblings, 0 replies; 25+ messages in thread
From: Dave Chinner @ 2019-09-04 23:32 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: sandeen, linux-xfs

On Tue, Sep 03, 2019 at 09:36:15PM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
> 
> Move this header to libfrog since the code is there already.
> 
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> ---
>  db/info.c           |    2 +
>  fsr/xfs_fsr.c       |    2 +
>  growfs/xfs_growfs.c |    2 +
>  include/fsgeom.h    |  102 ---------------------------------------------------
>  io/bmap.c           |    2 +
>  io/fsmap.c          |    2 +
>  io/imap.c           |    2 +
>  io/open.c           |    2 +
>  io/stat.c           |    2 +
>  io/swapext.c        |    2 +
>  libfrog/Makefile    |    1 +
>  libfrog/fsgeom.h    |  102 +++++++++++++++++++++++++++++++++++++++++++++++++++
>  mkfs/xfs_mkfs.c     |    2 +
>  quota/free.c        |    2 +
>  quota/quot.c        |    2 +
>  repair/xfs_repair.c |    2 +
>  rtcp/xfs_rtcp.c     |    2 +
>  scrub/inodes.c      |    2 +
>  scrub/phase1.c      |    2 +
>  scrub/xfs_scrub.h   |    2 +
>  spaceman/file.c     |    2 +
>  spaceman/info.c     |    2 +
>  22 files changed, 122 insertions(+), 121 deletions(-)
>  delete mode 100644 include/fsgeom.h
>  create mode 100644 libfrog/fsgeom.h

Looks good. One thing I noticed though:

> diff --git a/libfrog/fsgeom.h b/libfrog/fsgeom.h
> new file mode 100644
> index 00000000..6993dafb
> --- /dev/null
> +++ b/libfrog/fsgeom.h
> @@ -0,0 +1,102 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Copyright (c) 2000-2005 Silicon Graphics, Inc.  All Rights Reserved.

This copyright is largely stale now. AFAICT, there's no original SGI
code in this header file at all. Separate patch with a commit
message explaining the copyright update?

Otherwise looks good.

Reviewed-by: Dave Chinner <dchinner@redhat.com>

-- 
Dave Chinner
david@fromorbit.com

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 06/12] libfrog: move ptvar.h to libfrog/
  2019-09-04  4:36 ` [PATCH 06/12] libfrog: move ptvar.h " Darrick J. Wong
@ 2019-09-04 23:32   ` Dave Chinner
  0 siblings, 0 replies; 25+ messages in thread
From: Dave Chinner @ 2019-09-04 23:32 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: sandeen, linux-xfs

On Tue, Sep 03, 2019 at 09:36:21PM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
> 
> Move this header to libfrog since the code is there already.
> 
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> ---
>  include/ptvar.h     |   18 ------------------
>  libfrog/Makefile    |    1 +
>  libfrog/ptvar.h     |   18 ++++++++++++++++++
>  scrub/counter.c     |    2 +-
>  scrub/phase7.c      |    2 +-
>  scrub/read_verify.c |    2 +-
>  6 files changed, 22 insertions(+), 21 deletions(-)
>  delete mode 100644 include/ptvar.h
>  create mode 100644 libfrog/ptvar.h

Looks good.

Reviewed-by: Dave Chinner <dchinner@redhat.com>

-- 
Dave Chinner
david@fromorbit.com

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 07/12] libfrog: move radix-tree.h to libfrog/
  2019-09-04  4:36 ` [PATCH 07/12] libfrog: move radix-tree.h " Darrick J. Wong
@ 2019-09-04 23:33   ` Dave Chinner
  0 siblings, 0 replies; 25+ messages in thread
From: Dave Chinner @ 2019-09-04 23:33 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: sandeen, linux-xfs

On Tue, Sep 03, 2019 at 09:36:27PM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
> 
> Move this header to libfrog since the code is there already.
> 
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> ---
>  include/Makefile     |    1 -
>  include/libxfs.h     |    2 +-
>  include/radix-tree.h |   63 --------------------------------------------------
>  libfrog/Makefile     |    1 +
>  libfrog/radix-tree.h |   63 ++++++++++++++++++++++++++++++++++++++++++++++++++
>  libxfs/libxfs_priv.h |    2 +-
>  6 files changed, 66 insertions(+), 66 deletions(-)
>  delete mode 100644 include/radix-tree.h
>  create mode 100644 libfrog/radix-tree.h

Looks good.

Reviewed-by: Dave Chinner <dchinner@redhat.com>
-- 
Dave Chinner
david@fromorbit.com

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 08/12] libfrog: move workqueue.h to libfrog/
  2019-09-04  4:36 ` [PATCH 08/12] libfrog: move workqueue.h " Darrick J. Wong
@ 2019-09-04 23:34   ` Dave Chinner
  0 siblings, 0 replies; 25+ messages in thread
From: Dave Chinner @ 2019-09-04 23:34 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: sandeen, linux-xfs

On Tue, Sep 03, 2019 at 09:36:34PM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
> 
> Move this header to libfrog since the code is there already.
> 
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> ---
>  include/workqueue.h |   41 -----------------------------------------
>  libfrog/Makefile    |    3 ++-
>  libfrog/workqueue.h |   41 +++++++++++++++++++++++++++++++++++++++++
>  repair/threads.h    |    2 +-
>  scrub/fscounters.c  |    2 +-
>  scrub/inodes.c      |    2 +-
>  scrub/phase1.c      |    2 +-
>  scrub/phase2.c      |    2 +-
>  scrub/phase3.c      |    2 +-
>  scrub/phase4.c      |    2 +-
>  scrub/phase5.c      |    2 +-
>  scrub/phase6.c      |    2 +-
>  scrub/read_verify.c |    2 +-
>  scrub/spacemap.c    |    2 +-
>  scrub/vfs.c         |    2 +-
>  15 files changed, 55 insertions(+), 54 deletions(-)
>  delete mode 100644 include/workqueue.h
>  create mode 100644 libfrog/workqueue.h

ok.

Reviewed-by: Dave Chinner <dchinner@redhat.com>

> diff --git a/libfrog/workqueue.h b/libfrog/workqueue.h
> new file mode 100644
> index 00000000..a1f3a57c
> --- /dev/null
> +++ b/libfrog/workqueue.h
> @@ -0,0 +1,41 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Copyright (C) 2017 Oracle.  All Rights Reserved.
> + * Author: Darrick J. Wong <darrick.wong@oracle.com>
> + */
> +#ifndef	__LIBFROG_WORKQUEUE_H__
> +#define	__LIBFROG_WORKQUEUE_H__

FWIW, I like that these all have consistent guards now :)

-Dave.

-- 
Dave Chinner
david@fromorbit.com

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 09/12] libfrog: move crc32c.h to libfrog/
  2019-09-04  4:36 ` [PATCH 09/12] libfrog: move crc32c.h " Darrick J. Wong
@ 2019-09-04 23:37   ` Dave Chinner
  0 siblings, 0 replies; 25+ messages in thread
From: Dave Chinner @ 2019-09-04 23:37 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: sandeen, linux-xfs

On Tue, Sep 03, 2019 at 09:36:40PM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
> 
> Move this header to libfrog since the code is there already.
> 
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> ---
>  include/crc32c.h         |   11 -
>  include/crc32cselftest.h |  706 ----------------------------------------------
>  io/crc32cselftest.c      |    4 
>  libfrog/Makefile         |    2 
>  libfrog/crc32c.h         |   11 +
>  libfrog/crc32cselftest.h |  706 ++++++++++++++++++++++++++++++++++++++++++++++
>  libxfs/libxfs_priv.h     |    2 
>  7 files changed, 722 insertions(+), 720 deletions(-)
>  delete mode 100644 include/crc32c.h
>  delete mode 100644 include/crc32cselftest.h
>  create mode 100644 libfrog/crc32c.h
>  create mode 100644 libfrog/crc32cselftest.h

Looks good.

Reviewed-by: Dave Chinner <dchinner@redhat.com>
-- 
Dave Chinner
david@fromorbit.com

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 10/12] libfrog: move path.h to libfrog/
  2019-09-04  4:36 ` [PATCH 10/12] libfrog: move path.h " Darrick J. Wong
@ 2019-09-04 23:39   ` Dave Chinner
  0 siblings, 0 replies; 25+ messages in thread
From: Dave Chinner @ 2019-09-04 23:39 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: sandeen, linux-xfs

On Tue, Sep 03, 2019 at 09:36:47PM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
> 
> Move this header to libfrog since the code is there already.
> 
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> ---
>  fsr/xfs_fsr.c       |    2 +-
>  growfs/xfs_growfs.c |    2 +-
>  include/Makefile    |    1 -
>  include/path.h      |   61 ---------------------------------------------------
>  io/cowextsize.c     |    2 +-
>  io/encrypt.c        |    2 +-
>  io/fsmap.c          |    2 +-
>  io/io.h             |    2 +-
>  io/label.c          |    2 +-
>  io/parent.c         |    2 +-
>  io/scrub.c          |    2 +-
>  libfrog/Makefile    |    1 +
>  libfrog/paths.c     |    2 +-
>  libfrog/paths.h     |   61 +++++++++++++++++++++++++++++++++++++++++++++++++++
>  quota/init.c        |    2 +-
>  quota/quota.h       |    2 +-
>  scrub/common.c      |    2 +-
>  scrub/disk.c        |    2 +-
>  scrub/filemap.c     |    2 +-
>  scrub/fscounters.c  |    2 +-
>  scrub/inodes.c      |    2 +-
>  scrub/phase1.c      |    2 +-
>  scrub/phase2.c      |    2 +-
>  scrub/phase3.c      |    2 +-
>  scrub/phase4.c      |    2 +-
>  scrub/phase5.c      |    2 +-
>  scrub/phase6.c      |    2 +-
>  scrub/phase7.c      |    2 +-
>  scrub/progress.c    |    2 +-
>  scrub/read_verify.c |    2 +-
>  scrub/repair.c      |    2 +-
>  scrub/scrub.c       |    2 +-
>  scrub/spacemap.c    |    2 +-
>  scrub/unicrash.c    |    2 +-
>  scrub/vfs.c         |    2 +-
>  scrub/xfs_scrub.c   |    2 +-
>  spaceman/file.c     |    2 +-
>  spaceman/freesp.c   |    2 +-
>  spaceman/info.c     |    2 +-
>  spaceman/init.c     |    2 +-
>  spaceman/prealloc.c |    2 +-
>  spaceman/trim.c     |    2 +-
>  42 files changed, 100 insertions(+), 100 deletions(-)
>  delete mode 100644 include/path.h
>  create mode 100644 libfrog/paths.h

Looks good.

Reviewed-by: Dave Chinner <dchinner@redhat.com>

-- 
Dave Chinner
david@fromorbit.com

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 11/12] libfrog: move workqueue.h to libfrog/
  2019-09-04  4:36 ` [PATCH 11/12] libfrog: move workqueue.h " Darrick J. Wong
@ 2019-09-04 23:40   ` Dave Chinner
  0 siblings, 0 replies; 25+ messages in thread
From: Dave Chinner @ 2019-09-04 23:40 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: sandeen, linux-xfs

On Tue, Sep 03, 2019 at 09:36:53PM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
> 
> Move this header to libfrog since the code is there already.
> 
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> ---
>  include/Makefile   |    1 -
>  include/input.h    |    2 +-
>  include/project.h  |   39 ---------------------------------------
>  libfrog/Makefile   |    1 +
>  libfrog/paths.c    |    2 +-
>  libfrog/projects.c |    2 +-
>  libfrog/projects.h |   39 +++++++++++++++++++++++++++++++++++++++
>  quota/quota.h      |    2 +-
>  8 files changed, 44 insertions(+), 44 deletions(-)
>  delete mode 100644 include/project.h
>  create mode 100644 libfrog/projects.h

looks good.

Reviewed-by: Dave Chinner <dchinner@redhat.com>

-- 
Dave Chinner
david@fromorbit.com

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH 12/12] libfrog: move libfrog.h to libfrog/util.h
  2019-09-04  4:36 ` [PATCH 12/12] libfrog: move libfrog.h to libfrog/util.h Darrick J. Wong
@ 2019-09-04 23:43   ` Dave Chinner
  0 siblings, 0 replies; 25+ messages in thread
From: Dave Chinner @ 2019-09-04 23:43 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: sandeen, linux-xfs

On Tue, Sep 03, 2019 at 09:36:59PM -0700, Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
> 
> Move this header to libfrog since the code is there already.
> 
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> ---
>  include/libfrog.h |   11 -----------
>  libfrog/fsgeom.c  |    2 +-
>  libfrog/util.c    |    2 +-
>  libfrog/util.h    |   11 +++++++++++
>  mkfs/xfs_mkfs.c   |    2 +-
>  repair/sb.c       |    2 +-
>  scrub/disk.c      |    2 +-
>  scrub/phase1.c    |    2 +-
>  8 files changed, 17 insertions(+), 17 deletions(-)
>  delete mode 100644 include/libfrog.h
>  create mode 100644 libfrog/util.h

Looks good. Nice set of cleanups, Darrick. :)

Reviewed-by: Dave Chinner <dchinner@redhat.com>

-- 
Dave Chinner
david@fromorbit.com

^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2019-09-04 23:43 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-04  4:35 [PATCH 00/12] libfrog: move header files Darrick J. Wong
2019-09-04  4:35 ` [PATCH 01/12] libxfs: move topology declarations into separate header Darrick J. Wong
2019-09-04 23:24   ` Dave Chinner
2019-09-04  4:35 ` [PATCH 02/12] libfrog: move avl64.h to libfrog/ Darrick J. Wong
2019-09-04 23:25   ` Dave Chinner
2019-09-04  4:36 ` [PATCH 03/12] libfrog: move bitmap.h " Darrick J. Wong
2019-09-04 23:28   ` Dave Chinner
2019-09-04  4:36 ` [PATCH 04/12] libfrog: move convert.h " Darrick J. Wong
2019-09-04 23:28   ` Dave Chinner
2019-09-04  4:36 ` [PATCH 05/12] libfrog: move fsgeom.h " Darrick J. Wong
2019-09-04 23:32   ` Dave Chinner
2019-09-04  4:36 ` [PATCH 06/12] libfrog: move ptvar.h " Darrick J. Wong
2019-09-04 23:32   ` Dave Chinner
2019-09-04  4:36 ` [PATCH 07/12] libfrog: move radix-tree.h " Darrick J. Wong
2019-09-04 23:33   ` Dave Chinner
2019-09-04  4:36 ` [PATCH 08/12] libfrog: move workqueue.h " Darrick J. Wong
2019-09-04 23:34   ` Dave Chinner
2019-09-04  4:36 ` [PATCH 09/12] libfrog: move crc32c.h " Darrick J. Wong
2019-09-04 23:37   ` Dave Chinner
2019-09-04  4:36 ` [PATCH 10/12] libfrog: move path.h " Darrick J. Wong
2019-09-04 23:39   ` Dave Chinner
2019-09-04  4:36 ` [PATCH 11/12] libfrog: move workqueue.h " Darrick J. Wong
2019-09-04 23:40   ` Dave Chinner
2019-09-04  4:36 ` [PATCH 12/12] libfrog: move libfrog.h to libfrog/util.h Darrick J. Wong
2019-09-04 23:43   ` Dave Chinner

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.