The master index can be found at https://github.com/pmem/ndctl/releases​
This release incorporates functionality up to the 5.4 kernel, and adds a number of bug fixes, and improvements.
Highlights include small changes for PowerPC compatibility, improvements to the dax.sh unit test to detect failures in mapping huge pages, support for the 'security frozen' attribute, user experience improvements for the daxctl-reconfigure-device command, including an option to specify movable vs. non-movable state for onlining memory, and an option to allow create-namespaces to create a maximal configuration until it exhausts all available region capacity.
Commands:
create-namespace: add --continue option
daxctl-reconfigure-device: add --no-movable option
daxctl-reconfigure-device: display movable state in listings
daxctl-reconfigure-device: detect races in memory onlining
security: support for 'security frozen' attribute
Tests:
dax.sh: add detection for huge page failures
dax.sh: add XFS reflink dependency
daxctl-devices.sh: skip on older kernels
APIs:
ndctl_dimm_security_is_frozen
daxctl_memory_is_movable
daxctl_memory_online_no_movable
This release incorporates functionality up to the 5.3 kernel, and adds a number of bug fixes, and improvements.
Highlights include a new command to reconfigure dax devices to different modes (devdax - default, and system-ram - to hotplug the dax device as system memory), improvements to ndctl-{read,write,init}-labels allowing smaller sized reads/writes, usability fixes to ndctl-monitor, and ndctl-create-namespace, and a fix to ndctl-check-namespace allowing it to be used on systems with different page sizes.
Commands:
daxctl-reconfigure-device: new command for device mode management
daxctl-{on,off}line-memory: new commands for devices in system-ram mode
monitor: logging improvements, allow sending to background
inject-error: refuse to operate on active BTT namespaces
*-labels: improvements to minimize data transfer
create-namespace: usability improvements around region search
Tests:
security.sh: handle backup keys, mark test as 'destructive'
device-dax: fix bus-model detection
daxctl-devices: new test for daxctl-reconfigure-device
APIs:
ndctl_cmd_cfg_read_set_extent
ndctl_cmd_cfg_write_set_extent
ndctl_dimm_read_label_extent
ndctl_dimm_read_label_index
ndctl_dimm_zero_label_extent
daxctl_dev_disable
daxctl_dev_enable_devdax
daxctl_dev_enable_ram
daxctl_dev_get_ctx
daxctl_dev_get_memory
daxctl_dev_get_resource
daxctl_dev_get_target_node
daxctl_dev_is_enabled
daxctl_memory_get_block_size
daxctl_memory_get_dev
daxctl_memory_get_node_path
daxctl_memory_is_online
daxctl_memory_num_sections
daxctl_memory_offline
daxctl_memory_online
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.
Commands:
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
Tests:
security: add a new testlet for load-keys
test-core: add dax_pmem* modules
misc: fix sys/mman.h vs linux/mman.h includes
APIs:
ndctl_bus_poll_scrub_completion
Fixes:
Fix build issues around keyutils inclusion
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.
Commands:
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
Tests:
security.sh: new test for security commands
device-dax: fix intermittent poison handling failures
dsm-fail: cleanup leftover debug
APIs:
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
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.
Commands:
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
Tests:
Fix a missing include for list_smart_dimm
pfn-meta-errors.sh: new test for clearing errors in the volatile 'struct page' metadata area
APIs:
ndctl_dimm_get_dirty_shutdown
ndctl_namespace_get_first_badblock
ndctl_namespace_get_next_badblock
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.
Commands:
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
Tests:
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
APIs:
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
Fixes:
libndctl: fix the uninject API (v1) actually injecting errors
Fixes:
Add autotools detection for MAP_SYNC
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.
Commands:
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
Tests:
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
APIs:
ndctl_cmd_ars_cap_get_clear_unit
ndctl_cmd_ars_stat_get_flag_overflow
ndctl_namespace_inject_error2
ndctl_namespace_uninject_error2
Fixes:
ndctl: fix libtool versioning
Fixes:
inject-error: inject only 'clear_err_unit' bytes of error per sector
Fixes:
documentation: add inject-smart to the Makefile
libndctl: fix ABI breakage due to rename of fw_info_get_updated_version
Added:
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.
Commands:
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
Tests:
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
API's:
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
Fixes:
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
Fixes:
Unit test fixups for package build environments.
Fixes:
Compile fixes for ARM and PowerPC
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.
Commands:
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
Tests:
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
API's:
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