STRUCT ARENA_INFO(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– 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 including nfree reserved blocks.
  • internal_lbasize β€” Internal and external lba sizes may be different as we can round up 'odd' external lbasizes such as 520B to 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 - 512 or 4096.
  • 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 parent nd_btt structure.
  • 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 a log_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