public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Wilfred Mallawa <wilfred.opensource@gmail.com>
To: Carlos Maiolino <cem@kernel.org>, "Darrick J . Wong" <djwong@kernel.org>
Cc: linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org,
	Christoph Hellwig <hch@lst.de>,
	Wilfred Mallawa <wilfred.mallawa@wdc.com>
Subject: [PATCH] xfs: add static size checks for structures in xfs_fs.h
Date: Fri,  6 Feb 2026 13:05:58 +1000	[thread overview]
Message-ID: <20260206030557.1201204-2-wilfred.opensource@gmail.com> (raw)

From: Wilfred Mallawa <wilfred.mallawa@wdc.com>

This patch adds static size checks for the structures in
libxfs/xfs_fs.h. The structures with architecture dependent size for
fields are ommited from this patch (such as xfs_bstat which depends on
__kernel_long_t).

Also remove some existing duplicate entries of XFS_CHECK_STRUCT_SIZE().

Signed-off-by: Wilfred Mallawa <wilfred.mallawa@wdc.com>
---
 fs/xfs/libxfs/xfs_ondisk.h | 46 ++++++++++++++++++++++++++++++--------
 1 file changed, 37 insertions(+), 9 deletions(-)

diff --git a/fs/xfs/libxfs/xfs_ondisk.h b/fs/xfs/libxfs/xfs_ondisk.h
index 2e9715cc1641..874c25cf9a4e 100644
--- a/fs/xfs/libxfs/xfs_ondisk.h
+++ b/fs/xfs/libxfs/xfs_ondisk.h
@@ -26,6 +26,9 @@
 static inline void __init
 xfs_check_ondisk_structs(void)
 {
+	/* direct I/O */
+	XFS_CHECK_STRUCT_SIZE(struct dioattr,			12);
+
 	/* file structures */
 	XFS_CHECK_STRUCT_SIZE(struct xfs_acl,			4);
 	XFS_CHECK_STRUCT_SIZE(struct xfs_acl_entry,		12);
@@ -59,6 +62,8 @@ xfs_check_ondisk_structs(void)
 	XFS_CHECK_STRUCT_SIZE(xfs_refcount_ptr_t,		4);
 	XFS_CHECK_STRUCT_SIZE(xfs_rmap_ptr_t,			4);
 	XFS_CHECK_STRUCT_SIZE(xfs_bmdr_key_t,			8);
+	XFS_CHECK_STRUCT_SIZE(struct getbmap,			32);
+	XFS_CHECK_STRUCT_SIZE(struct getbmapx,			48);
 
 	/* dir/attr trees */
 	XFS_CHECK_STRUCT_SIZE(struct xfs_attr3_leaf_hdr,	80);
@@ -77,6 +82,12 @@ xfs_check_ondisk_structs(void)
 	XFS_CHECK_STRUCT_SIZE(struct xfs_attr_leaf_hdr,		32);
 	XFS_CHECK_STRUCT_SIZE(struct xfs_attr_leaf_map,		4);
 	XFS_CHECK_STRUCT_SIZE(struct xfs_attr_leaf_name_local,	4);
+	XFS_CHECK_STRUCT_SIZE(xfs_attrlist_cursor_t,		16);
+	XFS_CHECK_STRUCT_SIZE(struct xfs_attrlist,		8);
+	XFS_CHECK_STRUCT_SIZE(struct xfs_attrlist_ent,		4);
+
+	/* allocation groups */
+	XFS_CHECK_STRUCT_SIZE(struct xfs_ag_geometry,		128);
 
 	/* realtime structures */
 	XFS_CHECK_STRUCT_SIZE(struct xfs_rtsb,			56);
@@ -87,6 +98,7 @@ xfs_check_ondisk_structs(void)
 	XFS_CHECK_STRUCT_SIZE(struct xfs_rtrmap_root,		4);
 	XFS_CHECK_STRUCT_SIZE(xfs_rtrefcount_ptr_t,		8);
 	XFS_CHECK_STRUCT_SIZE(struct xfs_rtrefcount_root,	4);
+	XFS_CHECK_STRUCT_SIZE(struct xfs_rtgroup_geometry,	128);
 
 	/*
 	 * m68k has problems with struct xfs_attr_leaf_name_remote, but we pad
@@ -117,20 +129,11 @@ xfs_check_ondisk_structs(void)
 	XFS_CHECK_STRUCT_SIZE(struct xfs_da_node_entry,		8);
 	XFS_CHECK_STRUCT_SIZE(struct xfs_da_node_hdr,		16);
 	XFS_CHECK_STRUCT_SIZE(struct xfs_dir2_data_free,		4);
-	XFS_CHECK_STRUCT_SIZE(struct xfs_dir2_data_hdr,		16);
 	XFS_CHECK_OFFSET(struct xfs_dir2_data_unused, freetag,	0);
 	XFS_CHECK_OFFSET(struct xfs_dir2_data_unused, length,	2);
-	XFS_CHECK_STRUCT_SIZE(struct xfs_dir2_free_hdr,		16);
-	XFS_CHECK_STRUCT_SIZE(struct xfs_dir2_free,		16);
-	XFS_CHECK_STRUCT_SIZE(struct xfs_dir2_leaf_entry,	8);
-	XFS_CHECK_STRUCT_SIZE(struct xfs_dir2_leaf_hdr,		16);
-	XFS_CHECK_STRUCT_SIZE(struct xfs_dir2_leaf,		16);
-	XFS_CHECK_STRUCT_SIZE(struct xfs_dir2_leaf_tail,	4);
-	XFS_CHECK_STRUCT_SIZE(struct xfs_dir2_sf_entry,		3);
 	XFS_CHECK_OFFSET(struct xfs_dir2_sf_entry, namelen,	0);
 	XFS_CHECK_OFFSET(struct xfs_dir2_sf_entry, offset,	1);
 	XFS_CHECK_OFFSET(struct xfs_dir2_sf_entry, name,	3);
-	XFS_CHECK_STRUCT_SIZE(struct xfs_dir2_sf_hdr,		10);
 	XFS_CHECK_STRUCT_SIZE(struct xfs_parent_rec,		12);
 
 	/* ondisk dir/attr structures from xfs/122 */
@@ -196,6 +199,9 @@ xfs_check_ondisk_structs(void)
 	XFS_CHECK_STRUCT_SIZE(struct xfs_getparents,		40);
 	XFS_CHECK_STRUCT_SIZE(struct xfs_getparents_by_handle,	64);
 
+	/* error injection */
+	XFS_CHECK_STRUCT_SIZE(struct xfs_error_injection,	8);
+
 	/*
 	 * The v5 superblock format extended several v4 header structures with
 	 * additional data. While new fields are only accessible on v5
@@ -221,6 +227,28 @@ xfs_check_ondisk_structs(void)
 	XFS_CHECK_STRUCT_SIZE(struct xfs_inumbers,		24);
 	XFS_CHECK_STRUCT_SIZE(struct xfs_bulkstat_req,		64);
 	XFS_CHECK_STRUCT_SIZE(struct xfs_inumbers_req,		64);
+	XFS_CHECK_STRUCT_SIZE(struct xfs_flock64,		48);
+	XFS_CHECK_STRUCT_SIZE(struct xfs_fsop_geom_v1,		112);
+	XFS_CHECK_STRUCT_SIZE(struct xfs_fsop_geom_v4,		112);
+	XFS_CHECK_STRUCT_SIZE(struct xfs_fsop_geom,		256);
+	XFS_CHECK_STRUCT_SIZE(xfs_fsop_counts_t,		32);
+	XFS_CHECK_STRUCT_SIZE(xfs_fsop_resblks_t,		16);
+	XFS_CHECK_STRUCT_SIZE(xfs_growfs_data_t,		16);
+	XFS_CHECK_STRUCT_SIZE(xfs_growfs_log_t,			8);
+	XFS_CHECK_STRUCT_SIZE(xfs_growfs_rt_t,			16);
+	XFS_CHECK_STRUCT_SIZE(struct xfs_inogrp,		24);
+	XFS_CHECK_STRUCT_SIZE(struct xfs_bulk_ireq,		64);
+	XFS_CHECK_STRUCT_SIZE(struct xfs_fs_eofblocks,		128);
+	XFS_CHECK_STRUCT_SIZE(xfs_fsid_t,			8);
+	XFS_CHECK_STRUCT_SIZE(xfs_fid_t,			16);
+	XFS_CHECK_STRUCT_SIZE(xfs_handle_t,			24);
+	XFS_CHECK_STRUCT_SIZE(struct xfs_exchange_range,	40);
+	XFS_CHECK_STRUCT_SIZE(struct xfs_commit_range,		88);
+
+	/* scrub */
+	XFS_CHECK_STRUCT_SIZE(struct xfs_scrub_metadata,	64);
+	XFS_CHECK_STRUCT_SIZE(struct xfs_scrub_vec,		16);
+	XFS_CHECK_STRUCT_SIZE(struct xfs_scrub_vec_head,	40);
 
 	/*
 	 * Make sure the incore inode timestamp range corresponds to hand
-- 
2.52.0


             reply	other threads:[~2026-02-06  3:07 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-06  3:05 Wilfred Mallawa [this message]
2026-02-06  6:08 ` [PATCH] xfs: add static size checks for structures in xfs_fs.h Christoph Hellwig
2026-02-09  7:04   ` Wilfred Mallawa
2026-02-09 14:47     ` hch
2026-02-10  5:59       ` Wilfred Mallawa
2026-02-06  9:39 ` kernel test robot
2026-02-06 11:02 ` kernel test robot
2026-02-06 18:03 ` kernel test robot
2026-02-06 22:27 ` Dave Chinner
2026-02-09  6:57   ` Wilfred Mallawa
2026-02-09 14:41   ` Christoph Hellwig

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260206030557.1201204-2-wilfred.opensource@gmail.com \
    --to=wilfred.opensource@gmail.com \
    --cc=cem@kernel.org \
    --cc=djwong@kernel.org \
    --cc=hch@lst.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-xfs@vger.kernel.org \
    --cc=wilfred.mallawa@wdc.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox