NDCTL Changelog

The master index can be found at https://github.com/pmem/ndctl/releases‚Äč

v65.0 - 9th May, 2019

This release incorporates functionality up to the 5.1 kernel, and adds a number of bug fixes and improvements.

Highlights include a new command to clear errors on a given namespace, a new travis YAML configuration to enable travis builds for Ubuntu, an example QEMU script in contrib/ for HMAT emulation, an optional poll interval for wait-scrub, several fixes related to the security commands, support for the HYPER-V family of DSM commands, and several fixes to tests, documentation, and related to building.


  • clear-errors: new command to clear errors on a namespace

  • monitor: remove the requirement of a default config

  • sanitize-dimm: allow a zero-key for secure-erase

  • sanitize-dimm: preserve keys after an overwrite

  • load-keys: fix for non-TPM keys


  • security: add a new testlet for load-keys

  • test-core: add dax_pmem* modules

  • misc: fix sys/mman.h vs linux/mman.h includes


  • ndctl_bus_poll_scrub_completion

v64.1 - 5th February, 2019


  • Fix build issues around keyutils inclusion

v64.0 - 2nd February, 2019

This release incorporates functionality up to the 5.0 kernel, and adds a number of bug fixes and improvements.

Highlights include a migration path for the new dax-bus ABI, several cleanups to ndctl-monitor, support for firmware status translation, displaying the supported_alignments attribute, and using it in the namespace creation process, and support for security operations as defined in the Intel DSM specification.


  • inject-smart: check the firmware status for errors

  • zero-labels: correctly handle firmware errors

  • create-namespace: use supported_alignments when available

  • Add new security commands


  • security.sh: new test for security commands

  • device-dax: fix intermittent poison handling failures

  • dsm-fail: cleanup leftover debug


  • ndctl_cmd_submit_xlat

  • ndctl_cmd_xlat_firmware_status

  • ndctl_dax_get_num_alignments

  • ndctl_dax_get_supported_alignment

  • ndctl_dimm_disable_passphrase

  • ndctl_dimm_freeze_security

  • ndctl_dimm_get_security

  • ndctl_dimm_master_secure_erase

  • ndctl_dimm_overwrite

  • ndctl_dimm_secure_erase

  • ndctl_dimm_update_master_passphrase

  • ndctl_dimm_update_passphrase

  • ndctl_dimm_wait_overwrite

  • ndctl_pfn_get_num_alignments

  • ndctl_pfn_get_supported_alignment

v63.0 - 7th October, 2018

This release incorporates functionality up to the 4.20 kernel, and a number of bug fixes and improvements.

Highlights include switching the documentation build to asciidoctor by default, fixes to destroy-namespace for reporting the number of namespaces acted upon, using the namespace badblocks listings exported by the kernel, and making them available to non-root users, a new helper for retrieving the dirty-shutdown-count, reverting the udev rule to set the shutdown count latch and cache the dirty-shutdown-count, and fixing the ndctl-monitor daemon to exit successfully in the absence of NVDIMMs.


  • destroy-namespace: fix number of namespaces reported

  • check-labels: fix the number of labels checked reporting

  • monitor: exit daemon with success when no DIMMs found


  • Fix a missing include for list_smart_dimm

  • pfn-meta-errors.sh: new test for clearing errors in the volatile 'struct page' metadata area


  • ndctl_dimm_get_dirty_shutdown

  • ndctl_namespace_get_first_badblock

  • ndctl_namespace_get_next_badblock

v62.0 - 9th July, 2018

This release incorporates functionality up to the 4.19 kernel, and a number of bug fixes and improvements.

Highlights include addition of the 'ndctl monitor' command to monitor for SMART health events, use of the new max_available_extent sysfs attribute for namespace creation, verbosity levels for ndctl-list, a udev rule for enabling the LSS latch when supported, a bypass route for making the unsafe shutdown count available for non-privileged users, improvements to ndctl-inject-smart that include an 'uninject' option for all fields, and a new unit test, a number of static analysis fixes, and unit test improvements and fixes.


  • monitor: new command for monitoring SMART health events

  • list: support -v, -vv, -vvv verbosity levels

  • inject-smart: add --uninject- and --uninject-all options

  • create-namespace: use maxavailable_extent for namespace creation

  • list: add new fields to -H for alarm_enabled

  • list: always output JSON arrays when --human is absent


  • dax.sh: dax-poisonCheck for availability of MAP_SYNC

  • dax.sh: fix return code

  • device-dax: relax canned timeouts

  • monitor: new test

  • inject-smart: new test

  • max_available_extent_ns: new test


  • ndctl_cmd_smart_inject_ctrl_temperature

  • ndctl_dimm_get_event_flags

  • ndctl_dimm_get_flags

  • ndctl_dimm_get_health

  • ndctl_dimm_is_flag_supported

  • ndctl_dimm_smart_inject_supported

  • ndctl_region_get_max_available_extent

v61.2 - 6th July, 2018


  • libndctl: fix the uninject API (v1) actually injecting errors

v61.1 - 27th June, 2018


  • Add autotools detection for MAP_SYNC

v61.0 - 26th June, 2018

This release incorporates functionality up to the 4.18 kernel, and a number of bug fixes and improvements.

Highlights include a fix to the error injection APIs to inject fewer bytes of errors per sector, support for building documentation with asciidoctor in addition to asciidoc, multi-arrgument support for util__filter, and a new OPTION_FILENAME in option parsing. Unit test updates include cleanups to unit test scripts refactoring out a lot of common boilerplate, MADV_HWPOISON tests, and a new test for capacity vs label locking.


  • inject-error: add a --saturate option to inject entire sectors

  • list: display the 'map' location in namespace listings

  • list: add controller temperature, and its threshold/alarm setting


  • dax-pmd, device-dax: add a test for MADV_HWPOISON

  • sector-mode.sh: fix to work with updated label support in nfit_test

  • common: source common bash functions and variables

  • dsm-fail: test for capacity vs label locking

  • libndctl: update for smart controller temperature

  • various: disable tests that inject poison with dax until 4.19


  • ndctl_cmd_ars_cap_get_clear_unit

  • ndctl_cmd_ars_stat_get_flag_overflow

  • ndctl_namespace_inject_error2

  • ndctl_namespace_uninject_error2

v60.3 - May 17th, 2018


  • ndctl: fix libtool versioning

v60.2 - May 16th, 2018


  • inject-error: inject only 'clear_err_unit' bytes of error per sector

v60.1 - April 23rd, 2018


  • documentation: add inject-smart to the Makefile

  • libndctl: fix ABI breakage due to rename of fw_info_get_updated_version

v60 - April 17th, 2018


This release incorporates functionality up to the 4.17 kernel, and a number of bug fixes and improvements.

Highlights include ack_shutdown_count support, fixes to tests that performed error injections, refactor core topology walking into util_filter_walk(), a new test for partition auto detection for btt/blk namespacees, numa_node support for regions, cleanups to the firmware update command, removal of daxctl io, support for persistence domains for buses and regions, APIs for retrieving and setting the write_cache attribute for namespacees, fixes to ARS APIs, new ARS control commands in ndctl, and an API for the deep_flush attribute for regions.


  • ndctl list: option to display firmware information

  • ndctl create-namespace: fix minimum alignment detection

  • ndctl list: allow filtereing by numa node

  • ndctl list: fix sector_size sometimes showing as -1

  • daxctl io: remove as this functionality is provided in PMDK

  • ndctl update-firmware: fix DSM input/output sizes various: replace direct errno prints with strerror strings

  • ndctl read-labels: fix json reference counting

  • various: replace refrences to 'memory' or 'dax' with 'devdax' or 'fsdax'

  • ndctl list: report the bus scrub state

  • ndctl {wait,start}-scrub: new commands for ARS control

  • ndctl list: add a raw_uuid field to namespace listings


  • ack-shutdown-count-set: new test for the shutdown count APIs

  • various: ensure we use the locally build 'ndctl'

  • various: fix usage of error injection commands for older kernels

  • btt-pad-compat: fix stale json being reused for future commands

  • btt-pad-compat: explicitly request namespace size

  • dpa-alloc: fix for kernels with 4M min namespace size

  • btt-pad-compat: skip for pre-4k capable kernels

  • firmware-update: remove fallocate

  • rescan-partitions: new test for autodetection of partitions

  • core: fix module taint sanity check

  • libndctl: add write_cache testing in check_nameespaces()

  • pmem-errors: fix locking vs new ARS reworks


  • ndctl_bus_get_persistence_domain

  • ndctl_bus_get_scrub_state

  • ndctl_bus_start_scrub

  • ndctl_cmd_fw_info_get_next_version

  • ndctl_dimm_cmd_new_ack_shutdown_count

  • ndctl_dimm_fw_update_supported

  • ndctl_namespace_disable_write_cache

  • ndctl_namespace_enable_write_cache

  • ndctl_namespace_write_cache_is_enabled

  • ndctl_region_deep_flush

  • ndctl_region_get_numa_node

  • ndctl_region_get_persistence_domain

v59.3 - March 27th, 2018


  • create-namespace: fix minimum alignment detection

  • list: fix sector_size listing

  • API, smart: fix threshold temperature helper

  • update-firmware: fix input/output size for NVDIMM_FAMILY_INTEL

  • update-firmware: kill usage of flock() in verify_fw_file()

  • test: fix module-taint sanity-check

v59.2 - February 9th, 2018


  • Unit test fixups for package build environments.

v59.1 - February 9th, 2018


  • Compile fixes for ARM and PowerPC

v59.0 - February 9th, 2018

This release incorporates functionality up to the 4.16 kernel, and a number of bug fixes and improvements.

Highlights include new ACPI error injection DSM support, a variety of smart enhancements that include getting and setting thresholds, injecting smart attribute values and flags, support for firmware update, and fixes for a BTT padding incompatibility.


  • ndctl inject-error - new command for media error injection

  • ndctl disable-region - check for mounted namespaces

  • ndctl {create,destroy}-namespace - clarify --force option

  • ndctl create-namespace - clarify autolabel failures and fallback

  • ndctl list - use 'fsdax' and 'devdax' modes

  • ndctl update-firmware - new command for firmware update

  • ndctl inject-smart - new command for setting smart thresholds and injecting attributes


  • inject-error: new test for the error injection interfaces

  • btt-errors: new test for media error handling in the BTT

  • smart-listen: test for listening for smart triggers

  • smart-notify: generate smart notifications

  • hugetlb: test hugetlb faults

  • btt-pad-incompat: regression test for the old and new versions of the btt log padding format

  • update-firmware: test the firmware update process


  • ndctl_bb_get_block

  • ndctl_bb_get_count

  • ndctl_bus_get_scrub_count

  • ndctl_bus_has_error_injection

  • ndctl_bus_wait_for_scrub_completion

  • ndctl_cmd_fw_fquery_get_fw_rev

  • ndctl_cmd_fw_info_get_max_query_time

  • ndctl_cmd_fw_info_get_max_send_len

  • ndctl_cmd_fw_info_get_query_interval

  • ndctl_cmd_fw_info_get_run_version

  • ndctl_cmd_fw_info_get_storage_size

  • ndctl_cmd_fw_info_get_updated_version

  • ndctl_cmd_fw_start_get_context

  • ndctl_cmd_fw_xlat_firmware_status

  • ndctl_cmd_smart_get_ctrl_temperature

  • ndctl_cmd_smart_get_media_temperature

  • ndctl_cmd_smart_get_shutdown_count

  • ndctl_cmd_smart_inject_fatal

  • ndctl_cmd_smart_inject_media_temperature

  • ndctl_cmd_smart_inject_spares

  • ndctl_cmd_smart_inject_unsafe_shutdown

  • ndctl_cmd_smart_threshold_get_ctrl_temperature

  • ndctl_cmd_smart_threshold_get_media_temperature

  • ndctl_cmd_smart_threshold_get_supported_alarms

  • ndctl_cmd_smart_threshold_set_alarm_control

  • ndctl_cmd_smart_threshold_set_ctrl_temperature ndctl_cmd_smart_threshold_set_media_temperature

  • ndctl_cmd_smart_threshold_set_spares

  • ndctl_cmd_smart_threshold_set_temperature

  • ndctl_decode_smart_temperature

  • ndctl_dimm_aliased ndctl_dimm_cmd_new_fw_abort

  • ndctl_dimm_cmd_new_fw_finish

  • ndctl_dimm_cmd_new_fw_finish_query

  • ndctl_dimm_cmd_new_fw_get_info

  • ndctl_dimm_cmd_new_fw_send

  • ndctl_dimm_cmd_new_fw_start_update

  • ndctl_dimm_cmd_new_smart_inject

  • ndctl_dimm_cmd_new_smart_set_threshold

  • ndctl_dimm_locked ndctl_encode_smart_temperature

  • ndctl_namespace_inject_error

  • ndctl_namespace_injection_get_first_bb

  • ndctl_namespace_injection_get_next_bb

  • ndctl_namespace_injection_status

  • ndctl_namespace_uninject_error