STRUCT ARENA_INFO(9)
π struct arena_info(9) β handle for an arena π
okay bestie, welcome to the Kernel API Manual page for struct arena_info(9) β yes, the manual name is literally right there, weβre being organized today π
. This is the whole struct, every member, and all the little details, so letβs get into it.
πΈ NAME πΈ
struct arena_info β handle for an arena
β¨ SYNOPSIS β¨
struct arena_info {
u64 size;
u64 external_lba_start;
u32 internal_nlba;
u32 internal_lbasize;
u32 external_nlba;
u32 external_lbasize;
u32 nfree;
u16 version_major;
u16 version_minor;
u32 sector_size;
u64 nextoff;
u64 infooff;
u64 dataoff;
u64 mapoff;
u64 logoff;
u64 info2off;
struct free_entry *freelist;
u32 *rtt;
struct aligned_lock *map_locks;
struct nd_btt *nd_btt;
struct list_head list;
struct dentry *debugfs_dir;
u32 flags;
struct mutex err_lock;
int log_index[2];
};
π§ Members π§
sizeβ Size in bytes this arena occupies on the raw device. This includes arena metadata. metadata is included, no cap.external_lba_startβ The first external LBA in this arena.internal_nlbaβ Number of internal blocks available in the arena includingnfreereserved blocks.internal_lbasizeβ Internal and external lba sizes may be different as we can round up 'odd' external lbasizes such as520Bto be aligned.external_nlbaβ Number of blocks contributed by the arena to the number reported to upper layers. (internal_nlba - nfree)external_lbasizeβ LBA size as exposed to upper layers.nfreeβ A reserve number of 'free' blocks that is used to handle incoming writes.version_majorβ Metadata layout version major.version_minorβ Metadata layout version minor.sector_sizeβ The Linux sector size -512or4096.nextoffβ Offset in bytes to the start of the next arena.infooffβ Offset in bytes to the info block of this arena.dataoffβ Offset in bytes to the data area of this arena.mapoffβ Offset in bytes to the map area of this arena.logoffβ Offset in bytes to the log area of this arena.info2offβ Offset in bytes to the backup info block of this arena.freelistβ Pointer to in-memory list of free blocks.rttβ Pointer to in-memory"Read Tracking Table".map_locksβ Spinlocks protecting concurrent map writes.nd_bttβ Pointer to parentnd_bttstructure.listβ List head for list of arenas.debugfs_dirβ Debugfs dentry.flagsβ Arena flags - may signify error states.err_lockβ Mutex for synchronizing error clearing.log_indexβ Indices of the valid log entries in alog_group.
π Description π
arena_info is a per-arena handle. Once an arena is narrowed down for an IO, this struct is passed around for the duration of the IO. itβs giving βmain character structβ for exactly one IOβs journey π¦.
π¦ SEE ALSO π¦
Kernel file ./drivers/nvdimm/btt.h and struct btt(9) β go read those too, bestie π.
with love and zero missing fields, your kernel group chat π
β¨ β source/version: ./drivers/nvdimm, date: October 2026, and yeah, the manual name is struct arena_info(9) π.
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms