Changes since v1[1]:
- Collect review tags
- Fix 'make clean' removing the reconfigure script from the source tree
(Fenghua, Qi)
- Documentation wordsmithing (Dan)
- Fix line break after declarations in parse-configs.c (Dan)
- Move daxctl config files to its own directory, /etc/daxctl/ (Dan)
- Improve failure mode in the absence of a configs directory
- Rename {nd,dax}ctl_{get|set}_configs to
{nd,dax}ctl_{get|set}_configs_dir
- Exit with success if -C is specified, but no matching config section
is found.
- Refuse to proceed if CLI options are passed in along with -C (Dan)
- In the config file, rename: s/[auto-online foo]/[reconfigure-device foo/
and s/uuid/nvdimm.uuid/ (Dan)
- Teach device.c to accept /dev/daxX.Y instead of only daxX.Y and thus
remove the need for a wrapper script that systemd invokes (Dan)
These patches add policy (config file) support to daxctl. The
introductory user is daxctl-reconfigure-device. Sysadmins may wish to
use daxctl devices as system-ram, but it may be cumbersome to automate
the reconfiguration step for every device upon boot.
Introduce a new option for daxctl-reconfigure-device, --check-config.
This is at the heart of policy based reconfiguration, as it allows
daxctl to look up reconfiguration parameters for a given device from the
config system instead of the command line.
Some systemd and udev glue then automates this for every new dax device
that shows up, providing a way for the administrator to simply list all
the 'system-ram' UUIDs in a config file, and not have to worry about
anything else.
An example config file can be:
# cat /etc/ndctl/daxctl.conf
[reconfigure-device unique_identifier_foo]
nvdimm.uuid = 48d8e42c-a2f0-4312-9e70-a837faafe862
mode = system-ram
online = true
movable = false
Any file under '/etc/ndctl/' can be used - all files with a '.conf' suffix
will be considered when looking for matches.
These patches depend on the initial config file support from Qi Fuli[2].
I've re-rolled Qi's original patches as the first five patches in this
series because of a change I made for graceful handling in the case of a
missing configs directory, and also to incorporate review feedback that
applied to the dependant patches. Patch 6 onwards is the actual v2 of
the daxctl policy work.
A branch containing these patches is available at [3].
[1]:
https://lore.kernel.org/nvdimm/[email protected]/
[2]: https://lore.kernel.org/nvdimm/[email protected]/
[3]: https://github.com/pmem/ndctl/tree/vv/daxctl_config_v2
QI Fuli (5):
ndctl, util: add iniparser helper
ndctl, util: add parse-configs helper
ndctl: make ndctl support configuration files
ndctl, config: add the default ndctl configuration file
ndctl, monitor: refator monitor for supporting multiple config files
Vishal Verma (7):
ndctl: Update ndctl.spec.in for 'ndctl.conf'
daxctl: Documentation updates for persistent reconfiguration
util/parse-config: refactor filter_conf_files into util/
daxctl: add basic config parsing support
util/parse-configs: add a key/value search helper
daxctl/device.c: add an option for getting params from a config file
daxctl: add systemd service and udev rule for automatic
reconfiguration
.../daxctl/daxctl-reconfigure-device.txt | 75 ++
Documentation/ndctl/ndctl-monitor.txt | 8 +-
configure.ac | 18 +-
Makefile.am | 8 +-
ndctl/lib/private.h | 1 +
daxctl/lib/libdaxctl.c | 39 +
ndctl/lib/libndctl.c | 39 +
daxctl/libdaxctl.h | 2 +
ndctl/libndctl.h | 2 +
util/dictionary.h | 175 ++++
util/iniparser.h | 360 ++++++++
util/parse-configs.h | 53 ++
daxctl/daxctl.c | 1 +
daxctl/device.c | 174 +++-
ndctl/monitor.c | 73 +-
ndctl/ndctl.c | 1 +
util/dictionary.c | 383 ++++++++
util/iniparser.c | 838 ++++++++++++++++++
util/parse-configs.c | 150 ++++
Documentation/daxctl/Makefile.am | 11 +-
Documentation/ndctl/Makefile.am | 2 +-
daxctl/90-daxctl-device.rules | 1 +
daxctl/Makefile.am | 9 +
daxctl/[email protected] | 8 +
daxctl/lib/Makefile.am | 6 +
daxctl/lib/libdaxctl.sym | 2 +
ndctl.spec.in | 4 +
ndctl/Makefile.am | 9 +-
ndctl/lib/Makefile.am | 6 +
ndctl/lib/libndctl.sym | 2 +
ndctl/ndctl.conf | 56 ++
31 files changed, 2467 insertions(+), 49 deletions(-)
create mode 100644 util/dictionary.h
create mode 100644 util/iniparser.h
create mode 100644 util/parse-configs.h
create mode 100644 util/dictionary.c
create mode 100644 util/iniparser.c
create mode 100644 util/parse-configs.c
create mode 100644 daxctl/90-daxctl-device.rules
create mode 100644 daxctl/[email protected]
create mode 100644 ndctl/ndctl.conf
base-commit: 4e646fa490ba4b782afa188dd8818b94c419924e
--
2.33.1