NDCTL-READ-INFOBLOCK(1)

πŸ’– ndctl-read-infoblock β€” the tea on reading your info-blocks πŸ’–

okay bestie, welcome to ndctl-read-infoblock, a lil gem from the ndctl manual. she's here to read β€” and if you want, parse β€” the info-block of a namespace. yes the whole thing. no crumbs. let's get into it 🫢


✨ NAME ✨

ndctl-read-infoblock β€” read and optionally parse the info-block a namespace

(it's giving "peek behind the curtain but make it a CLI command" and we're obsessed πŸ’…)


🌸 SYNOPSIS 🌸

ndctl read-infoblock <namespace0.0> [<namespace1.0>..<namespaceN.Y>] [<options>]

πŸ¦‹ DESCRIPTION πŸ¦‹

so real talk, as described in the theory of operation section of ndctl-create-namespace(1), the raw capacity of a namespace can encapsulate a personality, aka a mode of operation. specifically, that mode can be set to one of "sector", "fsdax", or "devdax". each of those modes is defined by an info-block format that uniquely identifies the mode of operation β€” like a lil ID card for your namespace's whole vibe. πŸ”₯

and the read-infoblock command? she knows the location (relative to the start of the namespace) and the field definition of those data structures. she studied. she did the homework. πŸ“š

⚠️ important note, bestie: unlike a partition table, the info-block is not exposed by default. so the namespace needs to be disabled before the info-block can be accessed. you literally cannot skip this step, it's not a suggestion, it's the rules 😭

🌈 EXAMPLE 🌈

here's the whole flow, no cap:

ndctl disable-namespace namespace0.0
disabled 1 namespace
ndctl read-infoblock -j namespace0.0
[
  {
    "dev":"namespace0.0",
    "signature":"NVDIMM_PFN_INFO",
    "uuid":"56b11990-66b1-4d91-9cac-ca084c051259",
    "parent_uuid":"00000000-0000-0000-0000-000000000000",
    "flags":0,
    "version":"1.3",
    "dataoff":69206016,
    "npfns":1031680,
    "mode":2,
    "start_pad":0,
    "end_trunc":0,
    "align":2097152
  }
]

look at that JSON. she's structured. she's beautiful. she ATE. πŸ‘‘


✨ OPTIONS ✨

  • <namespace(s)> β€” one or more namespaceX.Y device names. and yes, you can pass the keyword all to operate on every namespace in the system, optionally filtered by bus id (see the --bus= option), or region id (see the --region= option). live your group-project dreams, operate on everyone πŸ’«
  • -V, --verify β€” attempt to validate that the info-block is self consistent by validating the embedded checksum, and that info-block formats that contain a parent-uuid attribute also match the base-uuid of the namespace. it's the vibe check option. it's literally a vibe check. 🧚
  • -o, --output β€” output file
  • -j, --json β€” parse the info-block data into json. give the people (and the scripts) what they want πŸ“Š
  • -u, --human β€” enable json output and convert number formats to human readable strings, for example show the size in terms of "KB", "MB", "GB", etc instead of a signed 64-bit numbers per the JSON interchange format (implies --json). no more squinting at a giant number like it's a captcha, we're being ✨readable✨ out here
  • -r, --region= β€” a regionX device name, or a region id number. restrict the operation to the specified region(s). the keyword all can be specified to indicate the lack of any restriction, however this is the same as not supplying a --region option at all. so like, all is just the long way of saying nothing. iconic behavior honestly πŸ’€

Copyright Β© 2016 - 2022, Intel Corporation. License GPLv2: GNU GPL version 2 http://gnu.org/licenses/gpl.html. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.


πŸŽ€ SEE ALSO πŸŽ€


and that's the whole page, bestie!! this one's from the ndctl manual, dated 2026-07-07, and it lives under the name NDCTL-READ-INFOBLOCK(1). go forth, disable that namespace, read that info-block, and slay πŸ’–βœ¨πŸŒΈπŸ¦‹πŸ’…πŸ«Ά

πŸ“¦ where this page comes from