nfit, libnvdimm: deprecate the generic SMART ioctl
authorDan Williams <dan.j.williams@intel.com>
Sat, 18 Nov 2017 00:23:08 +0000 (16:23 -0800)
committerDan Williams <dan.j.williams@intel.com>
Mon, 4 Dec 2017 18:19:20 +0000 (10:19 -0800)
commitcdd77d3e193031cc67426cd671d8aa370f7dfee4
tree593f495eb83145d25e848a4a5c88bfb6f5509440
parentae64f9bd1d3621b5e60d7363bc20afb46aede215
nfit, libnvdimm: deprecate the generic SMART ioctl

The kernel's ND_IOCTL_SMART_THRESHOLD command is based on a payload
definition that has become broken / out-of-sync with recent versions of
the NVDIMM_FAMILY_INTEL definition. Deprecate the use of the
ND_IOCTL_SMART_THRESHOLD command in favor of the ND_CMD_CALL approach
taken by NVDIMM_FAMILY_{HPE,MSFT}, where we can manage the per-vendor
variance in userspace.

In a couple years, when the new scheme is widely deployed in userspace
packages, the ND_IOCTL_SMART_THRESHOLD support can be removed. For now
we prevent new binaries from compiling against the kernel header
definitions, but kernel still compatible with old binaries. The
libndctl.h [1] header is now the authoritative interface definition for
NVDIMM SMART.

[1]: https://github.com/pmem/ndctl
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/nvdimm/bus.c
include/uapi/linux/ndctl.h
tools/testing/nvdimm/test/nfit.c
tools/testing/nvdimm/test/nfit_test.h