All of lore.kernel.org
 help / color / mirror / Atom feed
* [Cluster-devel] [PATCH v2 0/8] gfs2-utils: Import linux/gfs2_ondisk.h
@ 2021-04-19 19:11 Andrew Price
  2021-04-19 19:11 ` [Cluster-devel] [PATCH 1/8] " Andrew Price
                   ` (8 more replies)
  0 siblings, 9 replies; 16+ messages in thread
From: Andrew Price @ 2021-04-19 19:11 UTC (permalink / raw)
  To: cluster-devel.redhat.com

v1: https://listman.redhat.com/archives/cluster-devel/2019-April/msg00021.html

My previous attempt at this did a search+replace to satisfy the field types in gfs2_ondisk.h, which was a little OTT. This attempt adds a linux/types.h that gfs2_ondisk.h will pick up instead of the kernel one.

Having our own gfs2_ondisk.h means that we can support new gfs2 features unconditionally and more easily experiment with on-disk changes; we can use the PRI* macros from inttypes.h for consistent string formatting (appease -Wformat) across architectures, and it gets us closer to being able to compile gfs2-utils on non-linux systems.

Andy


Andrew Price (8):
  Import linux/gfs2_ondisk.h
  Remove HAS_UUID conditionals
  Remove GFS2_HAS_LEAF_HINTS conditionals
  Remove GFS2_HAS_DE_RAHEAD/COOKIE conditionals
  Remove GFS2_HAS_RG_SKIP conditionals
  Remove GFS2_HAS_RG_RI_FIELDS conditionals
  Remove GFS2_HAS_LH_V2 conditionals
  Use PRI* when printing gfs2 structures

 configure.ac                   |  25 +-
 gfs2/convert/gfs2_convert.c    |   2 -
 gfs2/edit/extended.c           |  54 ++--
 gfs2/edit/gfs2hex.c            |  45 ++-
 gfs2/edit/hexedit.c            |   2 -
 gfs2/edit/hexedit.h            |   1 -
 gfs2/edit/journal.c            |  15 +-
 gfs2/edit/savemeta.c           |   2 -
 gfs2/fsck/fs_recovery.c        |  10 +-
 gfs2/fsck/initialize.c         |  47 ++-
 gfs2/fsck/lost_n_found.c       |  10 +-
 gfs2/fsck/pass1.c              |   5 +-
 gfs2/fsck/pass2.c              |   2 +-
 gfs2/fsck/rgrepair.c           |  37 +--
 gfs2/include/Makefile.am       |   2 +
 gfs2/include/gfs2_ondisk.h     | 542 +++++++++++++++++++++++++++++++++
 gfs2/include/linux/types.h     |  32 ++
 gfs2/libgfs2/buf.c             |   1 -
 gfs2/libgfs2/device_geometry.c |   1 -
 gfs2/libgfs2/fs_ops.c          |   7 -
 gfs2/libgfs2/gfs1.c            |   2 -
 gfs2/libgfs2/lang.c            |  11 +-
 gfs2/libgfs2/libgfs2.h         |   6 +-
 gfs2/libgfs2/meta.c            |  27 +-
 gfs2/libgfs2/ondisk.c          | 266 ++++++----------
 gfs2/libgfs2/recovery.c        |   2 -
 gfs2/libgfs2/rgrp.c            |   8 -
 gfs2/libgfs2/structures.c      |  24 +-
 gfs2/mkfs/gfs2_mkfs.h          |   1 -
 gfs2/mkfs/main_grow.c          |   1 -
 gfs2/mkfs/main_jadd.c          |  10 +-
 gfs2/mkfs/main_mkfs.c          |  17 +-
 gfs2/tune/super.c              |  17 +-
 33 files changed, 773 insertions(+), 461 deletions(-)
 create mode 100644 gfs2/include/gfs2_ondisk.h
 create mode 100644 gfs2/include/linux/types.h

-- 
2.30.2



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

* [Cluster-devel] [PATCH 1/8] Import linux/gfs2_ondisk.h
  2021-04-19 19:11 [Cluster-devel] [PATCH v2 0/8] gfs2-utils: Import linux/gfs2_ondisk.h Andrew Price
@ 2021-04-19 19:11 ` Andrew Price
  2021-04-19 19:35   ` Andreas Gruenbacher
  2021-04-19 19:11 ` [Cluster-devel] [PATCH 2/8] Remove HAS_UUID conditionals Andrew Price
                   ` (7 subsequent siblings)
  8 siblings, 1 reply; 16+ messages in thread
From: Andrew Price @ 2021-04-19 19:11 UTC (permalink / raw)
  To: cluster-devel.redhat.com

Give gfs2-utils its own copy of gfs2_ondisk.h. This allows us to always
support the latest ondisk structures and obsoletes a lot of #ifdef
GFS2_HAS_<FEATURE> blocks and configure.ac checks.

Provide the kernel int typedefs that gfs2_ondisk.h uses with our own
linux/types.h, which uses standard userspace types but keeps the bitwise
attribute tags that sparse uses.

Remove a bunch of unnecessary #include statements in the utils so that
linux/gfs2_ondisk.h is never included and (our) linux/types.h is only
ever included in libgfs2.h.

Signed-off-by: Andrew Price <anprice@redhat.com>
---
 configure.ac                   |   2 -
 gfs2/convert/gfs2_convert.c    |   2 -
 gfs2/edit/extended.c           |   2 -
 gfs2/edit/gfs2hex.c            |   5 -
 gfs2/edit/hexedit.c            |   2 -
 gfs2/edit/hexedit.h            |   1 -
 gfs2/edit/journal.c            |   2 -
 gfs2/edit/savemeta.c           |   2 -
 gfs2/include/Makefile.am       |   2 +
 gfs2/include/gfs2_ondisk.h     | 542 +++++++++++++++++++++++++++++++++
 gfs2/include/linux/types.h     |  32 ++
 gfs2/libgfs2/buf.c             |   1 -
 gfs2/libgfs2/device_geometry.c |   1 -
 gfs2/libgfs2/fs_ops.c          |   1 -
 gfs2/libgfs2/gfs1.c            |   2 -
 gfs2/libgfs2/libgfs2.h         |   3 +-
 gfs2/libgfs2/ondisk.c          |   1 -
 gfs2/libgfs2/structures.c      |   1 -
 gfs2/mkfs/gfs2_mkfs.h          |   1 -
 gfs2/mkfs/main_grow.c          |   1 -
 gfs2/mkfs/main_jadd.c          |   1 -
 gfs2/mkfs/main_mkfs.c          |   1 -
 gfs2/tune/super.c              |   1 -
 23 files changed, 577 insertions(+), 32 deletions(-)
 create mode 100644 gfs2/include/gfs2_ondisk.h
 create mode 100644 gfs2/include/linux/types.h

diff --git a/configure.ac b/configure.ac
index 690049f2..9a7e50ab 100644
--- a/configure.ac
+++ b/configure.ac
@@ -127,9 +127,7 @@ AC_SUBST([udevdir], [$with_udevdir])
 # Checks for header files.
 AC_CHECK_HEADERS([fcntl.h libintl.h limits.h locale.h mntent.h stddef.h sys/file.h sys/ioctl.h sys/mount.h sys/time.h sys/vfs.h syslog.h termios.h])
 AC_CHECK_HEADER([linux/fs.h], [], [AC_MSG_ERROR([Unable to find linux/fs.h])])
-AC_CHECK_HEADER([linux/types.h], [], [AC_MSG_ERROR([Unable to find linux/types.h])])
 AC_CHECK_HEADER([linux/limits.h], [], [AC_MSG_ERROR([Unable to find linux/limits.h])])
-AC_CHECK_HEADER([linux/gfs2_ondisk.h], [], [AC_MSG_ERROR([Unable to find linux/gfs2_ondisk.h])])
 AC_CHECK_MEMBER([struct gfs2_sb.sb_uuid], [sb_has_uuid=yes], [sb_has_uuid=no],
                 [[#include <linux/gfs2_ondisk.h>]])
 AC_CHECK_MEMBER([struct gfs2_leaf.lf_inode],[AC_DEFINE([GFS2_HAS_LEAF_HINTS],[],[Leaf block hints])],
diff --git a/gfs2/convert/gfs2_convert.c b/gfs2/convert/gfs2_convert.c
index 142c7d4e..5656b39d 100644
--- a/gfs2/convert/gfs2_convert.c
+++ b/gfs2/convert/gfs2_convert.c
@@ -28,8 +28,6 @@
 #include <locale.h>
 #define _(String) gettext(String)
 
-#include <linux/types.h>
-#include <linux/gfs2_ondisk.h>
 #include <logging.h>
 #include "osi_list.h"
 #include "copyright.cf"
diff --git a/gfs2/edit/extended.c b/gfs2/edit/extended.c
index 0e5ecda4..64e4d31f 100644
--- a/gfs2/edit/extended.c
+++ b/gfs2/edit/extended.c
@@ -6,7 +6,6 @@
 #include <string.h>
 #include <inttypes.h>
 #include <sys/types.h>
-#include <linux/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <unistd.h>
@@ -19,7 +18,6 @@
 #include <sys/mount.h>
 #include <dirent.h>
 
-#include <linux/gfs2_ondisk.h>
 #include "copyright.cf"
 
 #include "hexedit.h"
diff --git a/gfs2/edit/gfs2hex.c b/gfs2/edit/gfs2hex.c
index 3204577a..133a508e 100644
--- a/gfs2/edit/gfs2hex.c
+++ b/gfs2/edit/gfs2hex.c
@@ -5,7 +5,6 @@
 #include <string.h>
 #include <inttypes.h>
 #include <sys/types.h>
-#include <linux/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <unistd.h>
@@ -13,10 +12,6 @@
 #include <curses.h>
 
 #include "hexedit.h"
-
-#define WANT_GFS_CONVERSION_FUNCTIONS
-#include <linux/gfs2_ondisk.h>
-
 #include "extended.h"
 #include "gfs2hex.h"
 #include "libgfs2.h"
diff --git a/gfs2/edit/hexedit.c b/gfs2/edit/hexedit.c
index d07437bb..e38d0b7b 100644
--- a/gfs2/edit/hexedit.c
+++ b/gfs2/edit/hexedit.c
@@ -6,7 +6,6 @@
 #include <string.h>
 #include <inttypes.h>
 #include <sys/types.h>
-#include <linux/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <unistd.h>
@@ -19,7 +18,6 @@
 #include <sys/mount.h>
 #include <dirent.h>
 
-#include <linux/gfs2_ondisk.h>
 #include "copyright.cf"
 
 #include "hexedit.h"
diff --git a/gfs2/edit/hexedit.h b/gfs2/edit/hexedit.h
index 1c94c901..35573415 100644
--- a/gfs2/edit/hexedit.h
+++ b/gfs2/edit/hexedit.h
@@ -4,7 +4,6 @@
 #include <sys/types.h>
 #include <inttypes.h>
 #include <limits.h>
-#include <linux/gfs2_ondisk.h>
 #include <string.h>
 
 #include "libgfs2.h"
diff --git a/gfs2/edit/journal.c b/gfs2/edit/journal.c
index 1adbc4b1..313f18f2 100644
--- a/gfs2/edit/journal.c
+++ b/gfs2/edit/journal.c
@@ -6,7 +6,6 @@
 #include <string.h>
 #include <inttypes.h>
 #include <sys/types.h>
-#include <linux/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <unistd.h>
@@ -19,7 +18,6 @@
 #include <sys/mount.h>
 #include <dirent.h>
 
-#include <linux/gfs2_ondisk.h>
 #include "copyright.cf"
 
 #include "hexedit.h"
diff --git a/gfs2/edit/savemeta.c b/gfs2/edit/savemeta.c
index a13e6a5f..e256fa26 100644
--- a/gfs2/edit/savemeta.c
+++ b/gfs2/edit/savemeta.c
@@ -7,7 +7,6 @@
 #include <stdint.h>
 #include <inttypes.h>
 #include <sys/types.h>
-#include <linux/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <unistd.h>
@@ -17,7 +16,6 @@
 #include <sys/ioctl.h>
 #include <limits.h>
 #include <sys/time.h>
-#include <linux/gfs2_ondisk.h>
 #include <zlib.h>
 #include <bzlib.h>
 #include <time.h>
diff --git a/gfs2/include/Makefile.am b/gfs2/include/Makefile.am
index fca6f6aa..4b92abe7 100644
--- a/gfs2/include/Makefile.am
+++ b/gfs2/include/Makefile.am
@@ -4,4 +4,6 @@ noinst_HEADERS = \
 	osi_list.h \
 	osi_tree.h \
 	linux_endian.h \
+	gfs2_ondisk.h \
+	linux/types.h \
 	logging.h
diff --git a/gfs2/include/gfs2_ondisk.h b/gfs2/include/gfs2_ondisk.h
new file mode 100644
index 00000000..fc948f89
--- /dev/null
+++ b/gfs2/include/gfs2_ondisk.h
@@ -0,0 +1,542 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
+/*
+ * Copyright (C) Sistina Software, Inc.  1997-2003 All rights reserved.
+ * Copyright (C) 2004-2006 Red Hat, Inc.  All rights reserved.
+ *
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU General Public License v.2.
+ */
+
+#ifndef __GFS2_ONDISK_DOT_H__
+#define __GFS2_ONDISK_DOT_H__
+
+#include <linux/types.h>
+
+#define GFS2_MAGIC		0x01161970
+#define GFS2_BASIC_BLOCK	512
+#define GFS2_BASIC_BLOCK_SHIFT	9
+
+/* Lock numbers of the LM_TYPE_NONDISK type */
+
+#define GFS2_MOUNT_LOCK		0
+#define GFS2_LIVE_LOCK		1
+#define GFS2_FREEZE_LOCK	2
+#define GFS2_RENAME_LOCK	3
+#define GFS2_CONTROL_LOCK	4
+#define GFS2_MOUNTED_LOCK	5
+
+/* Format numbers for various metadata types */
+
+#define GFS2_FORMAT_NONE	0
+#define GFS2_FORMAT_SB		100
+#define GFS2_FORMAT_RG		200
+#define GFS2_FORMAT_RB		300
+#define GFS2_FORMAT_DI		400
+#define GFS2_FORMAT_IN		500
+#define GFS2_FORMAT_LF		600
+#define GFS2_FORMAT_JD		700
+#define GFS2_FORMAT_LH		800
+#define GFS2_FORMAT_LD		900
+#define GFS2_FORMAT_LB		1000
+#define GFS2_FORMAT_EA		1600
+#define GFS2_FORMAT_ED		1700
+#define GFS2_FORMAT_QC		1400
+/* These are format numbers for entities contained in files */
+#define GFS2_FORMAT_RI		1100
+#define GFS2_FORMAT_DE		1200
+#define GFS2_FORMAT_QU		1500
+/* These are part of the superblock */
+#define GFS2_FORMAT_FS		1802
+#define GFS2_FORMAT_MULTI	1900
+
+/*
+ * An on-disk inode number
+ */
+
+struct gfs2_inum {
+	__be64 no_formal_ino;
+	__be64 no_addr;
+};
+
+/*
+ * Generic metadata head structure
+ * Every inplace buffer logged in the journal must start with this.
+ */
+
+#define GFS2_METATYPE_NONE	0
+#define GFS2_METATYPE_SB	1
+#define GFS2_METATYPE_RG	2
+#define GFS2_METATYPE_RB	3
+#define GFS2_METATYPE_DI	4
+#define GFS2_METATYPE_IN	5
+#define GFS2_METATYPE_LF	6
+#define GFS2_METATYPE_JD	7
+#define GFS2_METATYPE_LH	8
+#define GFS2_METATYPE_LD	9
+#define GFS2_METATYPE_LB	12
+#define GFS2_METATYPE_EA	10
+#define GFS2_METATYPE_ED	11
+#define GFS2_METATYPE_QC	14
+
+struct gfs2_meta_header {
+	__be32 mh_magic;
+	__be32 mh_type;
+	__be64 __pad0;		/* Was generation number in gfs1 */
+	__be32 mh_format;
+	/* This union is to keep userspace happy */
+	union {
+		__be32 mh_jid;		/* Was incarnation number in gfs1 */
+		__be32 __pad1;
+	};
+};
+
+/*
+ * super-block structure
+ *
+ * It's probably good if SIZEOF_SB <= GFS2_BASIC_BLOCK (512 bytes)
+ *
+ * Order is important, need to be able to read old superblocks to do on-disk
+ * version upgrades.
+ */
+
+/* Address of superblock in GFS2 basic blocks */
+#define GFS2_SB_ADDR		128
+
+/* The lock number for the superblock (must be zero) */
+#define GFS2_SB_LOCK		0
+
+/* Requirement:  GFS2_LOCKNAME_LEN % 8 == 0
+   Includes: the fencing zero@the end */
+#define GFS2_LOCKNAME_LEN	64
+
+struct gfs2_sb {
+	struct gfs2_meta_header sb_header;
+
+	__be32 sb_fs_format;
+	__be32 sb_multihost_format;
+	__u32  __pad0;	/* Was superblock flags in gfs1 */
+
+	__be32 sb_bsize;
+	__be32 sb_bsize_shift;
+	__u32 __pad1;	/* Was journal segment size in gfs1 */
+
+	struct gfs2_inum sb_master_dir; /* Was jindex dinode in gfs1 */
+	struct gfs2_inum __pad2; /* Was rindex dinode in gfs1 */
+	struct gfs2_inum sb_root_dir;
+
+	char sb_lockproto[GFS2_LOCKNAME_LEN];
+	char sb_locktable[GFS2_LOCKNAME_LEN];
+
+	struct gfs2_inum __pad3; /* Was quota inode in gfs1 */
+	struct gfs2_inum __pad4; /* Was licence inode in gfs1 */
+#define GFS2_HAS_UUID 1
+	__u8 sb_uuid[16]; /* The UUID, maybe 0 for backwards compat */
+};
+
+/*
+ * resource index structure
+ */
+
+struct gfs2_rindex {
+	__be64 ri_addr;	/* grp block disk address */
+	__be32 ri_length;	/* length of rgrp header in fs blocks */
+	__u32 __pad;
+
+	__be64 ri_data0;	/* first data location */
+	__be32 ri_data;	/* num of data blocks in rgrp */
+
+	__be32 ri_bitbytes;	/* number of bytes in data bitmaps */
+
+	__u8 ri_reserved[64];
+};
+
+/*
+ * resource group header structure
+ */
+
+/* Number of blocks per byte in rgrp */
+#define GFS2_NBBY		4
+#define GFS2_BIT_SIZE		2
+#define GFS2_BIT_MASK		0x00000003
+
+#define GFS2_BLKST_FREE		0
+#define GFS2_BLKST_USED		1
+#define GFS2_BLKST_UNLINKED	2
+#define GFS2_BLKST_DINODE	3
+
+#define GFS2_RGF_JOURNAL	0x00000001
+#define GFS2_RGF_METAONLY	0x00000002
+#define GFS2_RGF_DATAONLY	0x00000004
+#define GFS2_RGF_NOALLOC	0x00000008
+#define GFS2_RGF_TRIMMED	0x00000010
+
+struct gfs2_inode_lvb {
+	__be32 ri_magic;
+	__be32 __pad;
+	__be64 ri_generation_deleted;
+};
+
+struct gfs2_rgrp_lvb {
+	__be32 rl_magic;
+	__be32 rl_flags;
+	__be32 rl_free;
+	__be32 rl_dinodes;
+	__be64 rl_igeneration;
+	__be32 rl_unlinked;
+	__be32 __pad;
+};
+
+struct gfs2_rgrp {
+	struct gfs2_meta_header rg_header;
+
+	__be32 rg_flags;
+	__be32 rg_free;
+	__be32 rg_dinodes;
+	union {
+		__be32 __pad;
+		__be32 rg_skip; /* Distance to the next rgrp in fs blocks */
+	};
+	__be64 rg_igeneration;
+	/* The following 3 fields are duplicated from gfs2_rindex to reduce
+	   reliance on the rindex */
+	__be64 rg_data0;     /* First data location */
+	__be32 rg_data;      /* Number of data blocks in rgrp */
+	__be32 rg_bitbytes;  /* Number of bytes in data bitmaps */
+	__be32 rg_crc;       /* crc32 of the structure with this field 0 */
+
+	__u8 rg_reserved[60]; /* Several fields from gfs1 now reserved */
+};
+
+/*
+ * quota structure
+ */
+
+struct gfs2_quota {
+	__be64 qu_limit;
+	__be64 qu_warn;
+	__be64 qu_value;
+	__u8 qu_reserved[64];
+};
+
+/*
+ * dinode structure
+ */
+
+#define GFS2_MAX_META_HEIGHT	10
+#define GFS2_DIR_MAX_DEPTH	17
+
+#define DT2IF(dt) (((dt) << 12) & S_IFMT)
+#define IF2DT(sif) (((sif) & S_IFMT) >> 12)
+
+enum {
+	gfs2fl_Jdata		= 0,
+	gfs2fl_ExHash		= 1,
+	gfs2fl_Unused		= 2,
+	gfs2fl_EaIndirect	= 3,
+	gfs2fl_Directio		= 4,
+	gfs2fl_Immutable	= 5,
+	gfs2fl_AppendOnly	= 6,
+	gfs2fl_NoAtime		= 7,
+	gfs2fl_Sync		= 8,
+	gfs2fl_System		= 9,
+	gfs2fl_TopLevel		= 10,
+	gfs2fl_TruncInProg	= 29,
+	gfs2fl_InheritDirectio	= 30,
+	gfs2fl_InheritJdata	= 31,
+};
+
+/* Dinode flags */
+#define GFS2_DIF_JDATA			0x00000001
+#define GFS2_DIF_EXHASH			0x00000002
+#define GFS2_DIF_UNUSED			0x00000004  /* only in gfs1 */
+#define GFS2_DIF_EA_INDIRECT		0x00000008
+#define GFS2_DIF_DIRECTIO		0x00000010
+#define GFS2_DIF_IMMUTABLE		0x00000020
+#define GFS2_DIF_APPENDONLY		0x00000040
+#define GFS2_DIF_NOATIME		0x00000080
+#define GFS2_DIF_SYNC			0x00000100
+#define GFS2_DIF_SYSTEM			0x00000200 /* New in gfs2 */
+#define GFS2_DIF_TOPDIR			0x00000400 /* New in gfs2 */
+#define GFS2_DIF_TRUNC_IN_PROG		0x20000000 /* New in gfs2 */
+#define GFS2_DIF_INHERIT_DIRECTIO	0x40000000 /* only in gfs1 */
+#define GFS2_DIF_INHERIT_JDATA		0x80000000
+
+struct gfs2_dinode {
+	struct gfs2_meta_header di_header;
+
+	struct gfs2_inum di_num;
+
+	__be32 di_mode;	/* mode of file */
+	__be32 di_uid;	/* owner's user id */
+	__be32 di_gid;	/* owner's group id */
+	__be32 di_nlink;	/* number of links to this file */
+	__be64 di_size;	/* number of bytes in file */
+	__be64 di_blocks;	/* number of blocks in file */
+	__be64 di_atime;	/* time last accessed */
+	__be64 di_mtime;	/* time last modified */
+	__be64 di_ctime;	/* time last changed */
+	__be32 di_major;	/* device major number */
+	__be32 di_minor;	/* device minor number */
+
+	/* This section varies from gfs1. Padding added to align with
+         * remainder of dinode
+	 */
+	__be64 di_goal_meta;	/* rgrp to alloc from next */
+	__be64 di_goal_data;	/* data block goal */
+	__be64 di_generation;	/* generation number for NFS */
+
+	__be32 di_flags;	/* GFS2_DIF_... */
+	__be32 di_payload_format;  /* GFS2_FORMAT_... */
+	__u16 __pad1;	/* Was ditype in gfs1 */
+	__be16 di_height;	/* height of metadata */
+	__u32 __pad2;	/* Unused incarnation number from gfs1 */
+
+	/* These only apply to directories  */
+	__u16 __pad3;	/* Padding */
+	__be16 di_depth;	/* Number of bits in the table */
+	__be32 di_entries;	/* The number of entries in the directory */
+
+	struct gfs2_inum __pad4; /* Unused even in current gfs1 */
+
+	__be64 di_eattr;	/* extended attribute block number */
+	__be32 di_atime_nsec;   /* nsec portion of atime */
+	__be32 di_mtime_nsec;   /* nsec portion of mtime */
+	__be32 di_ctime_nsec;   /* nsec portion of ctime */
+
+	__u8 di_reserved[44];
+};
+
+/*
+ * directory structure - many of these per directory file
+ */
+
+#define GFS2_FNAMESIZE		255
+#define GFS2_DIRENT_SIZE(name_len) ((sizeof(struct gfs2_dirent) + (name_len) + 7) & ~7)
+#define GFS2_MIN_DIRENT_SIZE (GFS2_DIRENT_SIZE(1))
+
+
+struct gfs2_dirent {
+	struct gfs2_inum de_inum;
+	__be32 de_hash;
+	__be16 de_rec_len;
+	__be16 de_name_len;
+	__be16 de_type;
+	__be16 de_rahead;
+	union {
+		__u8 __pad[12];
+		struct {
+			__u32 de_cookie; /* ondisk value not used */
+			__u8 pad3[8];
+		};
+	};
+};
+
+/*
+ * Header of leaf directory nodes
+ */
+
+struct gfs2_leaf {
+	struct gfs2_meta_header lf_header;
+
+	__be16 lf_depth;		/* Depth of leaf */
+	__be16 lf_entries;		/* Number of dirents in leaf */
+	__be32 lf_dirent_format;	/* Format of the dirents */
+	__be64 lf_next;			/* Next leaf, if overflow */
+
+	union {
+		__u8 lf_reserved[64];
+		struct {
+			__be64 lf_inode;	/* Dir inode number */
+			__be32 lf_dist;		/* Dist from inode on chain */
+			__be32 lf_nsec;		/* Last ins/del usecs */
+			__be64 lf_sec;		/* Last ins/del in secs */
+			__u8 lf_reserved2[40];
+		};
+	};
+};
+
+/*
+ * Extended attribute header format
+ *
+ * This works in a similar way to dirents. There is a fixed size header
+ * followed by a variable length section made up of the name and the
+ * associated data. In the case of a "stuffed" entry, the value is
+ * __inline__ directly after the name, the ea_num_ptrs entry will be
+ * zero in that case. For non-"stuffed" entries, there will be
+ * a set of pointers (aligned to 8 byte boundary) to the block(s)
+ * containing the value.
+ *
+ * The blocks containing the values and the blocks containing the
+ * extended attribute headers themselves all start with the common
+ * metadata header. Each inode, if it has extended attributes, will
+ * have either a single block containing the extended attribute headers
+ * or a single indirect block pointing to blocks containing the
+ * extended attribute headers.
+ *
+ * The maximum size of the data part of an extended attribute is 64k
+ * so the number of blocks required depends upon block size. Since the
+ * block size also determines the number of pointers in an indirect
+ * block, its a fairly complicated calculation to work out the maximum
+ * number of blocks that an inode may have relating to extended attributes.
+ *
+ */
+
+#define GFS2_EA_MAX_NAME_LEN	255
+#define GFS2_EA_MAX_DATA_LEN	65536
+
+#define GFS2_EATYPE_UNUSED	0
+#define GFS2_EATYPE_USR		1
+#define GFS2_EATYPE_SYS		2
+#define GFS2_EATYPE_SECURITY	3
+#define GFS2_EATYPE_TRUSTED	4
+
+#define GFS2_EATYPE_LAST	4
+#define GFS2_EATYPE_VALID(x)	((x) <= GFS2_EATYPE_LAST)
+
+#define GFS2_EAFLAG_LAST	0x01	/* last ea in block */
+
+struct gfs2_ea_header {
+	__be32 ea_rec_len;
+	__be32 ea_data_len;
+	__u8 ea_name_len;	/* no NULL pointer after the string */
+	__u8 ea_type;		/* GFS2_EATYPE_... */
+	__u8 ea_flags;		/* GFS2_EAFLAG_... */
+	__u8 ea_num_ptrs;
+	__u32 __pad;
+};
+
+/*
+ * Log header structure
+ */
+
+#define GFS2_LOG_HEAD_UNMOUNT		0x00000001 /* log is clean */
+#define GFS2_LOG_HEAD_FLUSH_NORMAL	0x00000002 /* normal log flush */
+#define GFS2_LOG_HEAD_FLUSH_SYNC	0x00000004 /* Sync log flush */
+#define GFS2_LOG_HEAD_FLUSH_SHUTDOWN	0x00000008 /* Shutdown log flush */
+#define GFS2_LOG_HEAD_FLUSH_FREEZE	0x00000010 /* Freeze flush */
+#define GFS2_LOG_HEAD_RECOVERY		0x00000020 /* Journal recovery */
+#define GFS2_LOG_HEAD_USERSPACE		0x80000000 /* Written by gfs2-utils */
+
+/* Log flush callers */
+#define GFS2_LFC_SHUTDOWN		0x00000100
+#define GFS2_LFC_JDATA_WPAGES		0x00000200
+#define GFS2_LFC_SET_FLAGS		0x00000400
+#define GFS2_LFC_AIL_EMPTY_GL		0x00000800
+#define GFS2_LFC_AIL_FLUSH		0x00001000
+#define GFS2_LFC_RGRP_GO_SYNC		0x00002000
+#define GFS2_LFC_INODE_GO_SYNC		0x00004000
+#define GFS2_LFC_INODE_GO_INVAL		0x00008000
+#define GFS2_LFC_FREEZE_GO_SYNC		0x00010000
+#define GFS2_LFC_KILL_SB		0x00020000
+#define GFS2_LFC_DO_SYNC		0x00040000
+#define GFS2_LFC_INPLACE_RESERVE	0x00080000
+#define GFS2_LFC_WRITE_INODE		0x00100000
+#define GFS2_LFC_MAKE_FS_RO		0x00200000
+#define GFS2_LFC_SYNC_FS		0x00400000
+#define GFS2_LFC_EVICT_INODE		0x00800000
+#define GFS2_LFC_TRANS_END		0x01000000
+#define GFS2_LFC_LOGD_JFLUSH_REQD	0x02000000
+#define GFS2_LFC_LOGD_AIL_FLUSH_REQD	0x04000000
+
+#define LH_V1_SIZE (offsetofend(struct gfs2_log_header, lh_hash))
+
+struct gfs2_log_header {
+	struct gfs2_meta_header lh_header;
+
+	__be64 lh_sequence;	/* Sequence number of this transaction */
+	__be32 lh_flags;	/* GFS2_LOG_HEAD_... */
+	__be32 lh_tail;		/* Block number of log tail */
+	__be32 lh_blkno;
+	__be32 lh_hash;		/* crc up to here with this field 0 */
+
+	/* Version 2 additional fields start here */
+	__be32 lh_crc;		/* crc32c from lh_nsec to end of block */
+	__be32 lh_nsec;		/* Nanoseconds of timestamp */
+	__be64 lh_sec;		/* Seconds of timestamp */
+	__be64 lh_addr;		/* Block addr of this log header (absolute) */
+	__be64 lh_jinode;	/* Journal inode number */
+	__be64 lh_statfs_addr;	/* Local statfs inode number */
+	__be64 lh_quota_addr;	/* Local quota change inode number */
+
+	/* Statfs local changes (i.e. diff from global statfs) */
+	__be64 lh_local_total;
+	__be64 lh_local_free;
+	__be64 lh_local_dinodes;
+};
+
+/*
+ * Log type descriptor
+ */
+
+#define GFS2_LOG_DESC_METADATA	300
+/* ld_data1 is the number of metadata blocks in the descriptor.
+   ld_data2 is unused. */
+
+#define GFS2_LOG_DESC_REVOKE	301
+/* ld_data1 is the number of revoke blocks in the descriptor.
+   ld_data2 is unused. */
+
+#define GFS2_LOG_DESC_JDATA	302
+/* ld_data1 is the number of data blocks in the descriptor.
+   ld_data2 is unused. */
+
+struct gfs2_log_descriptor {
+	struct gfs2_meta_header ld_header;
+
+	__be32 ld_type;		/* GFS2_LOG_DESC_... */
+	__be32 ld_length;	/* Number of buffers in this chunk */
+	__be32 ld_data1;	/* descriptor-specific field */
+	__be32 ld_data2;	/* descriptor-specific field */
+
+	__u8 ld_reserved[32];
+};
+
+/*
+ * Inum Range
+ * Describe a range of formal inode numbers allocated to
+ * one machine to assign to inodes.
+ */
+
+#define GFS2_INUM_QUANTUM	1048576
+
+struct gfs2_inum_range {
+	__be64 ir_start;
+	__be64 ir_length;
+};
+
+/*
+ * Statfs change
+ * Describes an change to the pool of free and allocated
+ * blocks.
+ */
+
+struct gfs2_statfs_change {
+	__be64 sc_total;
+	__be64 sc_free;
+	__be64 sc_dinodes;
+};
+
+/*
+ * Quota change
+ * Describes an allocation change for a particular
+ * user or group.
+ */
+
+#define GFS2_QCF_USER		0x00000001
+
+struct gfs2_quota_change {
+	__be64 qc_change;
+	__be32 qc_flags;	/* GFS2_QCF_... */
+	__be32 qc_id;
+};
+
+struct gfs2_quota_lvb {
+        __be32 qb_magic;
+        __u32 __pad;
+        __be64 qb_limit;      /* Hard limit of # blocks to alloc */
+        __be64 qb_warn;       /* Warn user when alloc is above this # */
+        __be64 qb_value;       /* Current # blocks allocated */
+};
+
+#endif /* __GFS2_ONDISK_DOT_H__ */
diff --git a/gfs2/include/linux/types.h b/gfs2/include/linux/types.h
new file mode 100644
index 00000000..7f4d4b98
--- /dev/null
+++ b/gfs2/include/linux/types.h
@@ -0,0 +1,32 @@
+#ifndef LINUX_TYPES_H
+#define LINUX_TYPES_H
+
+/* Satisfy gfs2_ondisk.h with userspace definitions of kernel types */
+
+#include <stdint.h>
+
+#ifdef __CHECKER__
+#define __bitwise__ __attribute__((bitwise))
+#else
+#define __bitwise__
+#endif
+#define __bitwise __bitwise__
+
+typedef uint8_t __u8;
+typedef uint16_t __u16;
+typedef uint32_t __u32;
+typedef uint64_t __u64;
+
+typedef int8_t __s8;
+typedef int16_t __s16;
+typedef int32_t __s32;
+typedef int64_t __s64;
+
+typedef __u16 __bitwise __le16;
+typedef __u16 __bitwise __be16;
+typedef __u32 __bitwise __le32;
+typedef __u32 __bitwise __be32;
+typedef __u64 __bitwise __le64;
+typedef __u64 __bitwise __be64;
+
+#endif /* LINUX_TYPES_H */
diff --git a/gfs2/libgfs2/buf.c b/gfs2/libgfs2/buf.c
index eb7a94cf..22144d68 100644
--- a/gfs2/libgfs2/buf.c
+++ b/gfs2/libgfs2/buf.c
@@ -11,7 +11,6 @@
 #include <fcntl.h>
 #include <unistd.h>
 #include <errno.h>
-#include <linux/types.h>
 
 #include "libgfs2.h"
 
diff --git a/gfs2/libgfs2/device_geometry.c b/gfs2/libgfs2/device_geometry.c
index 1303f11b..72f9c7e4 100644
--- a/gfs2/libgfs2/device_geometry.c
+++ b/gfs2/libgfs2/device_geometry.c
@@ -11,7 +11,6 @@
 #include <unistd.h>
 #include <errno.h>
 #include <sys/ioctl.h>
-#include <linux/types.h>
 #include <linux/fs.h>
 
 #include "libgfs2.h"
diff --git a/gfs2/libgfs2/fs_ops.c b/gfs2/libgfs2/fs_ops.c
index 9e54010f..1c580081 100644
--- a/gfs2/libgfs2/fs_ops.c
+++ b/gfs2/libgfs2/fs_ops.c
@@ -11,7 +11,6 @@
 #include <unistd.h>
 #include <errno.h>
 
-#include <linux/types.h>
 #include "libgfs2.h"
 #include "rgrp.h"
 
diff --git a/gfs2/libgfs2/gfs1.c b/gfs2/libgfs2/gfs1.c
index 15fa5809..b2294a8b 100644
--- a/gfs2/libgfs2/gfs1.c
+++ b/gfs2/libgfs2/gfs1.c
@@ -10,8 +10,6 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
-#include <linux/types.h>
-#include <linux/gfs2_ondisk.h>
 
 #include "osi_list.h"
 #include "libgfs2.h"
diff --git a/gfs2/libgfs2/libgfs2.h b/gfs2/libgfs2/libgfs2.h
index 8b70a56e..6346b74a 100644
--- a/gfs2/libgfs2/libgfs2.h
+++ b/gfs2/libgfs2/libgfs2.h
@@ -8,13 +8,12 @@
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/uio.h>
-#include <linux/types.h>
 #include <linux/limits.h>
 #include <endian.h>
 #include <byteswap.h>
 #include <mntent.h>
 
-#include <linux/gfs2_ondisk.h>
+#include <gfs2_ondisk.h>
 #include "osi_list.h"
 #include "osi_tree.h"
 
diff --git a/gfs2/libgfs2/ondisk.c b/gfs2/libgfs2/ondisk.c
index 6918d82d..4515e7ac 100644
--- a/gfs2/libgfs2/ondisk.c
+++ b/gfs2/libgfs2/ondisk.c
@@ -6,7 +6,6 @@
 #include <stdint.h>
 #include <inttypes.h>
 #include <ctype.h>
-#include <linux/types.h>
 #include "libgfs2.h"
 #ifdef GFS2_HAS_UUID
 #include <uuid.h>
diff --git a/gfs2/libgfs2/structures.c b/gfs2/libgfs2/structures.c
index 79095efc..10933683 100644
--- a/gfs2/libgfs2/structures.c
+++ b/gfs2/libgfs2/structures.c
@@ -10,7 +10,6 @@
 #include <fcntl.h>
 #include <unistd.h>
 #include <errno.h>
-#include <linux/types.h>
 #include <sys/time.h>
 
 #include "libgfs2.h"
diff --git a/gfs2/mkfs/gfs2_mkfs.h b/gfs2/mkfs/gfs2_mkfs.h
index af0fcd50..d584a9cd 100644
--- a/gfs2/mkfs/gfs2_mkfs.h
+++ b/gfs2/mkfs/gfs2_mkfs.h
@@ -2,7 +2,6 @@
 #define __GFS2_MKFS_DOT_H__
 
 #include <stdarg.h>
-#include <linux/gfs2_ondisk.h>
 #include "osi_list.h"
 #include "copyright.cf"
 
diff --git a/gfs2/mkfs/main_grow.c b/gfs2/mkfs/main_grow.c
index e1a6d70b..2fadd06a 100644
--- a/gfs2/mkfs/main_grow.c
+++ b/gfs2/mkfs/main_grow.c
@@ -15,7 +15,6 @@
 #include <time.h>
 #include <errno.h>
 #include <stdarg.h>
-#include <linux/types.h>
 #include <blkid.h>
 #include <libintl.h>
 #include <locale.h>
diff --git a/gfs2/mkfs/main_jadd.c b/gfs2/mkfs/main_jadd.c
index 2bd0f7b0..33bd5127 100644
--- a/gfs2/mkfs/main_jadd.c
+++ b/gfs2/mkfs/main_jadd.c
@@ -20,7 +20,6 @@
 #include <locale.h>
 #define _(String) gettext(String)
 
-#include <linux/types.h>
 #include <linux/fiemap.h>
 #include <linux/fs.h>
 #include "libgfs2.h"
diff --git a/gfs2/mkfs/main_mkfs.c b/gfs2/mkfs/main_mkfs.c
index 7d7e3730..9ed1d0c1 100644
--- a/gfs2/mkfs/main_mkfs.c
+++ b/gfs2/mkfs/main_mkfs.c
@@ -25,7 +25,6 @@
 
 #define _(String) gettext(String)
 
-#include <linux/types.h>
 #include "libgfs2.h"
 #include "gfs2_mkfs.h"
 #include "progress.h"
diff --git a/gfs2/tune/super.c b/gfs2/tune/super.c
index c3029fd1..74e4a457 100644
--- a/gfs2/tune/super.c
+++ b/gfs2/tune/super.c
@@ -11,7 +11,6 @@
 #include <libintl.h>
 #define _(String) gettext(String)
 #include <linux_endian.h>
-#include <linux/gfs2_ondisk.h>
 #include <libgfs2.h>
 #include "tunegfs2.h"
 
-- 
2.30.2



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

* [Cluster-devel] [PATCH 2/8] Remove HAS_UUID conditionals
  2021-04-19 19:11 [Cluster-devel] [PATCH v2 0/8] gfs2-utils: Import linux/gfs2_ondisk.h Andrew Price
  2021-04-19 19:11 ` [Cluster-devel] [PATCH 1/8] " Andrew Price
@ 2021-04-19 19:11 ` Andrew Price
  2021-04-19 19:11 ` [Cluster-devel] [PATCH 3/8] Remove GFS2_HAS_LEAF_HINTS conditionals Andrew Price
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Andrew Price @ 2021-04-19 19:11 UTC (permalink / raw)
  To: cluster-devel.redhat.com

Now that we own our own gfs2_ondisk.h we know that it has sb_uuid so we
can use it unconditionally (and require libuuid unconditionally).

Signed-off-by: Andrew Price <anprice@redhat.com>
---
 configure.ac              | 11 +----------
 gfs2/edit/gfs2hex.c       | 12 +++---------
 gfs2/libgfs2/lang.c       | 11 +----------
 gfs2/libgfs2/meta.c       |  9 +--------
 gfs2/libgfs2/ondisk.c     | 16 +++-------------
 gfs2/libgfs2/structures.c |  7 +------
 gfs2/mkfs/main_mkfs.c     | 16 +++++-----------
 gfs2/tune/super.c         | 16 ++--------------
 8 files changed, 17 insertions(+), 81 deletions(-)

diff --git a/configure.ac b/configure.ac
index 9a7e50ab..8c60741d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -106,9 +106,7 @@ AM_CONDITIONAL([HAVE_CHECK], [test "x$have_check" = "xyes"])
 PKG_CHECK_MODULES([zlib],[zlib])
 PKG_CHECK_MODULES([bzip2],[bzip2])
 PKG_CHECK_MODULES([blkid],[blkid])
-PKG_CHECK_MODULES([uuid],[uuid],
-                  [have_uuid=yes],
-                  [have_uuid=no])
+PKG_CHECK_MODULES([uuid],[uuid])
 
 # old versions of ncurses don't ship pkg-config files
 PKG_CHECK_MODULES([ncurses],[ncurses],,
@@ -128,8 +126,6 @@ AC_SUBST([udevdir], [$with_udevdir])
 AC_CHECK_HEADERS([fcntl.h libintl.h limits.h locale.h mntent.h stddef.h sys/file.h sys/ioctl.h sys/mount.h sys/time.h sys/vfs.h syslog.h termios.h])
 AC_CHECK_HEADER([linux/fs.h], [], [AC_MSG_ERROR([Unable to find linux/fs.h])])
 AC_CHECK_HEADER([linux/limits.h], [], [AC_MSG_ERROR([Unable to find linux/limits.h])])
-AC_CHECK_MEMBER([struct gfs2_sb.sb_uuid], [sb_has_uuid=yes], [sb_has_uuid=no],
-                [[#include <linux/gfs2_ondisk.h>]])
 AC_CHECK_MEMBER([struct gfs2_leaf.lf_inode],[AC_DEFINE([GFS2_HAS_LEAF_HINTS],[],[Leaf block hints])],
                 [], [[#include <linux/gfs2_ondisk.h>]])
 AC_CHECK_MEMBER([struct gfs2_dirent.de_rahead],[AC_DEFINE([GFS2_HAS_DE_RAHEAD],[],[Dirent readahead field])],
@@ -143,11 +139,6 @@ AC_CHECK_MEMBER([struct gfs2_rgrp.rg_data0],[AC_DEFINE([GFS2_HAS_RG_RI_FIELDS],[
 AC_CHECK_MEMBER([struct gfs2_log_header.lh_crc],[AC_DEFINE([GFS2_HAS_LH_V2],[],[v2 log header format])],
                 [], [[#include <linux/gfs2_ondisk.h>]])
 
-# libuuid is only required if struct gfs2_sb.sb_uuid exists
-if test "$sb_has_uuid" = "yes" -a "$have_uuid" = "no"; then
-	AC_MSG_ERROR([libuuid is required for this version of gfs2])
-fi
-
 # *FLAGS handling
 ENV_CFLAGS="$CFLAGS"
 ENV_CPPFLAGS="$CPPFLAGS"
diff --git a/gfs2/edit/gfs2hex.c b/gfs2/edit/gfs2hex.c
index 133a508e..5e6760f2 100644
--- a/gfs2/edit/gfs2hex.c
+++ b/gfs2/edit/gfs2hex.c
@@ -10,14 +10,12 @@
 #include <unistd.h>
 #include <errno.h>
 #include <curses.h>
+#include <uuid.h>
 
 #include "hexedit.h"
 #include "extended.h"
 #include "gfs2hex.h"
 #include "libgfs2.h"
-#ifdef GFS2_HAS_UUID
-#include <uuid.h>
-#endif
 
 #define pv(struct, member, fmt, fmt2) do {				\
 		print_it("  "#member, fmt, fmt2, struct->member);	\
@@ -386,6 +384,8 @@ static void gfs2_inum_print2(const char *title,struct gfs2_inum *no)
  */
 static void gfs2_sb_print2(struct gfs2_sb *sbp2)
 {
+	char readable_uuid[36+1];
+
 	gfs2_meta_header_print(&sbp2->sb_header);
 
 	pv(sbp2, sb_fs_format, "%u", "0x%x");
@@ -410,14 +410,8 @@ static void gfs2_sb_print2(struct gfs2_sb *sbp2)
 		gfs2_inum_print2("quota ino ", &gfs1_quota_di);
 		gfs2_inum_print2("license   ", &gfs1_license_di);
 	}
-#ifdef GFS2_HAS_UUID
-	{
-	char readable_uuid[36+1];
-
 	uuid_unparse(sbp2->sb_uuid, readable_uuid);
 	print_it("  sb_uuid", "%s", NULL, readable_uuid);
-	}
-#endif
 }
 
 /**
diff --git a/gfs2/libgfs2/lang.c b/gfs2/libgfs2/lang.c
index d48b123f..3faa5abd 100644
--- a/gfs2/libgfs2/lang.c
+++ b/gfs2/libgfs2/lang.c
@@ -7,12 +7,10 @@
 #include <errno.h>
 #include <limits.h>
 #include <ctype.h>
+#include <uuid.h>
 
 #include "lang.h"
 #include "parser.h"
-#ifdef GFS2_HAS_UUID
-#include <uuid.h>
-#endif
 
 const char* ast_type_string[] = {
 	[AST_NONE] = "NONE",
@@ -315,14 +313,12 @@ static int field_print(char *buf, uint64_t addr, const struct lgfs2_metadata *mt
 
 	printf("%s\t%"PRIu64"\t%u\t%u\t%s\t", mtype->name, addr, field->offset, field->length, field->name);
 	if (field->flags & LGFS2_MFF_UUID) {
-#ifdef GFS2_HAS_UUID
 		char readable_uuid[36+1];
 		uuid_t uuid;
 
 		memcpy(uuid, fieldp, sizeof(uuid_t));
 		uuid_unparse(uuid, readable_uuid);
 		printf("'%s'\n", readable_uuid);
-#endif
 	} else if (field->flags & LGFS2_MFF_STRING) {
 		printf("'%s'\n", fieldp);
 	} else {
@@ -471,7 +467,6 @@ static int ast_field_set(char *buf, const struct lgfs2_metafield *field,
 	int err = 0;
 
 	if (field->flags & LGFS2_MFF_UUID) {
-#ifdef GFS2_HAS_UUID
 		uuid_t uuid;
 
 		if (uuid_parse(val->ast_str, uuid) != 0) {
@@ -479,10 +474,6 @@ static int ast_field_set(char *buf, const struct lgfs2_metafield *field,
 			return AST_INTERP_INVAL;
 		}
 		err = lgfs2_field_assign(buf, field, uuid);
-#else
-		fprintf(stderr, "No UUID support\n");
-		err = 1;
-#endif
 	} else if (field->flags & LGFS2_MFF_STRING) {
 		err = lgfs2_field_assign(buf, field, val->ast_str);
 	} else {
diff --git a/gfs2/libgfs2/meta.c b/gfs2/libgfs2/meta.c
index 6e338d27..2be87045 100644
--- a/gfs2/libgfs2/meta.c
+++ b/gfs2/libgfs2/meta.c
@@ -1,12 +1,9 @@
 #include <stdint.h>
 #include <string.h>
+#include <uuid.h>
 #include "libgfs2.h"
 #include "clusterautoconfig.h"
 
-#ifdef GFS2_HAS_UUID
-#include <uuid.h>
-#endif
-
 #define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
 #define SYM(x) { x, #x, 0 },
 #define PREFIX_SYM(p,x) { p##x, #p #x, sizeof #p - 1 },
@@ -183,9 +180,7 @@ F(sb_lockproto, .flags = LGFS2_MFF_STRING)
 F(sb_locktable, .flags = LGFS2_MFF_STRING)
 INR(__pad3, .points_to = (1 << LGFS2_MT_GFS2_DINODE))
 INR(__pad4, .points_to = (1 << LGFS2_MT_GFS2_DINODE))
-#ifdef GFS2_HAS_UUID
 F(sb_uuid, .flags = LGFS2_MFF_UUID)
-#endif
 };
 
 #undef STRUCT
@@ -880,14 +875,12 @@ int lgfs2_field_str(char *str, const size_t size, const char *blk, const struct
 		return 1;
 
 	if (field->flags & LGFS2_MFF_UUID) {
-#ifdef GFS2_HAS_UUID
 		char readable_uuid[36+1];
 		uuid_t uuid;
 
 		memcpy(uuid, fieldp, sizeof(uuid_t));
 		uuid_unparse(uuid, readable_uuid);
 		snprintf(str, size, "%s", readable_uuid);
-#endif
 	} else if (field->flags & LGFS2_MFF_STRING) {
 		snprintf(str, size, "%s", fieldp);
 	} else {
diff --git a/gfs2/libgfs2/ondisk.c b/gfs2/libgfs2/ondisk.c
index 4515e7ac..2185fd38 100644
--- a/gfs2/libgfs2/ondisk.c
+++ b/gfs2/libgfs2/ondisk.c
@@ -6,10 +6,8 @@
 #include <stdint.h>
 #include <inttypes.h>
 #include <ctype.h>
-#include "libgfs2.h"
-#ifdef GFS2_HAS_UUID
 #include <uuid.h>
-#endif
+#include "libgfs2.h"
 
 #define pv(struct, member, fmt, fmt2) do {				\
 		print_it("  "#member, fmt, fmt2, struct->member);	\
@@ -112,9 +110,7 @@ void gfs2_sb_in(struct gfs2_sb *sb, char *buf)
 	gfs2_inum_in(&sb->__pad2, (char *)&str->__pad2); /* gfs rindex */
 	gfs2_inum_in(&sb->__pad3, (char *)&str->__pad3); /* gfs quota */
 	gfs2_inum_in(&sb->__pad4, (char *)&str->__pad4); /* gfs license */
-#ifdef GFS2_HAS_UUID
 	CPIN_08(sb, str, sb_uuid, sizeof(sb->sb_uuid));
-#endif
 }
 
 void gfs2_sb_out(const struct gfs2_sb *sb, char *buf)
@@ -139,13 +135,13 @@ void gfs2_sb_out(const struct gfs2_sb *sb, char *buf)
 	gfs2_inum_out(&sb->__pad2, (char *)&str->__pad2); /* gfs rindex */
 	gfs2_inum_out(&sb->__pad3, (char *)&str->__pad3); /* gfs quota */
 	gfs2_inum_out(&sb->__pad4, (char *)&str->__pad4); /* gfs license */
-#ifdef GFS2_HAS_UUID
 	memcpy(str->sb_uuid, sb->sb_uuid, 16);
-#endif
 }
 
 void gfs2_sb_print(const struct gfs2_sb *sb)
 {
+	char readable_uuid[36+1];
+
 	gfs2_meta_header_print(&sb->sb_header);
 
 	pv(sb, sb_fs_format, "%u", "0x%x");
@@ -160,14 +156,8 @@ void gfs2_sb_print(const struct gfs2_sb *sb)
 	pv(sb, sb_lockproto, "%s", NULL);
 	pv(sb, sb_locktable, "%s", NULL);
 
-#ifdef GFS2_HAS_UUID
-	{
-	char readable_uuid[36+1];
-
 	uuid_unparse(sb->sb_uuid, readable_uuid);
 	print_it("  uuid", "%36s", NULL, readable_uuid);
-	}
-#endif
 }
 
 void gfs2_rindex_in(struct gfs2_rindex *ri, char *buf)
diff --git a/gfs2/libgfs2/structures.c b/gfs2/libgfs2/structures.c
index 10933683..789b9a63 100644
--- a/gfs2/libgfs2/structures.c
+++ b/gfs2/libgfs2/structures.c
@@ -11,15 +11,12 @@
 #include <unistd.h>
 #include <errno.h>
 #include <sys/time.h>
+#include <uuid.h>
 
 #include "libgfs2.h"
 #include "config.h"
 #include "crc32c.h"
 
-#ifdef GFS2_HAS_UUID
-#include <uuid.h>
-#endif
-
 int build_master(struct gfs2_sbd *sdp)
 {
 	struct gfs2_inum inum;
@@ -62,9 +59,7 @@ void lgfs2_sb_init(struct gfs2_sb *sb, unsigned bsize, unsigned format)
 	sb->sb_multihost_format = GFS2_FORMAT_MULTI;
 	sb->sb_bsize = bsize;
 	sb->sb_bsize_shift = ffs(bsize) - 1;
-#ifdef GFS2_HAS_UUID
 	uuid_generate(sb->sb_uuid);
-#endif
 }
 
 int lgfs2_sb_write(const struct gfs2_sb *sb, int fd, const unsigned bsize)
diff --git a/gfs2/mkfs/main_mkfs.c b/gfs2/mkfs/main_mkfs.c
index 9ed1d0c1..2400cc8e 100644
--- a/gfs2/mkfs/main_mkfs.c
+++ b/gfs2/mkfs/main_mkfs.c
@@ -22,6 +22,7 @@
 #include <limits.h>
 #include <blkid.h>
 #include <locale.h>
+#include <uuid.h>
 
 #define _(String) gettext(String)
 
@@ -29,10 +30,6 @@
 #include "gfs2_mkfs.h"
 #include "progress.h"
 
-#ifdef GFS2_HAS_UUID
-#include <uuid.h>
-#endif
-
 static void print_usage(const char *prog_name)
 {
 	int i;
@@ -640,6 +637,10 @@ static int opts_check(struct mkfs_opts *opts)
 
 static void print_results(struct gfs2_sb *sb, struct mkfs_opts *opts, uint64_t rgrps, uint64_t fssize)
 {
+	char readable_uuid[36+1];
+
+	uuid_unparse(sb->sb_uuid, readable_uuid);
+
 	printf("%-27s%s\n", _("Device:"), opts->dev.path);
 	printf("%-27s%u\n", _("Block size:"), sb->sb_bsize);
 	printf("%-27s%.2f %s (%"PRIu64" %s)\n", _("Device size:"),
@@ -653,15 +654,8 @@ static void print_results(struct gfs2_sb *sb, struct mkfs_opts *opts, uint64_t r
 	printf("%-27s%"PRIu64"\n", _("Resource groups:"), rgrps);
 	printf("%-27s\"%s\"\n", _("Locking protocol:"), opts->lockproto);
 	printf("%-27s\"%s\"\n", _("Lock table:"), opts->locktable);
-#ifdef GFS2_HAS_UUID
-	{
-	char readable_uuid[36+1];
-
-	uuid_unparse(sb->sb_uuid, readable_uuid);
 	/* Translators: "UUID" = universally unique identifier. */
 	printf("%-27s%s\n", _("UUID:"), readable_uuid);
-	}
-#endif
 }
 
 static int warn_of_destruction(const char *path)
diff --git a/gfs2/tune/super.c b/gfs2/tune/super.c
index 74e4a457..9e6578fb 100644
--- a/gfs2/tune/super.c
+++ b/gfs2/tune/super.c
@@ -12,11 +12,8 @@
 #define _(String) gettext(String)
 #include <linux_endian.h>
 #include <libgfs2.h>
-#include "tunegfs2.h"
-
-#ifdef GFS2_HAS_UUID
 #include <uuid.h>
-#endif
+#include "tunegfs2.h"
 
 int read_super(struct tunegfs2 *tfs)
 {
@@ -54,15 +51,11 @@ static int is_gfs2(const struct tunegfs2 *tfs)
 
 int print_super(const struct tunegfs2 *tfs)
 {
-	printf(_("File system volume name: %s\n"), tfs->sb->sb_locktable);
-#ifdef GFS2_HAS_UUID
-	{
 	char readable_uuid[36+1];
 
 	uuid_unparse(tfs->sb->sb_uuid, readable_uuid);
+	printf(_("File system volume name: %s\n"), tfs->sb->sb_locktable);
 	printf(_("File system UUID: %s\n"), readable_uuid);
-	}
-#endif
 	printf( _("File system magic number: 0x%X\n"), be32_to_cpu(tfs->sb->sb_header.mh_magic));
 	printf(_("File system format version: %"PRIu32"\n"), be32_to_cpu(tfs->sb->sb_fs_format));
 	printf(_("Block size: %d\n"), be32_to_cpu(tfs->sb->sb_bsize));
@@ -89,7 +82,6 @@ int write_super(const struct tunegfs2 *tfs)
 
 int change_uuid(struct tunegfs2 *tfs, const char *str)
 {
-#ifdef GFS2_HAS_UUID
 	uuid_t uuid;
 	int status;
 
@@ -97,10 +89,6 @@ int change_uuid(struct tunegfs2 *tfs, const char *str)
 	if (status == 0)
 		uuid_copy(tfs->sb->sb_uuid, uuid);
 	return status;
-#else
-	fprintf(stderr, _("UUID support unavailable in this build\n"));
-	return 1;
-#endif
 }
 
 int change_lockproto(struct tunegfs2 *tfs, const char *lockproto)
-- 
2.30.2



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

* [Cluster-devel] [PATCH 3/8] Remove GFS2_HAS_LEAF_HINTS conditionals
  2021-04-19 19:11 [Cluster-devel] [PATCH v2 0/8] gfs2-utils: Import linux/gfs2_ondisk.h Andrew Price
  2021-04-19 19:11 ` [Cluster-devel] [PATCH 1/8] " Andrew Price
  2021-04-19 19:11 ` [Cluster-devel] [PATCH 2/8] Remove HAS_UUID conditionals Andrew Price
@ 2021-04-19 19:11 ` Andrew Price
  2021-04-19 19:11 ` [Cluster-devel] [PATCH 4/8] Remove GFS2_HAS_DE_RAHEAD/COOKIE conditionals Andrew Price
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Andrew Price @ 2021-04-19 19:11 UTC (permalink / raw)
  To: cluster-devel.redhat.com

Our own gfs2_ondisk.h has leaf hints so there's no need for these
conditionals.

Signed-off-by: Andrew Price <anprice@redhat.com>
---
 configure.ac          |  2 --
 gfs2/edit/extended.c  |  9 ++-------
 gfs2/libgfs2/fs_ops.c |  6 ------
 gfs2/libgfs2/ondisk.c | 10 ----------
 4 files changed, 2 insertions(+), 25 deletions(-)

diff --git a/configure.ac b/configure.ac
index 8c60741d..5cb0770f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -126,8 +126,6 @@ AC_SUBST([udevdir], [$with_udevdir])
 AC_CHECK_HEADERS([fcntl.h libintl.h limits.h locale.h mntent.h stddef.h sys/file.h sys/ioctl.h sys/mount.h sys/time.h sys/vfs.h syslog.h termios.h])
 AC_CHECK_HEADER([linux/fs.h], [], [AC_MSG_ERROR([Unable to find linux/fs.h])])
 AC_CHECK_HEADER([linux/limits.h], [], [AC_MSG_ERROR([Unable to find linux/limits.h])])
-AC_CHECK_MEMBER([struct gfs2_leaf.lf_inode],[AC_DEFINE([GFS2_HAS_LEAF_HINTS],[],[Leaf block hints])],
-                [], [[#include <linux/gfs2_ondisk.h>]])
 AC_CHECK_MEMBER([struct gfs2_dirent.de_rahead],[AC_DEFINE([GFS2_HAS_DE_RAHEAD],[],[Dirent readahead field])],
                 [], [[#include <linux/gfs2_ondisk.h>]])
 AC_CHECK_MEMBER([struct gfs2_dirent.de_cookie],[AC_DEFINE([GFS2_HAS_DE_COOKIE],[],[Dirent cookie field])],
diff --git a/gfs2/edit/extended.c b/gfs2/edit/extended.c
index 64e4d31f..b8c61ee1 100644
--- a/gfs2/edit/extended.c
+++ b/gfs2/edit/extended.c
@@ -294,14 +294,9 @@ static void print_inode_type(__be16 de_type)
 	}
 }
 
-#ifdef GFS2_HAS_LEAF_HINTS
-#define LEAF_HINT_FMTS "lf_inode: 0x%llx, lf_dist: %u, " \
-                       "lf_nsec: %u, lf_sec: %llu, "
+#define LEAF_HINT_FMTS "lf_inode: 0x%"PRIx64", lf_dist: %"PRIu32", " \
+                       "lf_nsec: %"PRIu32", lf_sec: %"PRIu64", "
 #define LEAF_HINT_FIELDS(lp) lp->lf_inode, lp->lf_dist, lp->lf_nsec, lp->lf_sec,
-#else
-#define LEAF_HINT_FMTS
-#define LEAF_HINT_FIELDS(lp)
-#endif
 
 static int display_leaf(struct iinfo *ind)
 {
diff --git a/gfs2/libgfs2/fs_ops.c b/gfs2/libgfs2/fs_ops.c
index 1c580081..27fb43cb 100644
--- a/gfs2/libgfs2/fs_ops.c
+++ b/gfs2/libgfs2/fs_ops.c
@@ -1001,9 +1001,7 @@ void dir_split_leaf(struct gfs2_inode *dip, uint32_t start, uint64_t leaf_no,
 	oleaf->lf_depth = cpu_to_be16(oleaf->lf_depth);
 	nleaf->lf_depth = oleaf->lf_depth;
 
-#ifdef GFS2_HAS_LEAF_HINTS
 	nleaf->lf_inode = cpu_to_be64(dip->i_di.di_num.no_addr);
-#endif
 	dip->i_di.di_blocks++;
 	bmodified(dip->i_bh);
 
@@ -1203,9 +1201,7 @@ restart:
 				nleaf = (struct gfs2_leaf *)nbh->b_data;
 				nleaf->lf_depth = leaf->lf_depth;
 				nleaf->lf_dirent_format = cpu_to_be32(GFS2_FORMAT_DE);
-#ifdef GFS2_HAS_LEAF_HINTS
 				nleaf->lf_inode = cpu_to_be64(dip->i_di.di_num.no_addr);
-#endif
 				err = dirent_alloc(dip, nbh, len, &dent);
 				if (err)
 					return err;
@@ -1257,9 +1253,7 @@ static void dir_make_exhash(struct gfs2_inode *dip)
 	leaf = (struct gfs2_leaf *)bh->b_data;
 	leaf->lf_dirent_format = cpu_to_be32(GFS2_FORMAT_DE);
 	leaf->lf_entries = cpu_to_be16(dip->i_di.di_entries);
-#ifdef GFS2_HAS_LEAF_HINTS
 	leaf->lf_inode = cpu_to_be64(dip->i_di.di_num.no_addr);
-#endif
 	buffer_copy_tail(sdp, bh, sizeof(struct gfs2_leaf),
 			 dip->i_bh, sizeof(struct gfs2_dinode));
 
diff --git a/gfs2/libgfs2/ondisk.c b/gfs2/libgfs2/ondisk.c
index 2185fd38..dffd2221 100644
--- a/gfs2/libgfs2/ondisk.c
+++ b/gfs2/libgfs2/ondisk.c
@@ -448,15 +448,11 @@ void gfs2_leaf_in(struct gfs2_leaf *lf, char *buf)
 	CPIN_16(lf, str, lf_entries);
 	CPIN_32(lf, str, lf_dirent_format);
 	CPIN_64(lf, str, lf_next);
-#ifdef GFS2_HAS_LEAF_HINTS
 	CPIN_64(lf, str, lf_inode);
 	CPIN_32(lf, str, lf_dist);
 	CPIN_32(lf, str, lf_nsec);
 	CPIN_64(lf, str, lf_sec);
 	CPIN_08(lf, str, lf_reserved2, 40);
-#else
-	CPIN_08(lf, str, lf_reserved, 32);
-#endif
 }
 
 void gfs2_leaf_out(struct gfs2_leaf *lf, char *buf)
@@ -468,15 +464,11 @@ void gfs2_leaf_out(struct gfs2_leaf *lf, char *buf)
 	CPOUT_16(lf, str, lf_entries);
 	CPOUT_32(lf, str, lf_dirent_format);
 	CPOUT_64(lf, str, lf_next);
-#ifdef GFS2_HAS_LEAF_HINTS
 	CPOUT_64(lf, str, lf_inode);
 	CPOUT_32(lf, str, lf_dist);
 	CPOUT_32(lf, str, lf_nsec);
 	CPOUT_64(lf, str, lf_sec);
 	CPOUT_08(lf, str, lf_reserved2, 40);
-#else
-	CPOUT_08(lf, str, lf_reserved, 64);
-#endif
 }
 
 void gfs2_leaf_print(const struct gfs2_leaf *lf)
@@ -486,12 +478,10 @@ void gfs2_leaf_print(const struct gfs2_leaf *lf)
 	pv(lf, lf_entries, "%u", "0x%x");
 	pv(lf, lf_dirent_format, "%u", "0x%x");
 	pv(lf, lf_next, "%llu", "0x%llx");
-#ifdef GFS2_HAS_LEAF_HINTS
 	pv(lf, lf_inode, "%llu", "0x%llx");
 	pv(lf, lf_dist, "%u", "0x%x");
 	pv(lf, lf_nsec, "%u", "0x%x");
 	pv(lf, lf_sec, "%llu", "0x%llx");
-#endif
 }
 
 void gfs2_ea_header_in(struct gfs2_ea_header *ea, char *buf)
-- 
2.30.2



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

* [Cluster-devel] [PATCH 4/8] Remove GFS2_HAS_DE_RAHEAD/COOKIE conditionals
  2021-04-19 19:11 [Cluster-devel] [PATCH v2 0/8] gfs2-utils: Import linux/gfs2_ondisk.h Andrew Price
                   ` (2 preceding siblings ...)
  2021-04-19 19:11 ` [Cluster-devel] [PATCH 3/8] Remove GFS2_HAS_LEAF_HINTS conditionals Andrew Price
@ 2021-04-19 19:11 ` Andrew Price
  2021-04-19 19:11 ` [Cluster-devel] [PATCH 5/8] Remove GFS2_HAS_RG_SKIP conditionals Andrew Price
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Andrew Price @ 2021-04-19 19:11 UTC (permalink / raw)
  To: cluster-devel.redhat.com

Our own gfs2_ondisk.h has de_rahead and de_cookie so there's no need for
these conditionals.

Signed-off-by: Andrew Price <anprice@redhat.com>
---
 configure.ac          |  4 ----
 gfs2/edit/extended.c  |  8 ++------
 gfs2/libgfs2/meta.c   |  8 --------
 gfs2/libgfs2/ondisk.c | 16 ----------------
 4 files changed, 2 insertions(+), 34 deletions(-)

diff --git a/configure.ac b/configure.ac
index 5cb0770f..a512f9dd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -126,10 +126,6 @@ AC_SUBST([udevdir], [$with_udevdir])
 AC_CHECK_HEADERS([fcntl.h libintl.h limits.h locale.h mntent.h stddef.h sys/file.h sys/ioctl.h sys/mount.h sys/time.h sys/vfs.h syslog.h termios.h])
 AC_CHECK_HEADER([linux/fs.h], [], [AC_MSG_ERROR([Unable to find linux/fs.h])])
 AC_CHECK_HEADER([linux/limits.h], [], [AC_MSG_ERROR([Unable to find linux/limits.h])])
-AC_CHECK_MEMBER([struct gfs2_dirent.de_rahead],[AC_DEFINE([GFS2_HAS_DE_RAHEAD],[],[Dirent readahead field])],
-                [], [[#include <linux/gfs2_ondisk.h>]])
-AC_CHECK_MEMBER([struct gfs2_dirent.de_cookie],[AC_DEFINE([GFS2_HAS_DE_COOKIE],[],[Dirent cookie field])],
-                [], [[#include <linux/gfs2_ondisk.h>]])
 AC_CHECK_MEMBER([struct gfs2_rgrp.rg_skip],[AC_DEFINE([GFS2_HAS_RG_SKIP],[],[Next resource group pointer])],
                 [], [[#include <linux/gfs2_ondisk.h>]])
 AC_CHECK_MEMBER([struct gfs2_rgrp.rg_data0],[AC_DEFINE([GFS2_HAS_RG_RI_FIELDS],[],[Resource group fields duplicated from the rindex])],
diff --git a/gfs2/edit/extended.c b/gfs2/edit/extended.c
index b8c61ee1..91609bd2 100644
--- a/gfs2/edit/extended.c
+++ b/gfs2/edit/extended.c
@@ -335,18 +335,14 @@ static int display_leaf(struct iinfo *ind)
 					strcpy(edit_fmt, "%llx");
 				}
 			}
-			print_gfs2("%d/%d [%08x] %lld/%"PRId64" (0x%llx/0x%"PRIx64") +%u: ",
+			print_gfs2("%d/%d [%08x] %lld/%"PRId64" (0x%llx/0x%"PRIx64") +%"PRIu16": ",
 				   total_dirents, d + 1,
 				   ind->ii[0].dirent[d].dirent.de_hash,
 				   ind->ii[0].dirent[d].dirent.de_inum.no_formal_ino,
 				   ind->ii[0].dirent[d].block,
 				   ind->ii[0].dirent[d].dirent.de_inum.no_formal_ino,
 				   ind->ii[0].dirent[d].block,
-#ifdef GFS2_HAS_DE_RAHEAD
-				   (unsigned int)ind->ii[0].dirent[d].dirent.de_rahead
-#else
-				   0
-#endif
+				   ind->ii[0].dirent[d].dirent.de_rahead
 			);
 		}
 		print_inode_type(ind->ii[0].dirent[d].dirent.de_type);
diff --git a/gfs2/libgfs2/meta.c b/gfs2/libgfs2/meta.c
index 2be87045..d642424a 100644
--- a/gfs2/libgfs2/meta.c
+++ b/gfs2/libgfs2/meta.c
@@ -481,17 +481,9 @@ F(de_hash, .flags = LGFS2_MFF_CHECK)
 F(de_rec_len, .flags = LGFS2_MFF_BYTES)
 F(de_name_len, .flags = LGFS2_MFF_BYTES)
 F(de_type)
-#ifdef GFS2_HAS_DE_RAHEAD
 F(de_rahead)
-#ifdef GFS2_HAS_DE_COOKIE
 F(de_cookie)
 RF(pad3)
-#else
-RF(pad2)
-#endif /* GFS2_HAS_DE_COOKIE */
-#else
-RF(__pad)
-#endif /* GFS2_HAS_DE_RAHEAD */
 };
 
 #undef STRUCT
diff --git a/gfs2/libgfs2/ondisk.c b/gfs2/libgfs2/ondisk.c
index dffd2221..6e969143 100644
--- a/gfs2/libgfs2/ondisk.c
+++ b/gfs2/libgfs2/ondisk.c
@@ -404,17 +404,9 @@ void gfs2_dirent_in(struct gfs2_dirent *de, char *buf)
 	CPIN_16(de, str, de_rec_len);
 	CPIN_16(de, str, de_name_len);
 	CPIN_16(de, str, de_type);
-#ifdef GFS2_HAS_DE_RAHEAD
 	CPIN_16(de, str, de_rahead);
-#ifdef GFS2_HAS_DE_COOKIE
 	CPIN_32(de, str, de_cookie);
 	CPIN_08(de, str, pad3, 8);
-#else
-	CPIN_08(de, str, pad2, 12);
-#endif /* GFS2_HAS_DE_COOKIE */
-#else
-	CPIN_08(de, str, __pad, 14);
-#endif /* GFS2_HAS_DE_RAHEAD */
 }
 
 void gfs2_dirent_out(struct gfs2_dirent *de, char *buf)
@@ -426,17 +418,9 @@ void gfs2_dirent_out(struct gfs2_dirent *de, char *buf)
 	CPOUT_16(de, str, de_rec_len);
 	CPOUT_16(de, str, de_name_len);
 	CPOUT_16(de, str, de_type);
-#ifdef GFS2_HAS_DE_RAHEAD
 	CPOUT_16(de, str, de_rahead);
-#ifdef GFS2_HAS_DE_COOKIE
 	CPOUT_32(de, str, de_cookie);
 	CPOUT_08(de, str, pad3, 8);
-#else
-	CPOUT_08(de, str, pad2, 12);
-#endif /* GFS2_HAS_DE_COOKIE */
-#else
-	CPOUT_08(de, str, __pad, 14);
-#endif /* GFS2_HAS_DE_RAHEAD */
 }
 
 void gfs2_leaf_in(struct gfs2_leaf *lf, char *buf)
-- 
2.30.2



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

* [Cluster-devel] [PATCH 5/8] Remove GFS2_HAS_RG_SKIP conditionals
  2021-04-19 19:11 [Cluster-devel] [PATCH v2 0/8] gfs2-utils: Import linux/gfs2_ondisk.h Andrew Price
                   ` (3 preceding siblings ...)
  2021-04-19 19:11 ` [Cluster-devel] [PATCH 4/8] Remove GFS2_HAS_DE_RAHEAD/COOKIE conditionals Andrew Price
@ 2021-04-19 19:11 ` Andrew Price
  2021-04-19 19:11 ` [Cluster-devel] [PATCH 6/8] Remove GFS2_HAS_RG_RI_FIELDS conditionals Andrew Price
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Andrew Price @ 2021-04-19 19:11 UTC (permalink / raw)
  To: cluster-devel.redhat.com

Our own gfs2_ondisk.h has rg_skip so there's no need for these
conditionals.

Signed-off-by: Andrew Price <anprice@redhat.com>
---
 configure.ac          |  2 --
 gfs2/libgfs2/meta.c   |  4 ----
 gfs2/libgfs2/ondisk.c | 12 ------------
 gfs2/libgfs2/rgrp.c   |  2 --
 4 files changed, 20 deletions(-)

diff --git a/configure.ac b/configure.ac
index a512f9dd..31cb3e49 100644
--- a/configure.ac
+++ b/configure.ac
@@ -126,8 +126,6 @@ AC_SUBST([udevdir], [$with_udevdir])
 AC_CHECK_HEADERS([fcntl.h libintl.h limits.h locale.h mntent.h stddef.h sys/file.h sys/ioctl.h sys/mount.h sys/time.h sys/vfs.h syslog.h termios.h])
 AC_CHECK_HEADER([linux/fs.h], [], [AC_MSG_ERROR([Unable to find linux/fs.h])])
 AC_CHECK_HEADER([linux/limits.h], [], [AC_MSG_ERROR([Unable to find linux/limits.h])])
-AC_CHECK_MEMBER([struct gfs2_rgrp.rg_skip],[AC_DEFINE([GFS2_HAS_RG_SKIP],[],[Next resource group pointer])],
-                [], [[#include <linux/gfs2_ondisk.h>]])
 AC_CHECK_MEMBER([struct gfs2_rgrp.rg_data0],[AC_DEFINE([GFS2_HAS_RG_RI_FIELDS],[],[Resource group fields duplicated from the rindex])],
                 [], [[#include <linux/gfs2_ondisk.h>]])
 AC_CHECK_MEMBER([struct gfs2_log_header.lh_crc],[AC_DEFINE([GFS2_HAS_LH_V2],[],[v2 log header format])],
diff --git a/gfs2/libgfs2/meta.c b/gfs2/libgfs2/meta.c
index d642424a..c209c70a 100644
--- a/gfs2/libgfs2/meta.c
+++ b/gfs2/libgfs2/meta.c
@@ -225,11 +225,7 @@ MH(rg_header)
 F(rg_flags)
 F(rg_free, .flags = LGFS2_MFF_FSBLOCKS)
 F(rg_dinodes, .flags = LGFS2_MFF_FSBLOCKS)
-#ifdef GFS2_HAS_RG_SKIP
 FP(rg_skip, .points_to = (1 << LGFS2_MT_GFS2_RGRP))
-#else
-RF(__pad)
-#endif
 F(rg_igeneration)
 #ifdef GFS2_HAS_RG_RI_FIELDS
 FP(rg_data0, .points_to = ANY_GFS2_BLOCK|(1 << LGFS2_MT_FREE))
diff --git a/gfs2/libgfs2/ondisk.c b/gfs2/libgfs2/ondisk.c
index 6e969143..cf81005e 100644
--- a/gfs2/libgfs2/ondisk.c
+++ b/gfs2/libgfs2/ondisk.c
@@ -208,11 +208,7 @@ void gfs2_rgrp_in(struct gfs2_rgrp *rg, char *buf)
 	CPIN_32(rg, str, rg_flags);
 	CPIN_32(rg, str, rg_free);
 	CPIN_32(rg, str, rg_dinodes);
-#ifdef GFS2_HAS_RG_SKIP
 	CPIN_32(rg, str, rg_skip);
-#else
-	CPIN_32(rg, str, __pad);
-#endif
 	CPIN_64(rg, str, rg_igeneration);
 #ifdef GFS2_HAS_RG_RI_FIELDS
 	CPIN_64(rg, str, rg_data0);
@@ -231,11 +227,7 @@ void gfs2_rgrp_out(const struct gfs2_rgrp *rg, char *buf)
 	CPOUT_32(rg, str, rg_flags);
 	CPOUT_32(rg, str, rg_free);
 	CPOUT_32(rg, str, rg_dinodes);
-#ifdef GFS2_HAS_RG_SKIP
 	CPOUT_32(rg, str, rg_skip);
-#else
-	CPOUT_32(rg, str, __pad);
-#endif
 	CPOUT_64(rg, str, rg_igeneration);
 #ifdef GFS2_HAS_RG_RI_FIELDS
 	CPOUT_64(rg, str, rg_data0);
@@ -254,11 +246,7 @@ void gfs2_rgrp_print(const struct gfs2_rgrp *rg)
 	pv(rg, rg_flags, "%u", "0x%x");
 	pv(rg, rg_free, "%u", "0x%x");
 	pv(rg, rg_dinodes, "%u", "0x%x");
-#ifdef GFS2_HAS_RG_SKIP
 	pv(rg, rg_skip, "%u", "0x%x");
-#else
-	pv(rg, __pad, "%u", "0x%x");
-#endif
 	pv(rg, rg_igeneration, "%llu", "0x%llx");
 #ifdef GFS2_HAS_RG_RI_FIELDS
 	pv(rg, rg_data0, "%llu", "0x%llx");
diff --git a/gfs2/libgfs2/rgrp.c b/gfs2/libgfs2/rgrp.c
index 75fd0ba3..f5eb88c9 100644
--- a/gfs2/libgfs2/rgrp.c
+++ b/gfs2/libgfs2/rgrp.c
@@ -673,9 +673,7 @@ lgfs2_rgrp_t lgfs2_rgrps_append(lgfs2_rgrps_t rgs, struct gfs2_rindex *entry, ui
 	rg->rg.rg_header.mh_type = GFS2_METATYPE_RG;
 	rg->rg.rg_header.mh_format = GFS2_FORMAT_RG;
 	rg->rg.rg_free = rg->ri.ri_data;
-#ifdef GFS2_HAS_RG_SKIP
 	rg->rg.rg_skip = rg_skip;
-#endif
 #ifdef GFS2_HAS_RG_RI_FIELDS
 	rg->rg.rg_data0 = rg->ri.ri_data0;
 	rg->rg.rg_data = rg->ri.ri_data;
-- 
2.30.2



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

* [Cluster-devel] [PATCH 6/8] Remove GFS2_HAS_RG_RI_FIELDS conditionals
  2021-04-19 19:11 [Cluster-devel] [PATCH v2 0/8] gfs2-utils: Import linux/gfs2_ondisk.h Andrew Price
                   ` (4 preceding siblings ...)
  2021-04-19 19:11 ` [Cluster-devel] [PATCH 5/8] Remove GFS2_HAS_RG_SKIP conditionals Andrew Price
@ 2021-04-19 19:11 ` Andrew Price
  2021-04-19 19:11 ` [Cluster-devel] [PATCH 7/8] Remove GFS2_HAS_LH_V2 conditionals Andrew Price
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 16+ messages in thread
From: Andrew Price @ 2021-04-19 19:11 UTC (permalink / raw)
  To: cluster-devel.redhat.com

Our own gfs2_ondisk.h has the new rgrp fields so there's no need for
these conditionals.

Signed-off-by: Andrew Price <anprice@redhat.com>
---
 configure.ac          | 2 --
 gfs2/libgfs2/meta.c   | 2 --
 gfs2/libgfs2/ondisk.c | 8 --------
 gfs2/libgfs2/rgrp.c   | 6 ------
 4 files changed, 18 deletions(-)

diff --git a/configure.ac b/configure.ac
index 31cb3e49..e356199c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -126,8 +126,6 @@ AC_SUBST([udevdir], [$with_udevdir])
 AC_CHECK_HEADERS([fcntl.h libintl.h limits.h locale.h mntent.h stddef.h sys/file.h sys/ioctl.h sys/mount.h sys/time.h sys/vfs.h syslog.h termios.h])
 AC_CHECK_HEADER([linux/fs.h], [], [AC_MSG_ERROR([Unable to find linux/fs.h])])
 AC_CHECK_HEADER([linux/limits.h], [], [AC_MSG_ERROR([Unable to find linux/limits.h])])
-AC_CHECK_MEMBER([struct gfs2_rgrp.rg_data0],[AC_DEFINE([GFS2_HAS_RG_RI_FIELDS],[],[Resource group fields duplicated from the rindex])],
-                [], [[#include <linux/gfs2_ondisk.h>]])
 AC_CHECK_MEMBER([struct gfs2_log_header.lh_crc],[AC_DEFINE([GFS2_HAS_LH_V2],[],[v2 log header format])],
                 [], [[#include <linux/gfs2_ondisk.h>]])
 
diff --git a/gfs2/libgfs2/meta.c b/gfs2/libgfs2/meta.c
index c209c70a..771b1f13 100644
--- a/gfs2/libgfs2/meta.c
+++ b/gfs2/libgfs2/meta.c
@@ -227,12 +227,10 @@ F(rg_free, .flags = LGFS2_MFF_FSBLOCKS)
 F(rg_dinodes, .flags = LGFS2_MFF_FSBLOCKS)
 FP(rg_skip, .points_to = (1 << LGFS2_MT_GFS2_RGRP))
 F(rg_igeneration)
-#ifdef GFS2_HAS_RG_RI_FIELDS
 FP(rg_data0, .points_to = ANY_GFS2_BLOCK|(1 << LGFS2_MT_FREE))
 F(rg_data, .flags = LGFS2_MFF_FSBLOCKS)
 F(rg_bitbytes, .flags = LGFS2_MFF_BYTES)
 F(rg_crc, .flags = LGFS2_MFF_CHECK)
-#endif
 RF(rg_reserved)
 };
 
diff --git a/gfs2/libgfs2/ondisk.c b/gfs2/libgfs2/ondisk.c
index cf81005e..157f3358 100644
--- a/gfs2/libgfs2/ondisk.c
+++ b/gfs2/libgfs2/ondisk.c
@@ -210,12 +210,10 @@ void gfs2_rgrp_in(struct gfs2_rgrp *rg, char *buf)
 	CPIN_32(rg, str, rg_dinodes);
 	CPIN_32(rg, str, rg_skip);
 	CPIN_64(rg, str, rg_igeneration);
-#ifdef GFS2_HAS_RG_RI_FIELDS
 	CPIN_64(rg, str, rg_data0);
 	CPIN_32(rg, str, rg_data);
 	CPIN_32(rg, str, rg_bitbytes);
 	CPIN_32(rg, str, rg_crc);
-#endif
 	CPIN_08(rg, str, rg_reserved, sizeof(rg->rg_reserved));
 }
 
@@ -229,15 +227,11 @@ void gfs2_rgrp_out(const struct gfs2_rgrp *rg, char *buf)
 	CPOUT_32(rg, str, rg_dinodes);
 	CPOUT_32(rg, str, rg_skip);
 	CPOUT_64(rg, str, rg_igeneration);
-#ifdef GFS2_HAS_RG_RI_FIELDS
 	CPOUT_64(rg, str, rg_data0);
 	CPOUT_32(rg, str, rg_data);
 	CPOUT_32(rg, str, rg_bitbytes);
 	CPOUT_08(rg, str, rg_reserved, sizeof(rg->rg_reserved));
 	lgfs2_rgrp_crc_set(buf);
-#else
-	CPOUT_08(rg, str, rg_reserved, sizeof(rg->rg_reserved));
-#endif
 }
 
 void gfs2_rgrp_print(const struct gfs2_rgrp *rg)
@@ -248,12 +242,10 @@ void gfs2_rgrp_print(const struct gfs2_rgrp *rg)
 	pv(rg, rg_dinodes, "%u", "0x%x");
 	pv(rg, rg_skip, "%u", "0x%x");
 	pv(rg, rg_igeneration, "%llu", "0x%llx");
-#ifdef GFS2_HAS_RG_RI_FIELDS
 	pv(rg, rg_data0, "%llu", "0x%llx");
 	pv(rg, rg_data, "%u", "0x%x");
 	pv(rg, rg_bitbytes, "%u", "0x%x");
 	pv(rg, rg_crc, "%u", "0x%x");
-#endif
 }
 
 void gfs2_quota_in(struct gfs2_quota *qu, char *buf)
diff --git a/gfs2/libgfs2/rgrp.c b/gfs2/libgfs2/rgrp.c
index f5eb88c9..aa5eadf2 100644
--- a/gfs2/libgfs2/rgrp.c
+++ b/gfs2/libgfs2/rgrp.c
@@ -156,7 +156,6 @@ void lgfs2_rgrp_bitbuf_free(lgfs2_rgrp_t rg)
 int lgfs2_rgrp_crc_check(char *buf)
 {
 	int ret = 0;
-#ifdef GFS2_HAS_RG_RI_FIELDS
 	struct gfs2_rgrp *rg = (struct gfs2_rgrp *)buf;
 	uint32_t crc = rg->rg_crc;
 
@@ -167,7 +166,6 @@ int lgfs2_rgrp_crc_check(char *buf)
 	if (be32_to_cpu(crc) != gfs2_disk_hash(buf, sizeof(struct gfs2_rgrp)))
 		ret = 1;
 	rg->rg_crc = crc;
-#endif
 	return ret;
 }
 
@@ -176,14 +174,12 @@ int lgfs2_rgrp_crc_check(char *buf)
  */
 void lgfs2_rgrp_crc_set(char *buf)
 {
-#ifdef GFS2_HAS_RG_RI_FIELDS
 	struct gfs2_rgrp *rg = (struct gfs2_rgrp *)buf;
 	uint32_t crc;
 
 	rg->rg_crc = 0;
 	crc = gfs2_disk_hash(buf, sizeof(struct gfs2_rgrp));
 	rg->rg_crc = cpu_to_be32(crc);
-#endif
 }
 
 /**
@@ -674,12 +670,10 @@ lgfs2_rgrp_t lgfs2_rgrps_append(lgfs2_rgrps_t rgs, struct gfs2_rindex *entry, ui
 	rg->rg.rg_header.mh_format = GFS2_FORMAT_RG;
 	rg->rg.rg_free = rg->ri.ri_data;
 	rg->rg.rg_skip = rg_skip;
-#ifdef GFS2_HAS_RG_RI_FIELDS
 	rg->rg.rg_data0 = rg->ri.ri_data0;
 	rg->rg.rg_data = rg->ri.ri_data;
 	rg->rg.rg_bitbytes = rg->ri.ri_bitbytes;
 	rg->rg.rg_crc = 0;
-#endif
 	compute_bitmaps(rg, rgs->sdp->bsize);
 	rg->rgrps = rgs;
 	return rg;
-- 
2.30.2



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

* [Cluster-devel] [PATCH 7/8] Remove GFS2_HAS_LH_V2 conditionals
  2021-04-19 19:11 [Cluster-devel] [PATCH v2 0/8] gfs2-utils: Import linux/gfs2_ondisk.h Andrew Price
                   ` (5 preceding siblings ...)
  2021-04-19 19:11 ` [Cluster-devel] [PATCH 6/8] Remove GFS2_HAS_RG_RI_FIELDS conditionals Andrew Price
@ 2021-04-19 19:11 ` Andrew Price
  2021-04-19 19:11 ` [Cluster-devel] [PATCH 8/8] Use PRI* when printing gfs2 structures Andrew Price
  2021-04-19 19:31 ` [Cluster-devel] [PATCH v2 0/8] gfs2-utils: Import linux/gfs2_ondisk.h Andreas Gruenbacher
  8 siblings, 0 replies; 16+ messages in thread
From: Andrew Price @ 2021-04-19 19:11 UTC (permalink / raw)
  To: cluster-devel.redhat.com

Our own gfs2_ondisk.h has v2 log headers so there's no need for these
conditionals. There aren't any users of gfs2_log_header_v1_*() functions
so fold those into gfs2_log_header*().

Signed-off-by: Andrew Price <anprice@redhat.com>
---
 configure.ac              |  2 --
 gfs2/libgfs2/libgfs2.h    |  3 ---
 gfs2/libgfs2/meta.c       |  4 ----
 gfs2/libgfs2/ondisk.c     | 35 +++--------------------------------
 gfs2/libgfs2/recovery.c   |  2 --
 gfs2/libgfs2/structures.c | 16 ++--------------
 gfs2/mkfs/main_jadd.c     |  9 +--------
 7 files changed, 6 insertions(+), 65 deletions(-)

diff --git a/configure.ac b/configure.ac
index e356199c..bb85d65c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -126,8 +126,6 @@ AC_SUBST([udevdir], [$with_udevdir])
 AC_CHECK_HEADERS([fcntl.h libintl.h limits.h locale.h mntent.h stddef.h sys/file.h sys/ioctl.h sys/mount.h sys/time.h sys/vfs.h syslog.h termios.h])
 AC_CHECK_HEADER([linux/fs.h], [], [AC_MSG_ERROR([Unable to find linux/fs.h])])
 AC_CHECK_HEADER([linux/limits.h], [], [AC_MSG_ERROR([Unable to find linux/limits.h])])
-AC_CHECK_MEMBER([struct gfs2_log_header.lh_crc],[AC_DEFINE([GFS2_HAS_LH_V2],[],[v2 log header format])],
-                [], [[#include <linux/gfs2_ondisk.h>]])
 
 # *FLAGS handling
 ENV_CFLAGS="$CFLAGS"
diff --git a/gfs2/libgfs2/libgfs2.h b/gfs2/libgfs2/libgfs2.h
index 6346b74a..b59b72b7 100644
--- a/gfs2/libgfs2/libgfs2.h
+++ b/gfs2/libgfs2/libgfs2.h
@@ -715,9 +715,7 @@ extern void gfs2_dirent_out(struct gfs2_dirent *de, char *buf);
 extern void gfs2_leaf_in(struct gfs2_leaf *lf, char *buf);
 extern void gfs2_leaf_out(struct gfs2_leaf *lf, char *buf);
 extern void gfs2_ea_header_in(struct gfs2_ea_header *ea, char *buf);
-extern void gfs2_log_header_v1_in(struct gfs2_log_header *lh, char *buf);
 extern void gfs2_log_header_in(struct gfs2_log_header *lh, char *buf);
-extern void gfs2_log_header_v1_out(struct gfs2_log_header *lh, char *buf);
 extern void gfs2_log_header_out(struct gfs2_log_header *lh, char *buf);
 extern void gfs2_log_descriptor_in(struct gfs2_log_descriptor *ld, char *buf);
 extern void gfs2_log_descriptor_out(struct gfs2_log_descriptor *ld, char *buf);
@@ -737,7 +735,6 @@ extern void gfs2_quota_print(const struct gfs2_quota *qu);
 extern void gfs2_dinode_print(const struct gfs2_dinode *di);
 extern void gfs2_leaf_print(const struct gfs2_leaf *lf);
 extern void gfs2_ea_header_print(const struct gfs2_ea_header *ea, char *name);
-extern void gfs2_log_header_v1_print(const struct gfs2_log_header *lh);
 extern void gfs2_log_header_print(const struct gfs2_log_header *lh);
 extern void gfs2_log_descriptor_print(const struct gfs2_log_descriptor *ld);
 extern void gfs2_statfs_change_print(const struct gfs2_statfs_change *sc);
diff --git a/gfs2/libgfs2/meta.c b/gfs2/libgfs2/meta.c
index 771b1f13..db5f37b1 100644
--- a/gfs2/libgfs2/meta.c
+++ b/gfs2/libgfs2/meta.c
@@ -69,7 +69,6 @@ const unsigned lgfs2_di_flag_size = ARRAY_SIZE(lgfs2_di_flags);
 
 const struct lgfs2_symbolic lgfs2_lh_flags[] = {
 PREFIX_SYM(GFS2_LOG_HEAD_, UNMOUNT)
-#ifdef GFS2_HAS_LH_V2
 PREFIX_SYM(GFS2_LOG_HEAD_FLUSH_, NORMAL)
 PREFIX_SYM(GFS2_LOG_HEAD_FLUSH_, SYNC)
 PREFIX_SYM(GFS2_LOG_HEAD_FLUSH_, SHUTDOWN)
@@ -97,7 +96,6 @@ PREFIX_SYM(GFS2_LFC_, EVICT_INODE)
 PREFIX_SYM(GFS2_LFC_, TRANS_END)
 PREFIX_SYM(GFS2_LFC_, LOGD_JFLUSH_REQD)
 PREFIX_SYM(GFS2_LFC_, LOGD_AIL_FLUSH_REQD)
-#endif
 };
 
 const unsigned int lgfs2_lh_flag_size = ARRAY_SIZE(lgfs2_lh_flags);
@@ -381,7 +379,6 @@ F(lh_flags, .flags = LGFS2_MFF_MASK, .symtab = lgfs2_lh_flags, .nsyms = ARRAY_SI
 F(lh_tail)
 F(lh_blkno)
 F(lh_hash, .flags = LGFS2_MFF_CHECK)
-#ifdef GFS2_HAS_LH_V2
 F(lh_crc, .flags = LGFS2_MFF_CHECK)
 F(lh_nsec, .flags = LGFS2_MFF_NSECS)
 F(lh_sec, .flags = LGFS2_MFF_SECS)
@@ -392,7 +389,6 @@ FP(lh_quota_addr, .points_to = (1 << LGFS2_MT_GFS2_DINODE))
 F(lh_local_total, .flags = LGFS2_MFF_FSBLOCKS)
 F(lh_local_free, .flags = LGFS2_MFF_FSBLOCKS)
 F(lh_local_dinodes, .flags = LGFS2_MFF_FSBLOCKS)
-#endif
 };
 
 #undef STRUCT
diff --git a/gfs2/libgfs2/ondisk.c b/gfs2/libgfs2/ondisk.c
index 157f3358..0d68de8f 100644
--- a/gfs2/libgfs2/ondisk.c
+++ b/gfs2/libgfs2/ondisk.c
@@ -476,7 +476,7 @@ void gfs2_ea_header_print(const struct gfs2_ea_header *ea, char *name)
 	print_it("  name", "%s", NULL, buf);
 }
 
-void gfs2_log_header_v1_in(struct gfs2_log_header *lh, char *buf)
+void gfs2_log_header_in(struct gfs2_log_header *lh, char *buf)
 {
 	struct gfs2_log_header *str = (struct gfs2_log_header *)buf;
 
@@ -486,15 +486,6 @@ void gfs2_log_header_v1_in(struct gfs2_log_header *lh, char *buf)
 	CPIN_32(lh, str, lh_tail);
 	CPIN_32(lh, str, lh_blkno);
 	CPIN_32(lh, str, lh_hash);
-}
-
-void gfs2_log_header_in(struct gfs2_log_header *lh, char *buf)
-{
-	gfs2_log_header_v1_in(lh, buf);
-#ifdef GFS2_HAS_LH_V2
-	{
-	struct gfs2_log_header *str = (struct gfs2_log_header *)buf;
-
 	CPIN_32(lh, str, lh_crc);
 	CPIN_32(lh, str, lh_nsec);
 	CPIN_64(lh, str, lh_sec);
@@ -505,11 +496,9 @@ void gfs2_log_header_in(struct gfs2_log_header *lh, char *buf)
 	CPIN_64(lh, str, lh_local_total);
 	CPIN_64(lh, str, lh_local_free);
 	CPIN_64(lh, str, lh_local_dinodes);
-	}
-#endif
 }
 
-void gfs2_log_header_v1_out(struct gfs2_log_header *lh, char *buf)
+void gfs2_log_header_out(struct gfs2_log_header *lh, char *buf)
 {
 	struct gfs2_log_header *str = (struct gfs2_log_header *)buf;
 
@@ -519,15 +508,6 @@ void gfs2_log_header_v1_out(struct gfs2_log_header *lh, char *buf)
 	CPOUT_32(lh, str, lh_tail);
 	CPOUT_32(lh, str, lh_blkno);
 	CPOUT_32(lh, str, lh_hash);
-}
-
-void gfs2_log_header_out(struct gfs2_log_header *lh, char *buf)
-{
-	gfs2_log_header_v1_out(lh, buf);
-#ifdef GFS2_HAS_LH_V2
-	{
-	struct gfs2_log_header *str = (struct gfs2_log_header *)buf;
-
 	CPOUT_32(lh, str, lh_crc);
 	CPOUT_32(lh, str, lh_nsec);
 	CPOUT_64(lh, str, lh_sec);
@@ -538,11 +518,9 @@ void gfs2_log_header_out(struct gfs2_log_header *lh, char *buf)
 	CPOUT_64(lh, str, lh_local_total);
 	CPOUT_64(lh, str, lh_local_free);
 	CPOUT_64(lh, str, lh_local_dinodes);
-	}
-#endif
 }
 
-void gfs2_log_header_v1_print(const struct gfs2_log_header *lh)
+void gfs2_log_header_print(const struct gfs2_log_header *lh)
 {
 	gfs2_meta_header_print(&lh->lh_header);
 	pv(lh, lh_sequence, "%llu", "0x%llx");
@@ -550,12 +528,6 @@ void gfs2_log_header_v1_print(const struct gfs2_log_header *lh)
 	pv(lh, lh_tail, "%u", "0x%x");
 	pv(lh, lh_blkno, "%u", "0x%x");
 	pv(lh, lh_hash, "0x%.8X", NULL);
-}
-
-void gfs2_log_header_print(const struct gfs2_log_header *lh)
-{
-	gfs2_log_header_v1_print(lh);
-#ifdef GFS2_HAS_LH_V2
 	pv(lh, lh_crc, "0x%.8X", NULL);
 	pv(lh, lh_nsec, "%u", "0x%x");
 	pv(lh, lh_sec, "%llu", "0x%llx");
@@ -566,7 +538,6 @@ void gfs2_log_header_print(const struct gfs2_log_header *lh)
 	pv(lh, lh_local_total, "%lld", "0x%llx");
 	pv(lh, lh_local_free, "%lld", "0x%llx");
 	pv(lh, lh_local_dinodes, "%lld", "0x%llx");
-#endif
 }
 
 void gfs2_log_descriptor_in(struct gfs2_log_descriptor *ld, char *buf)
diff --git a/gfs2/libgfs2/recovery.c b/gfs2/libgfs2/recovery.c
index b711cdfa..78136ac2 100644
--- a/gfs2/libgfs2/recovery.c
+++ b/gfs2/libgfs2/recovery.c
@@ -72,9 +72,7 @@ int get_log_header(struct gfs2_inode *ip, unsigned int blk,
 	crc = lgfs2_log_header_crc(bh->b_data, ip->i_sbd->bsize);
 	gfs2_log_header_in(&lh, bh->b_data);
 	brelse(bh);
-#ifdef GFS2_HAS_LH_V2
 	lh_crc = lh.lh_crc;
-#endif
 	if (error || lh.lh_blkno != blk || lh.lh_hash != hash)
 		return 1;
 	/* Don't check the crc if it's zero, as it is in pre-v2 log headers */
diff --git a/gfs2/libgfs2/structures.c b/gfs2/libgfs2/structures.c
index 789b9a63..d5d12ef1 100644
--- a/gfs2/libgfs2/structures.c
+++ b/gfs2/libgfs2/structures.c
@@ -107,15 +107,11 @@ uint32_t lgfs2_log_header_hash(char *buf)
 
 uint32_t lgfs2_log_header_crc(char *buf, unsigned bsize)
 {
-#ifdef GFS2_HAS_LH_V2
 	/* lh_crc CRCs the rest of the block starting after lh_crc */
 	const off_t v1_end = offsetof(struct gfs2_log_header, lh_hash) + 4;
 	const unsigned char *lb = (const unsigned char *)buf;
 
 	return crc32c(~0, lb + v1_end + 4, bsize - v1_end - 4);
-#else
-	return 0;
-#endif
 }
 
 /**
@@ -135,7 +131,6 @@ int lgfs2_write_journal_data(struct gfs2_inode *ip)
 		.lh_tail = 0,
 		.lh_blkno = 0,
 		.lh_hash = 0,
-#ifdef GFS2_HAS_LH_V2
 		.lh_flags = GFS2_LOG_HEAD_UNMOUNT | GFS2_LOG_HEAD_USERSPACE,
 		.lh_crc = 0,
 		.lh_nsec = 0,
@@ -146,9 +141,6 @@ int lgfs2_write_journal_data(struct gfs2_inode *ip)
 		.lh_local_total = 0,
 		.lh_local_free = 0,
 		.lh_local_dinodes = 0,
-#else
-		.lh_flags = GFS2_LOG_HEAD_UNMOUNT,
-#endif
 	};
 	struct gfs2_sbd *sdp = ip->i_sbd;
 	unsigned blocks = (ip->i_di.di_size + sdp->bsize - 1) / sdp->bsize;
@@ -170,10 +162,9 @@ int lgfs2_write_journal_data(struct gfs2_inode *ip)
 		gfs2_log_header_out(&lh, buf);
 
 		buflh->lh_hash = cpu_to_be32(lgfs2_log_header_hash(buf));
-#ifdef GFS2_HAS_LH_V2
 		buflh->lh_addr = cpu_to_be64(jblk);
 		buflh->lh_crc = cpu_to_be32(lgfs2_log_header_crc(buf, sdp->bsize));
-#endif
+
 		if (pwrite(sdp->device_fd, buf, sdp->bsize, jblk * sdp->bsize) != sdp->bsize) {
 			free(buf);
 			return -1;
@@ -230,10 +221,9 @@ int write_journal(struct gfs2_inode *jnl, unsigned bsize, unsigned int blocks)
 	lh.lh_header.mh_type = GFS2_METATYPE_LH;
 	lh.lh_header.mh_format = GFS2_FORMAT_LH;
 	lh.lh_flags = GFS2_LOG_HEAD_UNMOUNT;
-#ifdef GFS2_HAS_LH_V2
 	lh.lh_flags |= GFS2_LOG_HEAD_USERSPACE;
 	lh.lh_jinode = jnl->i_di.di_num.no_addr;
-#endif
+
 	for (x = 0; x < blocks; x++) {
 		struct gfs2_buffer_head *bh = get_file_buf(jnl, x, 1);
 		if (!bh)
@@ -253,11 +243,9 @@ int write_journal(struct gfs2_inode *jnl, unsigned bsize, unsigned int blocks)
 		gfs2_log_header_out(&lh, bh->b_data);
 		hash = lgfs2_log_header_hash(bh->b_data);
 		((struct gfs2_log_header *)bh->b_data)->lh_hash = cpu_to_be32(hash);
-#ifdef GFS2_HAS_LH_V2
 		((struct gfs2_log_header *)bh->b_data)->lh_addr = cpu_to_be64(bh->b_blocknr);
 		hash = lgfs2_log_header_crc(bh->b_data, bsize);
 		((struct gfs2_log_header *)bh->b_data)->lh_crc = cpu_to_be32(hash);
-#endif
 		bmodified(bh);
 		brelse(bh);
 
diff --git a/gfs2/mkfs/main_jadd.c b/gfs2/mkfs/main_jadd.c
index 33bd5127..bad7db25 100644
--- a/gfs2/mkfs/main_jadd.c
+++ b/gfs2/mkfs/main_jadd.c
@@ -456,7 +456,6 @@ out:
 	return ret;
 }
 
-#ifdef GFS2_HAS_LH_V2
 static uint64_t find_block_address(int fd, off_t offset, unsigned bsize)
 {
 	struct {
@@ -477,7 +476,6 @@ static uint64_t find_block_address(int fd, off_t offset, unsigned bsize)
 	}
 	return fme.fe.fe_physical / bsize;
 }
-#endif
 
 static int alloc_new_journal(int fd, unsigned bytes)
 {
@@ -551,21 +549,17 @@ static int add_j(struct gfs2_sbd *sdp, struct jadd_opts *opts)
 	lh.lh_header.mh_type = GFS2_METATYPE_LH;
 	lh.lh_header.mh_format = GFS2_FORMAT_LH;
 	lh.lh_flags = GFS2_LOG_HEAD_UNMOUNT;
-#ifdef GFS2_HAS_LH_V2
 	lh.lh_flags |= GFS2_LOG_HEAD_USERSPACE;
 	lh.lh_jinode = addr;
-#endif
+
 	for (x=0; x<blocks; x++) {
 		uint32_t hash;
-#ifdef GFS2_HAS_LH_V2
 		uint64_t blk_addr = 0;
-#endif
 		lh.lh_sequence = seq;
 		lh.lh_blkno = x;
 		gfs2_log_header_out(&lh, buf);
 		hash = lgfs2_log_header_hash(buf);
 		((struct gfs2_log_header *)buf)->lh_hash = cpu_to_be32(hash);
-#ifdef GFS2_HAS_LH_V2
 		if (!(blk_addr = find_block_address(fd, off, sdp->bsize))) {
 			error = -1;
 			goto close_fd;
@@ -573,7 +567,6 @@ static int add_j(struct gfs2_sbd *sdp, struct jadd_opts *opts)
 		((struct gfs2_log_header *)buf)->lh_addr = cpu_to_be64(blk_addr);
 		hash = lgfs2_log_header_crc(buf, sdp->bsize);
 		((struct gfs2_log_header *)buf)->lh_crc = cpu_to_be32(hash);
-#endif
 		if (write(fd, buf, sdp->bsize) != sdp->bsize) {
 			perror("add_j write");
 			error = -1;
-- 
2.30.2



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

* [Cluster-devel] [PATCH 8/8] Use PRI* when printing gfs2 structures
  2021-04-19 19:11 [Cluster-devel] [PATCH v2 0/8] gfs2-utils: Import linux/gfs2_ondisk.h Andrew Price
                   ` (6 preceding siblings ...)
  2021-04-19 19:11 ` [Cluster-devel] [PATCH 7/8] Remove GFS2_HAS_LH_V2 conditionals Andrew Price
@ 2021-04-19 19:11 ` Andrew Price
  2021-04-19 19:31 ` [Cluster-devel] [PATCH v2 0/8] gfs2-utils: Import linux/gfs2_ondisk.h Andreas Gruenbacher
  8 siblings, 0 replies; 16+ messages in thread
From: Andrew Price @ 2021-04-19 19:11 UTC (permalink / raw)
  To: cluster-devel.redhat.com

Now that we have gfs2 structs defined in terms of standard userspace
types instead of kernel types we can use these defines from inttypes.h
to print their fields in a consistent way across architectures.

Fixes a number of -Wformat warnings on x86_64.

Signed-off-by: Andrew Price <anprice@redhat.com>
---
 gfs2/edit/extended.c     |  37 ++++-----
 gfs2/edit/gfs2hex.c      |  28 +++----
 gfs2/edit/journal.c      |  13 ++-
 gfs2/fsck/fs_recovery.c  |  10 +--
 gfs2/fsck/initialize.c   |  47 ++++++-----
 gfs2/fsck/lost_n_found.c |  10 +--
 gfs2/fsck/pass1.c        |   5 +-
 gfs2/fsck/pass2.c        |   2 +-
 gfs2/fsck/rgrepair.c     |  37 ++++-----
 gfs2/libgfs2/ondisk.c    | 168 +++++++++++++++++++--------------------
 10 files changed, 170 insertions(+), 187 deletions(-)

diff --git a/gfs2/edit/extended.c b/gfs2/edit/extended.c
index 91609bd2..30e227d1 100644
--- a/gfs2/edit/extended.c
+++ b/gfs2/edit/extended.c
@@ -308,9 +308,9 @@ static int display_leaf(struct iinfo *ind)
 	if (gfs2_struct_type == GFS2_METATYPE_SB)
 		print_gfs2("The superblock has 2 directories");
 	else
-		print_gfs2("Directory block: lf_depth:%d, lf_entries:%d, "
+		print_gfs2("Directory block: lf_depth:%"PRIu16", lf_entries:%"PRIu16", "
 		           LEAF_HINT_FMTS
-			   "fmt:%d next=0x%llx (%d dirents).",
+			   "fmt:%"PRIu32" next=0x%"PRIx64" (%d dirents).",
 			   leaf->lf_depth, leaf->lf_entries,
 		           LEAF_HINT_FIELDS(leaf)
 			   leaf->lf_dirent_format,
@@ -330,12 +330,11 @@ static int display_leaf(struct iinfo *ind)
 				    line - start_line - 1 ==
 				    edit_row[dmode] - start_row[dmode]) {
 					COLORS_HIGHLIGHT;
-					sprintf(estring, "%llx",
-						(unsigned long long)ind->ii[0].dirent[d].block);
+					sprintf(estring, "%"PRIx64, ind->ii[0].dirent[d].block);
 					strcpy(edit_fmt, "%llx");
 				}
 			}
-			print_gfs2("%d/%d [%08x] %lld/%"PRId64" (0x%llx/0x%"PRIx64") +%"PRIu16": ",
+			print_gfs2("%d/%d [%08"PRIX32"] %"PRIu64"/%"PRIu64" (0x%"PRIx64"/0x%"PRIx64") +%"PRIu16": ",
 				   total_dirents, d + 1,
 				   ind->ii[0].dirent[d].dirent.de_hash,
 				   ind->ii[0].dirent[d].dirent.de_inum.no_formal_ino,
@@ -388,11 +387,9 @@ static void print_block_details(struct iinfo *ind, int level, int cur_height,
 	while (thisblk) {
 		/* read in the desired block */
 		if (pread(sbd.device_fd, tmpbuf, sbd.bsize, thisblk * sbd.bsize) != sbd.bsize) {
-			fprintf(stderr, "bad read: %s from %s:%d: block %lld "
-				"(0x%llx)\n", strerror(errno), __FUNCTION__,
-				__LINE__,
-				(unsigned long long)ind->ii[pndx].block,
-				(unsigned long long)ind->ii[pndx].block);
+			fprintf(stderr, "bad read: %s from %s:%d: block %"PRIu64
+				" (0x%"PRIx64")\n", strerror(errno), __FUNCTION__,
+				__LINE__, ind->ii[pndx].block, ind->ii[pndx].block);
 			exit(-1);
 		}
 		thisblk = 0;
@@ -428,9 +425,9 @@ static void print_block_details(struct iinfo *ind, int level, int cur_height,
 
 static void gfs_jindex_print(struct gfs_jindex *ji)
 {
-        pv((unsigned long long)ji, ji_addr, "%llu", "0x%llx");
-        pv(ji, ji_nsegment, "%u", "0x%x");
-        pv(ji, ji_pad, "%u", "0x%x");
+        pv(ji, ji_addr, "%"PRIu64, "0x%"PRIx64);
+        pv(ji, ji_nsegment, "%"PRIu32, "0x%"PRIx32);
+        pv(ji, ji_pad, "%"PRIu32, "0x%"PRIx32);
 }
 
 static int print_gfs_jindex(struct gfs2_inode *dij)
@@ -440,7 +437,7 @@ static int print_gfs_jindex(struct gfs2_inode *dij)
 	char jbuf[sizeof(struct gfs_jindex)];
 
 	start_line = line;
-	print_gfs2("Journal index entries found: %lld.",
+	print_gfs2("Journal index entries found: %"PRIu64".",
 		   dij->i_di.di_size / sizeof(struct gfs_jindex));
 	eol(0);
 	lines_per_row[dmode] = 4;
@@ -458,7 +455,7 @@ static int print_gfs_jindex(struct gfs2_inode *dij)
 			if (edit_row[dmode] == print_entry_ndx) {
 				COLORS_HIGHLIGHT;
 				strcpy(efield, "ji_addr");
-				sprintf(estring, "%llx", (unsigned long long)ji.ji_addr);
+				sprintf(estring, "%"PRIx64, ji.ji_addr);
 			}
 			print_gfs2("Journal #%d", print_entry_ndx);
 			eol(0);
@@ -482,7 +479,7 @@ static int print_gfs2_jindex(void)
 		if (strncmp(indirect->ii[0].dirent[d].filename, "journal", 7))
 			continue;
 		ip = lgfs2_inode_read(&sbd, indirect->ii[0].dirent[d].block);
-		print_gfs2("%s: 0x%-5"PRIx64" %lldMB ",
+		print_gfs2("%s: 0x%-5"PRIx64" %"PRIu64"MB ",
 			   indirect->ii[0].dirent[d].filename,
 			   indirect->ii[0].dirent[d].block,
 			   ip->i_di.di_size / 1048576);
@@ -509,7 +506,7 @@ static int parse_rindex(struct gfs2_inode *dip, int print_rindex)
 	char highlighted_addr[32];
 
 	start_line = line;
-	print_gfs2("RG index entries found: %lld.", dip->i_di.di_size /
+	print_gfs2("RG index entries found: %"PRIu64".", dip->i_di.di_size /
 		   sizeof(struct gfs2_rindex));
 	eol(0);
 	lines_per_row[dmode] = 6;
@@ -531,11 +528,11 @@ static int parse_rindex(struct gfs2_inode *dip, int print_rindex)
 			 termlines - start_line - 2)) {
 			if (edit_row[dmode] == print_entry_ndx) {
 				COLORS_HIGHLIGHT;
-				sprintf(highlighted_addr, "%llx", (unsigned long long)ri.ri_addr);
+				sprintf(highlighted_addr, "%"PRIx64, ri.ri_addr);
 			}
 			print_gfs2("RG #%d", print_entry_ndx);
 			if (!print_rindex)
-				print_gfs2(" located at: %llu (0x%llx)",
+				print_gfs2(" located at: %"PRIu64" (0x%"PRIx64")",
 					   ri.ri_addr, ri.ri_addr);
 			eol(0);
 			if (edit_row[dmode] == print_entry_ndx)
@@ -619,7 +616,7 @@ static int print_quota(struct gfs2_inode *diq)
 	
 	print_gfs2("quota file contents:");
 	eol(0);
-	print_gfs2("quota entries found: %lld.", diq->i_di.di_size / sizeof(q));
+	print_gfs2("quota entries found: %"PRIu64".", diq->i_di.di_size / sizeof(q));
 	eol(0);
 	for (i=0; ; i++) {
 		error = gfs2_readi(diq, (void *)&qbuf, i * sizeof(q), sizeof(qbuf));
diff --git a/gfs2/edit/gfs2hex.c b/gfs2/edit/gfs2hex.c
index 5e6760f2..5e79009a 100644
--- a/gfs2/edit/gfs2hex.c
+++ b/gfs2/edit/gfs2hex.c
@@ -372,10 +372,10 @@ static void gfs2_inum_print2(const char *title,struct gfs2_inum *no)
 	}
 	else
 		printf("  %s:",title);
-	pv2(no, no_formal_ino, "%llu", "0x%llx");
+	pv2(no, no_formal_ino, "%"PRIu64, "0x%"PRIx64);
 	if (!termlines)
 		printf("        addr:");
-	pv2(no, no_addr, "%llu", "0x%llx");
+	pv2(no, no_addr, "%"PRIu64, "0x%"PRIx64);
 }
 
 /**
@@ -388,15 +388,15 @@ static void gfs2_sb_print2(struct gfs2_sb *sbp2)
 
 	gfs2_meta_header_print(&sbp2->sb_header);
 
-	pv(sbp2, sb_fs_format, "%u", "0x%x");
-	pv(sbp2, sb_multihost_format, "%u", "0x%x");
+	pv(sbp2, sb_fs_format, "%"PRIu32, "0x%"PRIx32);
+	pv(sbp2, sb_multihost_format, "%"PRIu32, "0x%"PRIx32);
 
 	if (sbd.gfs1)
-		pv(sbd1, sb_flags, "%u", "0x%x");
-	pv(sbp2, sb_bsize, "%u", "0x%x");
-	pv(sbp2, sb_bsize_shift, "%u", "0x%x");
+		pv(sbd1, sb_flags, "%"PRIu32, "0x%"PRIx32);
+	pv(sbp2, sb_bsize, "%"PRIu32, "0x%"PRIx32);
+	pv(sbp2, sb_bsize_shift, "%"PRIu32, "0x%"PRIx32);
 	if (sbd.gfs1) {
-		pv(sbd1, sb_seg_size, "%u", "0x%x");
+		pv(sbd1, sb_seg_size, "%"PRIu32, "0x%"PRIx32);
 		gfs2_inum_print2("jindex ino", &sbd1->sb_jindex_di);
 		gfs2_inum_print2("rindex ino", &sbd1->sb_rindex_di);
 	}
@@ -438,14 +438,14 @@ static void gfs1_rgrp_in(struct gfs_rgrp *rgrp, const char *buf)
 static void gfs1_rgrp_print(struct gfs_rgrp *rg)
 {
         gfs2_meta_header_print(&rg->rg_header);
-        pv(rg, rg_flags, "%u", "0x%x");
-        pv(rg, rg_free, "%u", "0x%x");
-        pv(rg, rg_useddi, "%u", "0x%x");
-        pv(rg, rg_freedi, "%u", "0x%x");
+        pv(rg, rg_flags, "%"PRIu32, "0x%"PRIx32);
+        pv(rg, rg_free, "%"PRIu32, "0x%"PRIx32);
+        pv(rg, rg_useddi, "%"PRIu32, "0x%"PRIx32);
+        pv(rg, rg_freedi, "%"PRIu32, "0x%"PRIx32);
         gfs2_inum_print(&rg->rg_freedi_list);
 
-        pv(rg, rg_usedmeta, "%u", "0x%x");
-        pv(rg, rg_freemeta, "%u", "0x%x");
+        pv(rg, rg_usedmeta, "%"PRIu32, "0x%"PRIx32);
+        pv(rg, rg_freemeta, "%"PRIu32, "0x%"PRIx32);
 }
 
 int display_gfs2(char *buf)
diff --git a/gfs2/edit/journal.c b/gfs2/edit/journal.c
index 313f18f2..859919aa 100644
--- a/gfs2/edit/journal.c
+++ b/gfs2/edit/journal.c
@@ -534,7 +534,7 @@ void dump_journal(const char *journal, int tblk)
 			uint64_t o;
 			int bmap = 0;
 
-			print_gfs2("rgd: 0x%llx for 0x%x, ", rgd->ri.ri_addr,
+			print_gfs2("rgd: 0x%"PRIx64" for 0x%"PRIx32", ", rgd->ri.ri_addr,
 				   rgd->ri.ri_length);
 			o = tblk - rgd->ri.ri_data0;
 			if (o >= (rgd->bits->bi_start +
@@ -544,8 +544,7 @@ void dump_journal(const char *journal, int tblk)
 					* GFS2_NBBY;
 			bmap = o / sbd.sd_blocks_per_bitmap;
 			bitblk = rgd->ri.ri_addr + bmap;
-			print_gfs2("bitmap: %d, bitblk: 0x%llx", bmap,
-				   (unsigned long long)bitblk);
+			print_gfs2("bitmap: %d, bitblk: 0x%"PRIx64, bmap, bitblk);
 			eol(0);
 		}
 
@@ -597,8 +596,8 @@ void dump_journal(const char *journal, int tblk)
 				check_journal_wrap(lh1.lh_sequence,
 						   &highest_seq);
 				print_gfs2("0x%"PRIx64" (j+%4"PRIx64"): Log header: "
-					   "Flags:%x, Seq: 0x%llx, 1st: 0x%llx, "
-					   "tail: 0x%llx, last: 0x%llx",
+					   "Flags:%"PRIx32", Seq: 0x%"PRIx64", 1st: 0x%"PRIx64", "
+					   "tail: 0x%"PRIx64", last: 0x%"PRIx64,
 					   abs_block, jb + wrappt,
 					   lh1.lh_flags, lh1.lh_sequence,
 					   lh1.lh_first, lh1.lh_tail,
@@ -612,8 +611,8 @@ void dump_journal(const char *journal, int tblk)
 				lgfs2_field_str(flags_str, sizeof(flags_str),
 						buf, lh_flags_field,
 						(dmode == HEX_MODE));
-				print_gfs2("0x%"PRIx64" (j+%4"PRIx64"): Log header: Seq"
-					   ": 0x%llx, tail: 0x%x, blk: 0x%x [%s]",
+				print_gfs2("0x%"PRIx64" (j+%4"PRIx64"): Log header: Seq: "
+					   "0x%"PRIx64", tail: 0x%"PRIx32", blk: 0x%"PRIx32" [%s]",
 					   abs_block, ((jb + wrappt) % j_size)
 					   / sbd.bsize, lh.lh_sequence,
 					   lh.lh_tail, lh.lh_blkno,
diff --git a/gfs2/fsck/fs_recovery.c b/gfs2/fsck/fs_recovery.c
index ac6e0cee..820df1d0 100644
--- a/gfs2/fsck/fs_recovery.c
+++ b/gfs2/fsck/fs_recovery.c
@@ -428,19 +428,17 @@ static int check_journal_seq_no(struct gfs2_inode *ip, int fix)
 			prev_seq = lh.lh_sequence;
 			continue;
 		}
-		log_err( _("Journal block %u (0x%x): sequence no. 0x%llx "
+		log_err(_("Journal block %"PRIu32" (0x%"PRIx32"): sequence no. 0x%"PRIx64" "
 			   "out of order.\n"), blk, blk, lh.lh_sequence);
-		log_info( _("Low: 0x%llx, High: 0x%llx, Prev: 0x%llx\n"),
-			  (unsigned long long)lowest_seq,
-			  (unsigned long long)highest_seq,
-			  (unsigned long long)prev_seq);
+		log_info(_("Low: 0x%"PRIx64", High: 0x%"PRIx64", Prev: 0x%"PRIx64"\n"),
+		         lowest_seq, highest_seq, prev_seq);
 		seq_errors++;
 		if (!fix)
 			continue;
 		highest_seq++;
 		lh.lh_sequence = highest_seq;
 		prev_seq = lh.lh_sequence;
-		log_warn( _("Renumbering it as 0x%llx\n"), lh.lh_sequence);
+		log_warn(_("Renumbering it as 0x%"PRIx64"\n"), lh.lh_sequence);
 		block_map(ip, blk, &new, &dblock, NULL, 0);
 		bh = bread(ip->i_sbd, dblock);
 		gfs2_log_header_out(&lh, bh->b_data);
diff --git a/gfs2/fsck/initialize.c b/gfs2/fsck/initialize.c
index 58dd23d3..17f2d6cd 100644
--- a/gfs2/fsck/initialize.c
+++ b/gfs2/fsck/initialize.c
@@ -1014,7 +1014,7 @@ static void peruse_system_dinode(struct gfs2_sbd *sdp, struct gfs2_dinode *di,
 	if (di->di_num.no_formal_ino == 2) {
 		if (sdp->sd_sb.sb_master_dir.no_addr)
 			return;
-		log_warn(_("Found system master directory at: 0x%llx.\n"),
+		log_warn(_("Found system master directory at: 0x%"PRIx64".\n"),
 			 di->di_num.no_addr);
 		sdp->sd_sb.sb_master_dir.no_addr = di->di_num.no_addr;
 		return;
@@ -1029,7 +1029,7 @@ static void peruse_system_dinode(struct gfs2_sbd *sdp, struct gfs2_dinode *di,
 	     (di->di_size % sizeof(struct gfs_jindex) == 0))) {
 		if (fix_md.jiinode || is_journal_copy(ip, bh))
 			goto out_discard_ip;
-		log_warn(_("Found system jindex file at: 0x%llx\n"),
+		log_warn(_("Found system jindex file at: 0x%"PRIx64"\n"),
 			 di->di_num.no_addr);
 		fix_md.jiinode = ip;
 	} else if (!sdp->gfs1 && is_dir(di, sdp->gfs1)) {
@@ -1043,8 +1043,8 @@ static void peruse_system_dinode(struct gfs2_sbd *sdp, struct gfs2_dinode *di,
 			}
 			fix_md.jiinode = child_ip;
 			sdp->sd_sb.sb_master_dir.no_addr = di->di_num.no_addr;
-			log_warn(_("Found system master directory at: "
-				   "0x%llx\n"), di->di_num.no_addr);
+			log_warn(_("Found system master directory at: 0x%"PRIx64"\n"),
+			         di->di_num.no_addr);
 			return;
 		}
 
@@ -1055,39 +1055,38 @@ static void peruse_system_dinode(struct gfs2_sbd *sdp, struct gfs2_dinode *di,
 			inode_put(&child_ip);
 			if (fix_md.pinode || is_journal_copy(ip, bh))
 				goto out_discard_ip;
-			log_warn(_("Found system per_node directory at: "
-				   "0x%llx\n"), ip->i_di.di_num.no_addr);
+			log_warn(_("Found system per_node directory at: 0x%"PRIx64"\n"),
+			         ip->i_di.di_num.no_addr);
 			fix_md.pinode = ip;
 			error = dir_search(ip, "..", 2, NULL, &inum);
 			if (!error && inum.no_addr) {
 				sdp->sd_sb.sb_master_dir.no_addr =
 					inum.no_addr;
-				log_warn(_("From per_node\'s \'..\' I "
-					   "backtracked the master directory "
-					   "to: 0x%llx\n"), inum.no_addr);
+				log_warn(_("From per_node's '..' master directory backtracked to: "
+					   "0x%"PRIx64"\n"), inum.no_addr);
 			}
 			return;
 		}
-		log_debug(_("Unknown system directory at block 0x%llx\n"),
+		log_debug(_("Unknown system directory at block 0x%"PRIx64"\n"),
 			  di->di_num.no_addr);
 		goto out_discard_ip;
 	} else if (!sdp->gfs1 && di->di_size == 8) {
 		if (fix_md.inum || is_journal_copy(ip, bh))
 			goto out_discard_ip;
 		fix_md.inum = ip;
-		log_warn(_("Found system inum file at: 0x%llx\n"),
+		log_warn(_("Found system inum file at: 0x%"PRIx64"\n"),
 			 di->di_num.no_addr);
 	} else if (di->di_size == 24) {
 		if (fix_md.statfs || is_journal_copy(ip, bh))
 			goto out_discard_ip;
 		fix_md.statfs = ip;
-		log_warn(_("Found system statfs file at: 0x%llx\n"),
+		log_warn(_("Found system statfs file at: 0x%"PRIx64"\n"),
 			 di->di_num.no_addr);
 	} else if ((di->di_size % 96) == 0) {
 		if (fix_md.riinode || is_journal_copy(ip, bh))
 			goto out_discard_ip;
 		fix_md.riinode = ip;
-		log_warn(_("Found system rindex file at: 0x%llx\n"),
+		log_warn(_("Found system rindex file at: 0x%"PRIx64"\n"),
 			 di->di_num.no_addr);
 	} else if (!fix_md.qinode && di->di_size >= 176 &&
 		   di->di_num.no_formal_ino >= 12 &&
@@ -1095,7 +1094,7 @@ static void peruse_system_dinode(struct gfs2_sbd *sdp, struct gfs2_dinode *di,
 		if (is_journal_copy(ip, bh))
 			goto out_discard_ip;
 		fix_md.qinode = ip;
-		log_warn(_("Found system quota file at: 0x%llx\n"),
+		log_warn(_("Found system quota file at: 0x%"PRIx64"\n"),
 			 di->di_num.no_addr);
 	} else {
 out_discard_ip:
@@ -1123,17 +1122,17 @@ static void peruse_user_dinode(struct gfs2_sbd *sdp, struct gfs2_dinode *di,
 		struct gfs2_buffer_head *root_bh;
 
 		if (di->di_num.no_addr == bh->b_blocknr) {
-			log_warn(_("Found the root directory at: 0x%llx.\n"),
+			log_warn(_("Found the root directory at: 0x%"PRIx64".\n"),
 				 di->di_num.no_addr);
 			sdp->sd_sb.sb_root_dir.no_addr = di->di_num.no_addr;
 			return;
 		}
-		log_warn(_("The root dinode should be at block 0x%llx but it "
+		log_warn(_("The root dinode should be at block 0x%"PRIx64" but it "
 			   "seems to be destroyed.\n"),
-			 (unsigned long long)di->di_num.no_addr);
+			 di->di_num.no_addr);
 		log_warn(_("Found a copy of the root directory in a journal "
-			   "at block: 0x%llx.\n"),
-			 (unsigned long long)bh->b_blocknr);
+			   "at block: 0x%"PRIx64".\n"),
+			 bh->b_blocknr);
 		if (!query(_("Do you want to replace the root dinode from the "
 			     "copy? (y/n)"))) {
 			log_err(_("Damaged root dinode not fixed.\n"));
@@ -1155,7 +1154,7 @@ static void peruse_user_dinode(struct gfs2_sbd *sdp, struct gfs2_dinode *di,
 		gfs2_lookupi(ip, "..", 2, &parent_ip);
 		if (parent_ip && parent_ip->i_di.di_num.no_addr ==
 		    ip->i_di.di_num.no_addr) {
-			log_warn(_("Found the root directory at: 0x%llx\n"),
+			log_warn(_("Found the root directory at: 0x%"PRIx64"\n"),
 				 ip->i_di.di_num.no_addr);
 			sdp->sd_sb.sb_root_dir.no_addr =
 				ip->i_di.di_num.no_addr;
@@ -1171,8 +1170,8 @@ static void peruse_user_dinode(struct gfs2_sbd *sdp, struct gfs2_dinode *di,
 	error = dir_search(ip, "..", 2, NULL, &inum);
 	if (!error && inum.no_addr && inum.no_addr < possible_root) {
 			possible_root = inum.no_addr;
-			log_debug(_("Found a possible root at: 0x%llx\n"),
-				  (unsigned long long)possible_root);
+			log_debug(_("Found a possible root at: 0x%"PRIx64"\n"),
+				  possible_root);
 	}
 	inode_put(&ip);
 }
@@ -1361,7 +1360,7 @@ static int sb_repair(struct gfs2_sbd *sdp)
 	/* Step 3 - Rebuild the lock protocol and file system table name */
 	if (query(_("Okay to fix the GFS2 superblock? (y/n)"))) {
 		struct gfs2_sb sb;
-		log_info(_("Found system master directory at: 0x%llx\n"),
+		log_info(_("Found system master directory at: 0x%"PRIx64"\n"),
 			 sdp->sd_sb.sb_master_dir.no_addr);
 		sdp->master_dir = lgfs2_inode_read(sdp,
 					     sdp->sd_sb.sb_master_dir.no_addr);
@@ -1371,7 +1370,7 @@ static int sb_repair(struct gfs2_sbd *sdp)
 		}
 		sdp->master_dir->i_di.di_num.no_addr =
 			sdp->sd_sb.sb_master_dir.no_addr;
-		log_info(_("Found the root directory at: 0x%llx\n"),
+		log_info(_("Found the root directory at: 0x%"PRIx64"\n"),
 			 sdp->sd_sb.sb_root_dir.no_addr);
 		sdp->md.rooti = lgfs2_inode_read(sdp,
 					   sdp->sd_sb.sb_root_dir.no_addr);
diff --git a/gfs2/fsck/lost_n_found.c b/gfs2/fsck/lost_n_found.c
index 4d5d52c8..ebe616af 100644
--- a/gfs2/fsck/lost_n_found.c
+++ b/gfs2/fsck/lost_n_found.c
@@ -61,11 +61,11 @@ static void add_dotdot(struct gfs2_inode *ip)
 			  bmodified(dip->i_bh);
 			}
 		} else {
-			log_debug(_("Directory (0x%llx)'s link to parent "
-				    "(0x%llx) had a formal inode discrepancy: "
-				    "was 0x%llx, expected 0x%llx\n"),
-				  (unsigned long long)ip->i_di.di_num.no_addr,
-				  (unsigned long long)di->dotdot_parent.no_addr,
+			log_debug(_("Directory (0x%"PRIx64")'s link to parent "
+				    "(0x%"PRIx64") had a formal inode discrepancy: "
+				    "was 0x%"PRIx64", expected 0x%"PRIx64"\n"),
+				  ip->i_di.di_num.no_addr,
+				  di->dotdot_parent.no_addr,
 				  di->dotdot_parent.no_formal_ino,
 				  dip->i_di.di_num.no_formal_ino);
 			log_debug(_("The parent directory was not changed.\n"));
diff --git a/gfs2/fsck/pass1.c b/gfs2/fsck/pass1.c
index 88fc4dc4..70549a3a 100644
--- a/gfs2/fsck/pass1.c
+++ b/gfs2/fsck/pass1.c
@@ -2209,11 +2209,10 @@ int pass1(struct gfs2_sbd *sdp)
 			goto out;
 		}
 		next = osi_next(n);
-		log_debug("Checking metadata in resource group #%llu\n",
-				 (unsigned long long)rg_count);
+		log_debug("Checking metadata in resource group #%"PRIu64"\n", rg_count);
 		rgd = (struct rgrp_tree *)n;
 		for (i = 0; i < rgd->ri.ri_length; i++) {
-			log_debug("rgrp block %lld (0x%llx) is now marked as 'rgrp data'\n",
+			log_debug("rgrp block %"PRIu64" (0x%"PRIx64") is now marked as 'rgrp data'\n",
 				   rgd->ri.ri_addr + i, rgd->ri.ri_addr + i);
 			if (gfs2_blockmap_set(bl, rgd->ri.ri_addr + i,
 					      GFS2_BLKST_USED)) {
diff --git a/gfs2/fsck/pass2.c b/gfs2/fsck/pass2.c
index 19b8e70d..b6a047c3 100644
--- a/gfs2/fsck/pass2.c
+++ b/gfs2/fsck/pass2.c
@@ -1947,7 +1947,7 @@ static int check_pernode_for(int x, struct gfs2_inode *pernode, const char *fn,
 	else if (multiple && (ip->i_di.di_size % filelen))
 		valid_size = 0;
 	if (!valid_size) {
-		log_err(_("System file %s has an invalid size. Is %llu, "
+		log_err(_("System file %s has an invalid size. Is %"PRIu64", "
 			  "should be %llu.\n"), fn, ip->i_di.di_size, filelen);
 		if (!query( _("Rebuild the system file? (y/n) ")))
 			goto out_good;
diff --git a/gfs2/fsck/rgrepair.c b/gfs2/fsck/rgrepair.c
index 637e5271..cc7c9c9d 100644
--- a/gfs2/fsck/rgrepair.c
+++ b/gfs2/fsck/rgrepair.c
@@ -414,11 +414,8 @@ static uint64_t find_next_rgrp_dist(struct gfs2_sbd *sdp, uint64_t blk,
 			rgrp_dist++;
 		}
 		if (found) {
-			log_info( _("rgrp found at 0x%llx, length=%d, "
-				    "used=%llu, free=%d\n"),
-				  prevrgd->ri.ri_addr, length,
-				  (unsigned long long)used_blocks,
-				  free_blocks);
+			log_info(_("rgrp found at 0x%"PRIx64", length=%d, used=%"PRIu64", free=%d\n"),
+			         prevrgd->ri.ri_addr, length, used_blocks, free_blocks);
 			break;
 		}
 	}
@@ -686,11 +683,9 @@ static int rindex_rebuild(struct gfs2_sbd *sdp, int *num_rgs, int gfs_grow)
 	for (n = osi_first(&sdp->rgcalc), rgi = 0; n; n = next, rgi++) {
 		next = osi_next(n);
 		calc_rgd = (struct rgrp_tree *)n;
-                log_debug("%d: 0x%llx / %x / 0x%llx"
-			  " / 0x%x / 0x%x\n", rgi + 1,
-			  (unsigned long long)calc_rgd->ri.ri_addr,
-			  calc_rgd->ri.ri_length,
-			  calc_rgd->ri.ri_data0, calc_rgd->ri.ri_data, 
+                log_debug("%d: 0x%"PRIx64"/%"PRIx32"/0x%"PRIx64"/0x%"PRIx32"/0x%"PRIx32"\n",
+		          rgi + 1, calc_rgd->ri.ri_addr, calc_rgd->ri.ri_length,
+			  calc_rgd->ri.ri_data0, calc_rgd->ri.ri_data,
 			  calc_rgd->ri.ri_bitbytes);
         }
 	*num_rgs = number_of_rgs;
@@ -1138,16 +1133,14 @@ int rg_repair(struct gfs2_sbd *sdp, int trust_lvl, int *ok)
 		if (actual->ri.ri_addr < expected->ri.ri_addr) {
 			n = next;
 			discrepancies++;
-			log_info(_("%d addr: 0x%llx < 0x%llx * mismatch\n"),
-				 rg + 1, actual->ri.ri_addr,
-				 expected->ri.ri_addr);
+			log_info(_("%d addr: 0x%"PRIx64" < 0x%"PRIx64" * mismatch\n"),
+				 rg + 1, actual->ri.ri_addr, expected->ri.ri_addr);
 			continue;
 		} else if (expected->ri.ri_addr < actual->ri.ri_addr) {
 			e = enext;
 			discrepancies++;
-			log_info(_("%d addr: 0x%llx > 0x%llx * mismatch\n"),
-				 rg + 1, actual->ri.ri_addr,
-				 expected->ri.ri_addr);
+			log_info(_("%d addr: 0x%"PRIx64" > 0x%"PRIx64" * mismatch\n"),
+				 rg + 1, actual->ri.ri_addr, expected->ri.ri_addr);
 			continue;
 		}
 		if (!ri_equal(actual->ri, expected->ri, ri_length) ||
@@ -1155,9 +1148,8 @@ int rg_repair(struct gfs2_sbd *sdp, int trust_lvl, int *ok)
 		    !ri_equal(actual->ri, expected->ri, ri_data) ||
 		    !ri_equal(actual->ri, expected->ri, ri_bitbytes)) {
 			discrepancies++;
-			log_info(_("%d addr: 0x%llx 0x%llx * has mismatch\n"),
-				 rg + 1, actual->ri.ri_addr,
-				 expected->ri.ri_addr);
+			log_info(_("%d addr: 0x%"PRIx64" 0x%"PRIx64" * has mismatch\n"),
+				 rg + 1, actual->ri.ri_addr, expected->ri.ri_addr);
 		}
 		n = next;
 		e = enext;
@@ -1199,10 +1191,9 @@ int rg_repair(struct gfs2_sbd *sdp, int trust_lvl, int *ok)
 		   damage, fill in a new one with the expected values. */
 		if (!n || /* end of actual rindex */
 		    expected->ri.ri_addr < actual->ri.ri_addr) {
-			log_err( _("Entry missing from rindex: 0x%llx\n"),
-				 (unsigned long long)expected->ri.ri_addr);
-			actual = rgrp_insert(&sdp->rgtree,
-					     expected->ri.ri_addr);
+			log_err(_("Entry missing from rindex: 0x%"PRIx64"\n"),
+			        expected->ri.ri_addr);
+			actual = rgrp_insert(&sdp->rgtree, expected->ri.ri_addr);
 			if (!actual) {
 				log_err(_("Out of memory!\n"));
 				break;
diff --git a/gfs2/libgfs2/ondisk.c b/gfs2/libgfs2/ondisk.c
index 0d68de8f..35a0b3db 100644
--- a/gfs2/libgfs2/ondisk.c
+++ b/gfs2/libgfs2/ondisk.c
@@ -57,8 +57,8 @@ void gfs2_inum_out(const struct gfs2_inum *no, char *buf)
 
 void gfs2_inum_print(const struct gfs2_inum *no)
 {
-	pv(no, no_formal_ino, "%llu", "0x%llx");
-	pv(no, no_addr, "%llu", "0x%llx");
+	pv(no, no_formal_ino, "%"PRIu64, "0x%"PRIx64);
+	pv(no, no_addr, "%"PRIu64, "0x%"PRIx64);
 }
 
 void gfs2_meta_header_in(struct gfs2_meta_header *mh, const char *buf)
@@ -83,9 +83,9 @@ void gfs2_meta_header_out(const struct gfs2_meta_header *mh, char *buf)
 
 void gfs2_meta_header_print(const struct gfs2_meta_header *mh)
 {
-	pv(mh, mh_magic, "0x%08X", NULL);
-	pv(mh, mh_type, "%u", "0x%x");
-	pv(mh, mh_format, "%u", "0x%x");
+	pv(mh, mh_magic, "0x%08"PRIX32, NULL);
+	pv(mh, mh_type, "%"PRIu32, "0x%"PRIx32);
+	pv(mh, mh_format, "%"PRIu32, "0x%"PRIx32);
 }
 
 void gfs2_sb_in(struct gfs2_sb *sb, char *buf)
@@ -144,11 +144,11 @@ void gfs2_sb_print(const struct gfs2_sb *sb)
 
 	gfs2_meta_header_print(&sb->sb_header);
 
-	pv(sb, sb_fs_format, "%u", "0x%x");
-	pv(sb, sb_multihost_format, "%u", "0x%x");
+	pv(sb, sb_fs_format, "%"PRIu32, "0x%"PRIx32);
+	pv(sb, sb_multihost_format, "%"PRIu32, "0x%"PRIx32);
 
-	pv(sb, sb_bsize, "%u", "0x%x");
-	pv(sb, sb_bsize_shift, "%u", "0x%x");
+	pv(sb, sb_bsize, "%"PRIu32, "0x%"PRIx32);
+	pv(sb, sb_bsize_shift, "%"PRIu32, "0x%"PRIx32);
 
 	gfs2_inum_print(&sb->sb_master_dir);
 	gfs2_inum_print(&sb->sb_root_dir);
@@ -191,13 +191,13 @@ void gfs2_rindex_out(const struct gfs2_rindex *ri, char *buf)
 
 void gfs2_rindex_print(const struct gfs2_rindex *ri)
 {
-	pv(ri, ri_addr, "%llu", "0x%llx");
-	pv(ri, ri_length, "%u", "0x%x");
+	pv(ri, ri_addr, "%"PRIu64, "0x%"PRIx64);
+	pv(ri, ri_length, "%"PRIu32, "0x%"PRIx32);
 
-	pv(ri, ri_data0, "%llu", "0x%llx");
-	pv(ri, ri_data, "%u", "0x%x");
+	pv(ri, ri_data0, "%"PRIu64, "0x%"PRIx64);
+	pv(ri, ri_data, "%"PRIu32, "0x%"PRIx32);
 
-	pv(ri, ri_bitbytes, "%u", "0x%x");
+	pv(ri, ri_bitbytes, "%"PRIu32, "0x%"PRIx32);
 }
 
 void gfs2_rgrp_in(struct gfs2_rgrp *rg, char *buf)
@@ -237,15 +237,15 @@ void gfs2_rgrp_out(const struct gfs2_rgrp *rg, char *buf)
 void gfs2_rgrp_print(const struct gfs2_rgrp *rg)
 {
 	gfs2_meta_header_print(&rg->rg_header);
-	pv(rg, rg_flags, "%u", "0x%x");
-	pv(rg, rg_free, "%u", "0x%x");
-	pv(rg, rg_dinodes, "%u", "0x%x");
-	pv(rg, rg_skip, "%u", "0x%x");
-	pv(rg, rg_igeneration, "%llu", "0x%llx");
-	pv(rg, rg_data0, "%llu", "0x%llx");
-	pv(rg, rg_data, "%u", "0x%x");
-	pv(rg, rg_bitbytes, "%u", "0x%x");
-	pv(rg, rg_crc, "%u", "0x%x");
+	pv(rg, rg_flags, "%"PRIu32, "0x%"PRIx32);
+	pv(rg, rg_free, "%"PRIu32, "0x%"PRIx32);
+	pv(rg, rg_dinodes, "%"PRIu32, "0x%"PRIx32);
+	pv(rg, rg_skip, "%"PRIu32, "0x%"PRIx32);
+	pv(rg, rg_igeneration, "%"PRIu64, "0x%"PRIx64);
+	pv(rg, rg_data0, "%"PRIu64, "0x%"PRIx64);
+	pv(rg, rg_data, "%"PRIu32, "0x%"PRIx32);
+	pv(rg, rg_bitbytes, "%"PRIu32, "0x%"PRIx32);
+	pv(rg, rg_crc, "%"PRIu32, "0x%"PRIx32);
 }
 
 void gfs2_quota_in(struct gfs2_quota *qu, char *buf)
@@ -270,9 +270,9 @@ void gfs2_quota_out(struct gfs2_quota *qu, char *buf)
 
 void gfs2_quota_print(const struct gfs2_quota *qu)
 {
-	pv(qu, qu_limit, "%llu", "0x%llx");
-	pv(qu, qu_warn, "%llu", "0x%llx");
-	pv(qu, qu_value, "%lld", "0x%llx");
+	pv(qu, qu_limit, "%"PRIu64, "0x%"PRIx64);
+	pv(qu, qu_warn, "%"PRIu64, "0x%"PRIx64);
+	pv(qu, qu_value, "%"PRIu64, "0x%"PRIx64);
 }
 
 void gfs2_dinode_in(struct gfs2_dinode *di, char *buf)
@@ -350,29 +350,29 @@ void gfs2_dinode_print(const struct gfs2_dinode *di)
 	gfs2_meta_header_print(&di->di_header);
 	gfs2_inum_print(&di->di_num);
 
-	pv(di, di_mode, "0%o", NULL);
-	pv(di, di_uid, "%u", "0x%x");
-	pv(di, di_gid, "%u", "0x%x");
-	pv(di, di_nlink, "%u", "0x%x");
-	pv(di, di_size, "%llu", "0x%llx");
-	pv(di, di_blocks, "%llu", "0x%llx");
-	pv(di, di_atime, "%lld", "0x%llx");
-	pv(di, di_mtime, "%lld", "0x%llx");
-	pv(di, di_ctime, "%lld", "0x%llx");
-	pv(di, di_major, "%u", "0x%llx");
-	pv(di, di_minor, "%u", "0x%llx");
+	pv(di, di_mode, "0%"PRIo32, NULL);
+	pv(di, di_uid, "%"PRIu32, "0x%"PRIx32);
+	pv(di, di_gid, "%"PRIu32, "0x%"PRIx32);
+	pv(di, di_nlink, "%"PRIu32, "0x%"PRIx32);
+	pv(di, di_size, "%"PRIu64, "0x%"PRIx64);
+	pv(di, di_blocks, "%"PRIu64, "0x%"PRIx64);
+	pv(di, di_atime, "%"PRIu64, "0x%"PRIx64);
+	pv(di, di_mtime, "%"PRIu64, "0x%"PRIx64);
+	pv(di, di_ctime, "%"PRIu64, "0x%"PRIx64);
+	pv(di, di_major, "%"PRIu32, "0x%"PRIx32);
+	pv(di, di_minor, "%"PRIu32, "0x%"PRIx32);
 
-	pv(di, di_goal_meta, "%llu", "0x%llx");
-	pv(di, di_goal_data, "%llu", "0x%llx");
+	pv(di, di_goal_meta, "%"PRIu64, "0x%"PRIx64);
+	pv(di, di_goal_data, "%"PRIu64, "0x%"PRIx64);
 
-	pv(di, di_flags, "0x%.8X", NULL);
-	pv(di, di_payload_format, "%u", "0x%x");
-	pv(di, di_height, "%u", "0x%x");
+	pv(di, di_flags, "0x%.8"PRIX32, NULL);
+	pv(di, di_payload_format, "%"PRIu32, "0x%"PRIx32);
+	pv(di, di_height, "%"PRIu16, "0x%"PRIx16);
 
-	pv(di, di_depth, "%u", "0x%x");
-	pv(di, di_entries, "%u", "0x%x");
+	pv(di, di_depth, "%"PRIu16, "0x%"PRIx16);
+	pv(di, di_entries, "%"PRIu32, "0x%"PRIx32);
 
-	pv(di, di_eattr, "%llu", "0x%llx");
+	pv(di, di_eattr, "%"PRIu64, "0x%"PRIx64);
 }
 
 void gfs2_dirent_in(struct gfs2_dirent *de, char *buf)
@@ -438,14 +438,14 @@ void gfs2_leaf_out(struct gfs2_leaf *lf, char *buf)
 void gfs2_leaf_print(const struct gfs2_leaf *lf)
 {
 	gfs2_meta_header_print(&lf->lf_header);
-	pv(lf, lf_depth, "%u", "0x%x");
-	pv(lf, lf_entries, "%u", "0x%x");
-	pv(lf, lf_dirent_format, "%u", "0x%x");
-	pv(lf, lf_next, "%llu", "0x%llx");
-	pv(lf, lf_inode, "%llu", "0x%llx");
-	pv(lf, lf_dist, "%u", "0x%x");
-	pv(lf, lf_nsec, "%u", "0x%x");
-	pv(lf, lf_sec, "%llu", "0x%llx");
+	pv(lf, lf_depth, "%"PRIu16, "0x%"PRIx16);
+	pv(lf, lf_entries, "%"PRIu16, "0x%"PRIx16);
+	pv(lf, lf_dirent_format, "%"PRIu32, "0x%"PRIx32);
+	pv(lf, lf_next, "%"PRIu64, "0x%"PRIx64);
+	pv(lf, lf_inode, "%"PRIu64, "0x%"PRIx64);
+	pv(lf, lf_dist, "%"PRIu32, "0x%"PRIx32);
+	pv(lf, lf_nsec, "%"PRIu32, "0x%"PRIx32);
+	pv(lf, lf_sec, "%"PRIu64, "0x%"PRIx64);
 }
 
 void gfs2_ea_header_in(struct gfs2_ea_header *ea, char *buf)
@@ -464,12 +464,12 @@ void gfs2_ea_header_print(const struct gfs2_ea_header *ea, char *name)
 {
 	char buf[GFS2_EA_MAX_NAME_LEN + 1];
 
-	pv(ea, ea_rec_len, "%u", "0x%x");
-	pv(ea, ea_data_len, "%u", "0x%x");
-	pv(ea, ea_name_len, "%u", "0x%x");
-	pv(ea, ea_type, "%u", "0x%x");
-	pv(ea, ea_flags, "%u", "0x%x");
-	pv(ea, ea_num_ptrs, "%u", "0x%x");
+	pv(ea, ea_rec_len, "%"PRIu32, "0x%"PRIx32);
+	pv(ea, ea_data_len, "%"PRIu32, "0x%"PRIx32);
+	pv(ea, ea_name_len, "%"PRIu8, "0x%"PRIx8);
+	pv(ea, ea_type, "%"PRIu8, "0x%"PRIx8);
+	pv(ea, ea_flags, "%"PRIu8, "0x%"PRIx8);
+	pv(ea, ea_num_ptrs, "%"PRIu8, "0x%"PRIx8);
 
 	memset(buf, 0, GFS2_EA_MAX_NAME_LEN + 1);
 	memcpy(buf, name, ea->ea_name_len);
@@ -523,21 +523,21 @@ void gfs2_log_header_out(struct gfs2_log_header *lh, char *buf)
 void gfs2_log_header_print(const struct gfs2_log_header *lh)
 {
 	gfs2_meta_header_print(&lh->lh_header);
-	pv(lh, lh_sequence, "%llu", "0x%llx");
-	pv(lh, lh_flags, "0x%.8X", NULL);
-	pv(lh, lh_tail, "%u", "0x%x");
-	pv(lh, lh_blkno, "%u", "0x%x");
-	pv(lh, lh_hash, "0x%.8X", NULL);
-	pv(lh, lh_crc, "0x%.8X", NULL);
-	pv(lh, lh_nsec, "%u", "0x%x");
-	pv(lh, lh_sec, "%llu", "0x%llx");
-	pv(lh, lh_addr, "%llu", "0x%llx");
-	pv(lh, lh_jinode, "%llu", "0x%llx");
-	pv(lh, lh_statfs_addr, "%llu", "0x%llx");
-	pv(lh, lh_quota_addr, "%llu", "0x%llx");
-	pv(lh, lh_local_total, "%lld", "0x%llx");
-	pv(lh, lh_local_free, "%lld", "0x%llx");
-	pv(lh, lh_local_dinodes, "%lld", "0x%llx");
+	pv(lh, lh_sequence, "%"PRIu64, "0x%"PRIx64);
+	pv(lh, lh_flags, "0x%.8"PRIX32, NULL);
+	pv(lh, lh_tail, "%"PRIu32, "0x%"PRIx32);
+	pv(lh, lh_blkno, "%"PRIu32, "0x%"PRIx32);
+	pv(lh, lh_hash, "0x%.8"PRIX32, NULL);
+	pv(lh, lh_crc, "0x%.8"PRIX32, NULL);
+	pv(lh, lh_nsec, "%"PRIu32, "0x%"PRIx32);
+	pv(lh, lh_sec, "%"PRIu64, "0x%"PRIx64);
+	pv(lh, lh_addr, "%"PRIu64, "0x%"PRIx64);
+	pv(lh, lh_jinode, "%"PRIu64, "0x%"PRIx64);
+	pv(lh, lh_statfs_addr, "%"PRIu64, "0x%"PRIx64);
+	pv(lh, lh_quota_addr, "%"PRIu64, "0x%"PRIx64);
+	pv(lh, lh_local_total, "%"PRId64, "0x%"PRIx64);
+	pv(lh, lh_local_free, "%"PRId64, "0x%"PRIx64);
+	pv(lh, lh_local_dinodes, "%"PRId64, "0x%"PRIx64);
 }
 
 void gfs2_log_descriptor_in(struct gfs2_log_descriptor *ld, char *buf)
@@ -569,10 +569,10 @@ void gfs2_log_descriptor_out(struct gfs2_log_descriptor *ld, char *buf)
 void gfs2_log_descriptor_print(const struct gfs2_log_descriptor *ld)
 {
 	gfs2_meta_header_print(&ld->ld_header);
-	pv(ld, ld_type, "%u", "0x%x");
-	pv(ld, ld_length, "%u", "0x%x");
-	pv(ld, ld_data1, "%u", "0x%x");
-	pv(ld, ld_data2, "%u", "0x%x");
+	pv(ld, ld_type, "%"PRIu32, "0x%"PRIx32);
+	pv(ld, ld_length, "%"PRIu32, "0x%"PRIx32);
+	pv(ld, ld_data1, "%"PRIu32, "0x%"PRIx32);
+	pv(ld, ld_data2, "%"PRIu32, "0x%"PRIx32);
 }
 
 void gfs2_statfs_change_in(struct gfs2_statfs_change *sc, char *buf)
@@ -595,9 +595,9 @@ void gfs2_statfs_change_out(struct gfs2_statfs_change *sc, char *buf)
 
 void gfs2_statfs_change_print(const struct gfs2_statfs_change *sc)
 {
-	pv(sc, sc_total, "%lld", "0x%llx");
-	pv(sc, sc_free, "%lld", "0x%llx");
-	pv(sc, sc_dinodes, "%lld", "0x%llx");
+	pv(sc, sc_total, "%"PRId64, "0x%"PRIx64);
+	pv(sc, sc_free, "%"PRId64, "0x%"PRIx64);
+	pv(sc, sc_dinodes, "%"PRId64, "0x%"PRIx64);
 }
 
 void gfs2_quota_change_in(struct gfs2_quota_change *qc, char *buf)
@@ -622,8 +622,8 @@ void gfs2_quota_change_out(struct gfs2_quota_change *qc, char *buf)
 
 void gfs2_quota_change_print(const struct gfs2_quota_change *qc)
 {
-	pv(qc, qc_change, "%lld", "0x%llx");
-	pv(qc, qc_flags, "0x%.8X", NULL);
-	pv(qc, qc_id, "%u", "0x%x");
+	pv(qc, qc_change, "%"PRId64, "0x%"PRIx64);
+	pv(qc, qc_flags, "0x%.8"PRIX32, NULL);
+	pv(qc, qc_id, "%"PRIu32, "0x%"PRIx32);
 }
 
-- 
2.30.2



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

* [Cluster-devel] [PATCH v2 0/8] gfs2-utils: Import linux/gfs2_ondisk.h
  2021-04-19 19:11 [Cluster-devel] [PATCH v2 0/8] gfs2-utils: Import linux/gfs2_ondisk.h Andrew Price
                   ` (7 preceding siblings ...)
  2021-04-19 19:11 ` [Cluster-devel] [PATCH 8/8] Use PRI* when printing gfs2 structures Andrew Price
@ 2021-04-19 19:31 ` Andreas Gruenbacher
  8 siblings, 0 replies; 16+ messages in thread
From: Andreas Gruenbacher @ 2021-04-19 19:31 UTC (permalink / raw)
  To: cluster-devel.redhat.com

Hi Andy,

On Mon, Apr 19, 2021 at 9:11 PM Andrew Price <anprice@redhat.com> wrote:
> v1: https://listman.redhat.com/archives/cluster-devel/2019-April/msg00021.html
>
> My previous attempt at this did a search+replace to satisfy the field types in gfs2_ondisk.h, which was a little OTT. This attempt adds a linux/types.h that gfs2_ondisk.h will pick up instead of the kernel one.
>
> Having our own gfs2_ondisk.h means that we can support new gfs2 features unconditionally and more easily experiment with on-disk changes; we can use the PRI* macros from inttypes.h for consistent string formatting (appease -Wformat) across architectures, and it gets us closer to being able to compile gfs2-utils on non-linux systems.

this is looking good, thanks.

Andreas




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

* [Cluster-devel] [PATCH 1/8] Import linux/gfs2_ondisk.h
  2021-04-19 19:11 ` [Cluster-devel] [PATCH 1/8] " Andrew Price
@ 2021-04-19 19:35   ` Andreas Gruenbacher
  2021-04-19 20:47     ` Andrew Price
  0 siblings, 1 reply; 16+ messages in thread
From: Andreas Gruenbacher @ 2021-04-19 19:35 UTC (permalink / raw)
  To: cluster-devel.redhat.com

Andy,

On Mon, Apr 19, 2021 at 9:11 PM Andrew Price <anprice@redhat.com> wrote:
> diff --git a/gfs2/include/gfs2_ondisk.h b/gfs2/include/gfs2_ondisk.h
> new file mode 100644
> index 00000000..fc948f89
> --- /dev/null
> +++ b/gfs2/include/gfs2_ondisk.h

any reason why this file shouldn't be at gfs2/include/linux/gfs2_ondisk.h?

Thanks,
Andreas



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

* [Cluster-devel] [PATCH 1/8] Import linux/gfs2_ondisk.h
  2021-04-19 19:35   ` Andreas Gruenbacher
@ 2021-04-19 20:47     ` Andrew Price
  2021-04-20  6:00       ` Andreas Gruenbacher
  0 siblings, 1 reply; 16+ messages in thread
From: Andrew Price @ 2021-04-19 20:47 UTC (permalink / raw)
  To: cluster-devel.redhat.com

On 19/04/2021 20:35, Andreas Gruenbacher wrote:
> Andy,
> 
> On Mon, Apr 19, 2021 at 9:11 PM Andrew Price <anprice@redhat.com> wrote:
>> diff --git a/gfs2/include/gfs2_ondisk.h b/gfs2/include/gfs2_ondisk.h
>> new file mode 100644
>> index 00000000..fc948f89
>> --- /dev/null
>> +++ b/gfs2/include/gfs2_ondisk.h
> 
> any reason why this file shouldn't be at gfs2/include/linux/gfs2_ondisk.h?

I didn't feel it was needed, but it does have the benefit of making sure 
we're not picking up the system linux/gfs2_ondisk.h when we #include 
<gfs2_ondisk.h> and it shows clearly that we're not trying to.

Andy



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

* [Cluster-devel] [PATCH 1/8] Import linux/gfs2_ondisk.h
  2021-04-19 20:47     ` Andrew Price
@ 2021-04-20  6:00       ` Andreas Gruenbacher
  2021-04-20  8:34         ` Andrew Price
  0 siblings, 1 reply; 16+ messages in thread
From: Andreas Gruenbacher @ 2021-04-20  6:00 UTC (permalink / raw)
  To: cluster-devel.redhat.com

On Mon, Apr 19, 2021 at 10:47 PM Andrew Price <anprice@redhat.com> wrote:
> On 19/04/2021 20:35, Andreas Gruenbacher wrote:
> > Andy,
> >
> > On Mon, Apr 19, 2021 at 9:11 PM Andrew Price <anprice@redhat.com> wrote:
> >> diff --git a/gfs2/include/gfs2_ondisk.h b/gfs2/include/gfs2_ondisk.h
> >> new file mode 100644
> >> index 00000000..fc948f89
> >> --- /dev/null
> >> +++ b/gfs2/include/gfs2_ondisk.h
> >
> > any reason why this file shouldn't be at gfs2/include/linux/gfs2_ondisk.h?
>
> I didn't feel it was needed, but it does have the benefit of making sure
> we're not picking up the system linux/gfs2_ondisk.h when we #include
> <gfs2_ondisk.h> and it shows clearly that we're not trying to.

Well, we have "-I$(top_srcdir)/gfs2/include" in CPPFLAGS so
gfs2/include/linux/types.h is picked up by <linux/types.h>. We already
rely on that working. So gfs2/include/linux/gfs2_ondisk.h would be
picked up by <linux/gfs2_ondisk.h> already anyway.

Andreas



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

* [Cluster-devel] [PATCH 1/8] Import linux/gfs2_ondisk.h
  2021-04-20  6:00       ` Andreas Gruenbacher
@ 2021-04-20  8:34         ` Andrew Price
  2021-04-20  9:07           ` Andreas Gruenbacher
  0 siblings, 1 reply; 16+ messages in thread
From: Andrew Price @ 2021-04-20  8:34 UTC (permalink / raw)
  To: cluster-devel.redhat.com

On 20/04/2021 07:00, Andreas Gruenbacher wrote:
> On Mon, Apr 19, 2021 at 10:47 PM Andrew Price <anprice@redhat.com> wrote:
>> On 19/04/2021 20:35, Andreas Gruenbacher wrote:
>>> Andy,
>>>
>>> On Mon, Apr 19, 2021 at 9:11 PM Andrew Price <anprice@redhat.com> wrote:
>>>> diff --git a/gfs2/include/gfs2_ondisk.h b/gfs2/include/gfs2_ondisk.h
>>>> new file mode 100644
>>>> index 00000000..fc948f89
>>>> --- /dev/null
>>>> +++ b/gfs2/include/gfs2_ondisk.h
>>>
>>> any reason why this file shouldn't be at gfs2/include/linux/gfs2_ondisk.h?
>>
>> I didn't feel it was needed, but it does have the benefit of making sure
>> we're not picking up the system linux/gfs2_ondisk.h when we #include
>> <gfs2_ondisk.h> and it shows clearly that we're not trying to.
> 
> Well, we have "-I$(top_srcdir)/gfs2/include" in CPPFLAGS so
> gfs2/include/linux/types.h is picked up by <linux/types.h>. We already
> rely on that working. So gfs2/include/linux/gfs2_ondisk.h would be
> picked up by <linux/gfs2_ondisk.h> already anyway.

So, what would be the advantage of having gfs2_ondisk.h in
gfs2/include/linux/? I put types.h in that directory because I didn't 
want to change the #include statement, but I didn't see a reason to put 
gfs2_ondisk.h in there.

Andy



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

* [Cluster-devel] [PATCH 1/8] Import linux/gfs2_ondisk.h
  2021-04-20  8:34         ` Andrew Price
@ 2021-04-20  9:07           ` Andreas Gruenbacher
  2021-04-20  9:47             ` Andrew Price
  0 siblings, 1 reply; 16+ messages in thread
From: Andreas Gruenbacher @ 2021-04-20  9:07 UTC (permalink / raw)
  To: cluster-devel.redhat.com

On Tue, Apr 20, 2021 at 10:34 AM Andrew Price <anprice@redhat.com> wrote:
> On 20/04/2021 07:00, Andreas Gruenbacher wrote:
> > On Mon, Apr 19, 2021 at 10:47 PM Andrew Price <anprice@redhat.com> wrote:
> >> On 19/04/2021 20:35, Andreas Gruenbacher wrote:
> >>> Andy,
> >>>
> >>> On Mon, Apr 19, 2021 at 9:11 PM Andrew Price <anprice@redhat.com> wrote:
> >>>> diff --git a/gfs2/include/gfs2_ondisk.h b/gfs2/include/gfs2_ondisk.h
> >>>> new file mode 100644
> >>>> index 00000000..fc948f89
> >>>> --- /dev/null
> >>>> +++ b/gfs2/include/gfs2_ondisk.h
> >>>
> >>> any reason why this file shouldn't be at gfs2/include/linux/gfs2_ondisk.h?
> >>
> >> I didn't feel it was needed, but it does have the benefit of making sure
> >> we're not picking up the system linux/gfs2_ondisk.h when we #include
> >> <gfs2_ondisk.h> and it shows clearly that we're not trying to.
> >
> > Well, we have "-I$(top_srcdir)/gfs2/include" in CPPFLAGS so
> > gfs2/include/linux/types.h is picked up by <linux/types.h>. We already
> > rely on that working. So gfs2/include/linux/gfs2_ondisk.h would be
> > picked up by <linux/gfs2_ondisk.h> already anyway.
>
> So, what would be the advantage of having gfs2_ondisk.h in
> gfs2/include/linux/? I put types.h in that directory because I didn't
> want to change the #include statement, but I didn't see a reason to put
> gfs2_ondisk.h in there.

It's more consistent if the definitions are always included as
<linux/gfs2_ondisk.h> by the kernel and by all user-space programs.

Andreas



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

* [Cluster-devel] [PATCH 1/8] Import linux/gfs2_ondisk.h
  2021-04-20  9:07           ` Andreas Gruenbacher
@ 2021-04-20  9:47             ` Andrew Price
  0 siblings, 0 replies; 16+ messages in thread
From: Andrew Price @ 2021-04-20  9:47 UTC (permalink / raw)
  To: cluster-devel.redhat.com

On 20/04/2021 10:07, Andreas Gruenbacher wrote:
> On Tue, Apr 20, 2021 at 10:34 AM Andrew Price <anprice@redhat.com> wrote:
>> On 20/04/2021 07:00, Andreas Gruenbacher wrote:
>>> On Mon, Apr 19, 2021 at 10:47 PM Andrew Price <anprice@redhat.com> wrote:
>>>> On 19/04/2021 20:35, Andreas Gruenbacher wrote:
>>>>> Andy,
>>>>>
>>>>> On Mon, Apr 19, 2021 at 9:11 PM Andrew Price <anprice@redhat.com> wrote:
>>>>>> diff --git a/gfs2/include/gfs2_ondisk.h b/gfs2/include/gfs2_ondisk.h
>>>>>> new file mode 100644
>>>>>> index 00000000..fc948f89
>>>>>> --- /dev/null
>>>>>> +++ b/gfs2/include/gfs2_ondisk.h
>>>>>
>>>>> any reason why this file shouldn't be at gfs2/include/linux/gfs2_ondisk.h?
>>>>
>>>> I didn't feel it was needed, but it does have the benefit of making sure
>>>> we're not picking up the system linux/gfs2_ondisk.h when we #include
>>>> <gfs2_ondisk.h> and it shows clearly that we're not trying to.
>>>
>>> Well, we have "-I$(top_srcdir)/gfs2/include" in CPPFLAGS so
>>> gfs2/include/linux/types.h is picked up by <linux/types.h>. We already
>>> rely on that working. So gfs2/include/linux/gfs2_ondisk.h would be
>>> picked up by <linux/gfs2_ondisk.h> already anyway.
>>
>> So, what would be the advantage of having gfs2_ondisk.h in
>> gfs2/include/linux/? I put types.h in that directory because I didn't
>> want to change the #include statement, but I didn't see a reason to put
>> gfs2_ondisk.h in there.
> 
> It's more consistent if the definitions are always included as
> <linux/gfs2_ondisk.h> by the kernel and by all user-space programs.

Hmm, I guess. I've moved it into gfs2/include/linux/ in my local branch 
and I'll push it with that change later, barring objections.

Andy



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

end of thread, other threads:[~2021-04-20  9:47 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-19 19:11 [Cluster-devel] [PATCH v2 0/8] gfs2-utils: Import linux/gfs2_ondisk.h Andrew Price
2021-04-19 19:11 ` [Cluster-devel] [PATCH 1/8] " Andrew Price
2021-04-19 19:35   ` Andreas Gruenbacher
2021-04-19 20:47     ` Andrew Price
2021-04-20  6:00       ` Andreas Gruenbacher
2021-04-20  8:34         ` Andrew Price
2021-04-20  9:07           ` Andreas Gruenbacher
2021-04-20  9:47             ` Andrew Price
2021-04-19 19:11 ` [Cluster-devel] [PATCH 2/8] Remove HAS_UUID conditionals Andrew Price
2021-04-19 19:11 ` [Cluster-devel] [PATCH 3/8] Remove GFS2_HAS_LEAF_HINTS conditionals Andrew Price
2021-04-19 19:11 ` [Cluster-devel] [PATCH 4/8] Remove GFS2_HAS_DE_RAHEAD/COOKIE conditionals Andrew Price
2021-04-19 19:11 ` [Cluster-devel] [PATCH 5/8] Remove GFS2_HAS_RG_SKIP conditionals Andrew Price
2021-04-19 19:11 ` [Cluster-devel] [PATCH 6/8] Remove GFS2_HAS_RG_RI_FIELDS conditionals Andrew Price
2021-04-19 19:11 ` [Cluster-devel] [PATCH 7/8] Remove GFS2_HAS_LH_V2 conditionals Andrew Price
2021-04-19 19:11 ` [Cluster-devel] [PATCH 8/8] Use PRI* when printing gfs2 structures Andrew Price
2021-04-19 19:31 ` [Cluster-devel] [PATCH v2 0/8] gfs2-utils: Import linux/gfs2_ondisk.h Andreas Gruenbacher

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.