---
name: "ndctl-write-infoblock"
section: "1"
platform: "linux"
package: "ndctl"
version: "85-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/ndctl-write-infoblock"
---

# ndctl-write-infoblock(1)

generate and write an infoblock

## NAME

ndctl-write-infoblock - generate and write an infoblock

## SYNOPSIS

```
ndctl write-infoblock [<namespaceX.Y> | -o <file> | --stdout] [<options>]
```

## DESCRIPTION

As described in the theory of operation section of [ndctl-create-namespace(1)](/ndctl-create-namespace/1.md), the raw capacity of a namespace may encapsulate a personality, or mode of operation. Specifically, the mode may be set to one of "sector", "fsdax", and "devdax". Each of those modes is defined by an info-block format that uniquely identifies the mode of operation. The write-infoblock command knows how to generate an "fsdax" or "devdax" info-block relative to the specified image size.

The generated block can be written to an existing namespace (provided that namespace is not presently active), written to a file, or piped to standard-out.

**Warning**\

This command is a debug facility that can generate image files with valid infoblocks, but also invalid infoblocks for testing the kernel. Use the --offset and --align options with care. Namely --offset must match the actual physical address offset of the namespace it is applied to, and --align must be one of the architectures supported page sizes.

## EXAMPLE

```
ndctl write-infoblock -s 1T -c | ndctl read-infoblock -j
wrote 1 infoblock
[
  {
    "file":"<stdin>",
    "signature":"NVDIMM_PFN_INFO",
    "uuid":"42e1d574-76ac-402c-9132-5436e31528c0",
    "parent_uuid":"ef83e49c-4c4a-4fae-b908-72e94675b1b7",
    "flags":0,
    "version":"1.4",
    "dataoff":17196646400,
    "npfns":264237056,
    "mode":2,
    "start_pad":0,
    "end_trunc":0,
    "align":16777216,
    "page_size":4096,
    "page_struct_size":64
  }
]
read 1 infoblock
```

## OPTIONS

\<namespace(s)\>

One or more *namespaceX.Y* device names. The keyword *all* can be specified to operate on every namespace in the system, optionally filtered by bus id (see --bus= option), or region id (see --region= option).

- \-c, --stdout

  Write the infoblock to stdout

\-o, --output=

Write the infoblock to the given file (mutually exclusive with --stdout).

\-m, --mode=

Select the infoblock mode between *fsdax* and *devdax*. See [ndctl-create-namespace(1)](/ndctl-create-namespace/1.md) for details on --mode.

\-s, --size=

Override the default size determined from the size of the file specified to --output. In the --stdout case, this option is required.

\-a, --align=

Specify the "align" value in the infoblock. In the --mode=devdax case "align" designates a page mapping size. There is no validation of this value relative to the page mapping capabilities of the platform.

\-u, --uuid=

Override the default autogenerated UUID with the given value.

\-M, --map=

Select whether the page map array is allocated from the device or from "System RAM". Defaults to the device. See [ndctl-create-namespace(1)](/ndctl-create-namespace/1.md) for more details.

\-p, --parent-uuid=

When the infoblock is stored on a labelled namespace the UUID of the namespace must match the "parent uuid" attribute in the infoblock. This option defaults to the UUID of the namespace when --output and --stdout are not used, otherwise it defaults to a NULL UUID (all zeroes).

\-O, --offset=

By default the assumption is that the infoblock is being written to a namespace or namespace-image that is aligned to its size. Specify this EXPERT/DEBUG option to experiment / test the kernel’s handling of namespaces that violate that assumption.

\-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.

## COPYRIGHT

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

[ndctl-create-namespace(1)](/ndctl-create-namespace/1.md), *UEFI NVDIMM Label Protocol* \<http://www.uefi.org/sites/default/files/resources/UEFI\_Spec\_2\_7.pdf\>
