NDCTL-DISABLE-NAMESPACE(1)

πŸŽ€ NDCTL-DISABLE-NAMESPACE πŸŽ€

okay so bestie, this is the page for ndctl-disable-namespace(1) out of the ndctl Manual, and it's literally the "turn the namespace off" button. sit with me, we're gonna go through it together πŸ’–


✨ NAME ✨

ndctl-disable-namespace β€” disable the given namespace(s). that's it, that's the whole job. periodt πŸ’…


🌸 SYNOPSIS 🌸

ndctl disable-namespace <namespace> [<options>]

πŸ¦‹ THEORY OF OPERATION πŸ¦‹

okay so first things first, the lore. the capacity of an NVDIMM REGION β€” that's a contiguous span of persistent memory β€” is accessed via one or more NAMESPACE devices. and REGION? that's just the Linux word for what ACPI and UEFI call a DIMM-interleave-set, or a system-physical-address-range that is striped (by the memory controller) across one or more memory modules. so like. the same thing, three names, classic. πŸ™ˆ

the UEFI specification defines the NVDIMM Label Protocol as the combination of label area access methods and a data format for provisioning one or more NAMESPACE objects from a REGION. heads up tho: label support is optional, and if Linux doesn't detect the label capability it will automatically instantiate a "label-less" namespace per region. examples of label-less namespaces are the ones created by the kernel's memmap=ss!nn command line option (see the nvdimm wiki on kernel.org), or NVDIMMs without a valid namespace index in their label area. no labels, no index, still a namespace, she's just doing her own thing 🫢

Note πŸ’€ label-less namespaces lack many of the features of their label-rich cousins. for example, their size cannot be modified, and they cannot be fully destroyed (i.e. the space reclaimed). a destroy operation will zero any mode-specific metadata. finally, for create-namespace operations on label-less namespaces, ndctl bypasses the region capacity availability checks, and always satisfies the request using the full region capacity. the only reconfiguration operation supported on a label-less namespace is changing its mode. that's it. that's the list. 😭

now, a namespace can be provisioned to operate in one of 4 modes: fsdax, devdax, sector, and raw. here are the expected usage models for these modes:

  • fsdax: Filesystem-DAX mode is the default mode of a namespace when specifying ndctl create-namespace with no options. it creates a block device (/dev/pmemX[.Y]) that supports the DAX capabilities of Linux filesystems (xfs and ext4 to date). DAX removes the page cache from the I/O path and allows mmap(2) to establish direct mappings to persistent memory media. the DAX capability enables workloads / working-sets that would exceed the capacity of the page cache to scale up to the capacity of persistent memory. workloads that fit in page cache or perform bulk data transfers may not see benefit from DAX. when in doubt, pick this mode. fr fr.
  • devdax</b>: Device-DAX mode enables similar mmap(2) DAX mapping capabilities as Filesystem-DAX. however, instead of a block-device that can support a DAX-enabled filesystem, this mode emits a single character device file (/dev/daxX.Y). use this mode to assign persistent memory to a virtual-machine, register persistent memory for RDMA, or when gigantic mappings are needed. she's giving raw mapping energy ✨
  • sector: use this mode to host legacy filesystems that do not checksum metadata or applications that are not prepared for torn sectors after a crash. expected usage for this mode is for small boot volumes. this mode is compatible with other operating systems. old school, but make it interoperable πŸ“
  • raw: Raw mode is effectively just a memory disk that does not support DAX. typically this indicates a namespace that was created by tooling or another operating system that did not know how to create a Linux fsdax or devdax mode namespace. this mode is compatible with other operating systems, but again, does not support DAX operation. so like, no DAX. none. zero. πŸ’€

πŸ’… OPTIONS πŸ’…

  • <namespace> β€” a namespaceX.Y device name. the keyword all can be specified to carry out the operation on every namespace in the system, optionally filtered by region (see the --region= option). one namespace, or all of them, no in-between, we love a binary πŸ’–
  • -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. same vibe, different spelling ✨
  • -b, --bus= β€” a bus id number, or a provider string (e.g. "ACPI.NFIT"). restrict the operation to the specified bus(es). the keyword all can be specified to indicate the lack of any restriction, however this is the same as not supplying a --bus option at all. again. all means nothing, and nothing means all 🧚
  • -v, --verbose β€” emit debug messages for the namespace operation. for when you need the tea on what's happening πŸ”₯

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. no cap, the warranty is genuinely not there πŸ’œ


🌈 SEE ALSO 🌈


okay bestie that's the whole page, you ate it πŸ’– this was the ndctl manual, dated 2026-07-07, and honestly? iconic. go disable something (responsibly, king) πŸ‘‘βœ¨πŸŒΈ

πŸ“¦ where this page comes from