From nobody Sat Feb 7 14:57:27 2026 Received: from mail-pl1-f181.google.com (mail-pl1-f181.google.com [209.85.214.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D0ECA2561A7 for ; Fri, 6 Feb 2026 03:07:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770347242; cv=none; b=BuNnZV67bk1ApmjMDijx/x3NDLvQZYHZrfk1W5sAKey4WNrQHGpDC3hXjfSgiF2kauGXYKsbduCOV5emUv3GhhY2sXfiRoT2gYI6XoyQELarQSuTVjUzfVn9k3oT76OI2CfLNi0vAZn9A15ud3l+XGaob4BABL1zlBEwQx2six0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770347242; c=relaxed/simple; bh=J/2AjULVPo7JxyW4cLKt3dWi5eq6Mmj+ADikJpFxrxs=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=aXYrRQmRbj5cyHm6bM2FpUI59Jd0wsnAH0PE3eP6UvUP2pvvGu/NYyKJjKhdeIFfI85euZNvtpmgAf1RNYRvY1rlq1bkNCVO5a/1ZKlP0FJn/L5vbAR1ufWznr5gnigIAgUQXV4orQelcFEXJ2YXxweDikiaG5Y1h2qqCCA0tNg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=B5yCB48O; arc=none smtp.client-ip=209.85.214.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="B5yCB48O" Received: by mail-pl1-f181.google.com with SMTP id d9443c01a7336-2a0d52768ccso10311475ad.1 for ; Thu, 05 Feb 2026 19:07:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770347241; x=1770952041; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=NeCdDvONNGPVeboC3q1Jqb3Mi6sRaFCJ/jUEyGj5MuI=; b=B5yCB48OwyM6VD6nxkQTBHoZHBusC1RSn23Tp8f78UL8Izn3jHXLvl1BnBYw8XScUG +ja0GE7Mx8KR+5VNd1eRC1itcIbqFABtM8TXstN10QGOGkKJQSXzjmabKRPRO+I0q3BR SBE29ouXduIjClfBSWhCJ/pxw89VEyUynV9kl2geVmH/ApLwZgBuBIjus80As/qbQg1f Yu838lQz/wlwgkaVyfh2zGLC2fNdwpjnCzGIwZMXXhSRLwWzhYH9y7gGsCGCcrNh+3jy xgauueROn2Upg8kjgP/SAuJOovKO+Ds47AtOqZuO9p1x3Y/R1vaMS0m8kUx/aaBg2eRa cLMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770347241; x=1770952041; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=NeCdDvONNGPVeboC3q1Jqb3Mi6sRaFCJ/jUEyGj5MuI=; b=kbqwEQuAg1SjqJZbFX1MiTZciNmleuqfan4HpoSCXorfv6lPbxtldxsOSiguSxLGJH uC0HKIF5QKpq75uNj5wqN54fgffNvp0iMMX2cTNHOhq5AcBy461Uj6etW6HN4Av6/yqI P6yBLLBo8qKFGFtVU8t1TDFxoKNXZnSemALt/AgkVXuwvEePVNb2XAUam9apQK8HaQxl 8T6ogv5bPKx3xK4YQplRmlseLEL+/63goxHFDCNe8KmNOJTQnBvy6ruHt8LEX3dJh9oV RZs6/eVAOjgFJR9gZVoEJt5owp/q+vYTFutCbvEpOm314TNgGH4sqfGSucAdjBh6O0Gt 4aTA== X-Forwarded-Encrypted: i=1; AJvYcCWwUmV6d3Qc63YbbrbpAApyCJq/uxjaDyPrmPISkUKCkCkWO4H7Xl4Q0SYTF4AcN7bOHyad39MEyd7Pttc=@vger.kernel.org X-Gm-Message-State: AOJu0Yz9uIK3W8kL74iPkoB3tmr4UgEmUD+uO4O9hafJUPL1UzqXzMPx ud3f3V2dJw8lkvxP+vWO7jtHL4Q1l0kcsMjggf+j7Rx53RgJVVpu6oU4 X-Gm-Gg: AZuq6aIE5gg4itJxTfPDTcfTuNDML9LGCMHAnEMgGszKWPccy+alt3sO41r837c6zO/ V5zTW3ljZQ2v7GR4qEWbqhEIsxNaN2s6Iwnf3R8ZIXSTPSOniiHw3wRLqKmjP2Ev1Tjj0IuLDem 48MQ1BZ1vyYVtERjcl5Y28ISVPv29xecWBErgoY/gyrMDAGACH/xSSTIMxI3N/A6rgWzxFB6xub F8Tv4ONAg2umgJ8QmymVk6mNkAJQOZObAJGfbPwqvzNFkue/wRE+0uhzSseIBcemxXbeYIjjeU9 BCu3sBsqqw1ePLs/6Vr+zg0pNhbVfa5oUC2WM3TPYP+nEq9I/0Szfvk/DVkdLDLFyPSMW0lQWYi 9t2m5dh4/feerGMP9rUZXUJRt9sgaMBPFCt4Uis4iV//C8nQhh73VVBYtzg/y7U8pRdtTKiXIKZ j/bDVqWnJitLmSf2Vs3+3+5jNOH7L6U/0Nlp38KSLvASZYgRtaaciKibPiLBZD X-Received: by 2002:a17:903:2412:b0:2a7:90f2:2dea with SMTP id d9443c01a7336-2a9516f8bd7mr13167365ad.28.1770347241077; Thu, 05 Feb 2026 19:07:21 -0800 (PST) Received: from zenbook ([159.196.5.243]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2a9522121besm8194905ad.85.2026.02.05.19.07.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Feb 2026 19:07:20 -0800 (PST) From: Wilfred Mallawa To: Carlos Maiolino , "Darrick J . Wong" Cc: linux-xfs@vger.kernel.org, linux-kernel@vger.kernel.org, Christoph Hellwig , Wilfred Mallawa Subject: [PATCH] xfs: add static size checks for structures in xfs_fs.h Date: Fri, 6 Feb 2026 13:05:58 +1000 Message-ID: <20260206030557.1201204-2-wilfred.opensource@gmail.com> X-Mailer: git-send-email 2.52.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Wilfred Mallawa 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 --- 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); =20 /* 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); =20 /* 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); =20 /* * 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); =20 /* 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); =20 + /* 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); =20 /* * Make sure the incore inode timestamp range corresponds to hand --=20 2.52.0