On 7/16/20 7:46 PM, Joao Martins wrote:
Hey,
This series builds on top of this one[0] and does the following improvements
to the Soft-Reserved subdivision:
1) Support for {create,reconfigure}-device for selecting @align (hugepage size).
Here we add a '-a|--align 4K|2M|1G' option to the existing commands;
2) Listing improvements for device alignment and mappings;
Note: Perhaps it is better to hide the mappings by default, and only
print with -v|--verbose. This would align with ndctl, as the mappings
info can be quite large.
3) Allow creating devices from selecting ranges. This allows to keep the
same GPA->HPA mapping as before we kexec the hypervisor with running guests:
daxctl list -d dax0.1 > /var/log/dax0.1.json
kexec -d -l bzImage
systemctl kexec
daxctl create -u --restore /var/log/dax0.1.json
The JSON was what I though it would be easier for an user, given that it is
the data format daxctl outputs. Alternatives could be adding multiple:
--mapping <pgoff>:<start>-<end>
But that could end up in a gigantic line and a little more
unmanageable I think.
This series requires this series[0] on top of Dan's patches[1]:
[0]
https://lore.kernel.org/linux-nvdimm/20200716172913.19658-1-joao.m.martin...
[1]
https://lore.kernel.org/linux-nvdimm/159457116473.754248.7879464730875147...
The only TODO here is docs and improving tests to validate mappings, and test
the restore path.
Suggestions/comments are welcome.
There's a couple of issues in this series regarding daxctl-reconfigure options
and
breakage of ndctl with kernels (<5.10) that do not supply a device @align upon testing
with NVDIMMs. Plus it is missing daxctl-create.sh unit test for @align.
I will fix those and respin, and probably take out the last patch as it's more RFC-ish
and
in need of feedback.
Joao
> Joao Martins (8):
> daxctl: add daxctl_dev_{get,set}_align()
> util/json: Print device align
> daxctl: add align support in reconfigure-device
> daxctl: add align support in create-device
> libdaxctl: add mapping iterator APIs
> daxctl: include mappings when listing
> libdaxctl: add daxctl_dev_set_mapping()
> daxctl: Allow restore devices from JSON metadata
>
> daxctl/device.c | 154 +++++++++++++++++++++++++++++++++++++++--
> daxctl/lib/libdaxctl-private.h | 9 +++
> daxctl/lib/libdaxctl.c | 152 +++++++++++++++++++++++++++++++++++++++-
> daxctl/lib/libdaxctl.sym | 9 +++
> daxctl/libdaxctl.h | 16 +++++
> util/json.c | 63 ++++++++++++++++-
> util/json.h | 3 +
> 7 files changed, 396 insertions(+), 10 deletions(-)
>