fs/xfs/libxfs/xfs_ondisk.h

Source file repositories/reference/linux-study-clean/fs/xfs/libxfs/xfs_ondisk.h

File Facts

System
Linux kernel
Corpus path
fs/xfs/libxfs/xfs_ondisk.h
Extension
.h
Size
14686 bytes
Lines
327
Domain
Core OS
Bucket
VFS And Filesystem Core
Inferred role
Core OS: implementation source
Status
source implementation candidate

Why This File Exists

Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.

Dependency Surface

Detected Declarations

Annotated Snippet

// SPDX-License-Identifier: GPL-2.0
/*
 * Copyright (c) 2016 Oracle.
 * All Rights Reserved.
 */
#ifndef __XFS_ONDISK_H
#define __XFS_ONDISK_H

#define XFS_CHECK_STRUCT_SIZE(structname, size) \
	static_assert(sizeof(structname) == (size), \
		"XFS: sizeof(" #structname ") is wrong, expected " #size)

#define XFS_CHECK_OFFSET(structname, member, off) \
	static_assert(offsetof(structname, member) == (off), \
		"XFS: offsetof(" #structname ", " #member ") is wrong, " \
		"expected " #off)

#define XFS_CHECK_VALUE(value, expected) \
	static_assert((value) == (expected), \
		"XFS: value of " #value " is wrong, expected " #expected)

#define XFS_CHECK_SB_OFFSET(field, offset) \
	XFS_CHECK_OFFSET(struct xfs_dsb, field, offset); \
	XFS_CHECK_OFFSET(struct xfs_sb, field, offset);

static inline void __init
xfs_check_ondisk_structs(void)
{
	/* file structures */
	XFS_CHECK_STRUCT_SIZE(struct xfs_acl,			4);
	XFS_CHECK_STRUCT_SIZE(struct xfs_acl_entry,		12);
	XFS_CHECK_STRUCT_SIZE(struct xfs_bmbt_key,		8);
	XFS_CHECK_STRUCT_SIZE(struct xfs_bmbt_rec,		16);
	XFS_CHECK_STRUCT_SIZE(struct xfs_bmdr_block,		4);
	XFS_CHECK_STRUCT_SIZE(struct xfs_dinode,		176);
	XFS_CHECK_STRUCT_SIZE(struct xfs_disk_dquot,		104);
	XFS_CHECK_STRUCT_SIZE(struct xfs_dqblk,			136);
	XFS_CHECK_STRUCT_SIZE(struct xfs_dsymlink_hdr,		56);
	XFS_CHECK_STRUCT_SIZE(xfs_timestamp_t,			8);
	XFS_CHECK_STRUCT_SIZE(struct xfs_legacy_timestamp,	8);

	/* space btrees */
	XFS_CHECK_STRUCT_SIZE(struct xfs_agf,			224);
	XFS_CHECK_STRUCT_SIZE(struct xfs_agfl,			36);
	XFS_CHECK_STRUCT_SIZE(struct xfs_agi,			344);
	XFS_CHECK_STRUCT_SIZE(struct xfs_alloc_rec,		8);
	XFS_CHECK_STRUCT_SIZE(struct xfs_btree_block,		72);
	XFS_CHECK_STRUCT_SIZE(struct xfs_btree_block_lhdr,	64);
	XFS_CHECK_STRUCT_SIZE(struct xfs_btree_block_shdr,	48);
	XFS_CHECK_STRUCT_SIZE(struct xfs_inobt_key,		4);
	XFS_CHECK_STRUCT_SIZE(struct xfs_inobt_rec,		16);
	XFS_CHECK_STRUCT_SIZE(struct xfs_refcount_key,		4);
	XFS_CHECK_STRUCT_SIZE(struct xfs_refcount_rec,		12);
	XFS_CHECK_STRUCT_SIZE(struct xfs_rmap_key,		20);
	XFS_CHECK_STRUCT_SIZE(struct xfs_rmap_rec,		24);
	XFS_CHECK_STRUCT_SIZE(xfs_alloc_key_t,			8);
	XFS_CHECK_STRUCT_SIZE(xfs_alloc_ptr_t,			4);
	XFS_CHECK_STRUCT_SIZE(xfs_inobt_ptr_t,			4);
	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);

	/* dir/attr trees */
	XFS_CHECK_STRUCT_SIZE(struct xfs_attr3_leaf_hdr,	80);
	XFS_CHECK_STRUCT_SIZE(struct xfs_attr3_leafblock,	80);
	XFS_CHECK_STRUCT_SIZE(struct xfs_attr3_rmt_hdr,		56);
	XFS_CHECK_STRUCT_SIZE(struct xfs_da3_blkinfo,		56);
	XFS_CHECK_STRUCT_SIZE(struct xfs_da3_intnode,		64);
	XFS_CHECK_STRUCT_SIZE(struct xfs_da3_node_hdr,		64);
	XFS_CHECK_STRUCT_SIZE(struct xfs_dir3_blk_hdr,		48);
	XFS_CHECK_STRUCT_SIZE(struct xfs_dir3_data_hdr,		64);
	XFS_CHECK_STRUCT_SIZE(struct xfs_dir3_free,		64);
	XFS_CHECK_STRUCT_SIZE(struct xfs_dir3_free_hdr,		64);
	XFS_CHECK_STRUCT_SIZE(struct xfs_dir3_leaf,		64);
	XFS_CHECK_STRUCT_SIZE(struct xfs_dir3_leaf_hdr,		64);
	XFS_CHECK_STRUCT_SIZE(struct xfs_attr_leaf_entry,	8);
	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);

	/* realtime structures */
	XFS_CHECK_STRUCT_SIZE(struct xfs_rtsb,			56);
	XFS_CHECK_STRUCT_SIZE(union xfs_rtword_raw,		4);
	XFS_CHECK_STRUCT_SIZE(union xfs_suminfo_raw,		4);
	XFS_CHECK_STRUCT_SIZE(struct xfs_rtbuf_blkinfo,		48);
	XFS_CHECK_STRUCT_SIZE(xfs_rtrmap_ptr_t,			8);
	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);

Annotation

Implementation Notes