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
next 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