Re: [PATCH] libnvdimm: clean up command definitions

From: Yasunori Goto
Date: Mon Aug 28 2017 - 21:15:38 EST


> On Mon, Aug 28, 2017 at 1:50 PM, Jerry Hoemann <jerry.hoemann@xxxxxxx> wrote:
> >
> > On Mon, Aug 28, 2017 at 08:45:32AM -0700, Dan Williams wrote:
> >> Remove the command payloads that do not have an associated libnvdimm
> >> ioctl. I.e. remove the payloads that would only ever be carried in the
> >> ND_CMD_CALL envelope. This prevents userspace from growing unnecessary
> >> dependencies on this kernel header when userspace already has everything
> >> it needs to craft and send these commands.
> >
> > Userspace needs to include linux/ndctl.h to make the call as
> > that is where nd_cmd_pkg is defined.
> >
> > So you want to have some structures defined in ndctl.h and other
> > defined in the to be created libndctl-nfit.h? Plus a third header
> > file for the HPE non-root calls?
>
> Yes. ndctl.h exports the ioctl command payloads, everything that goes
> inside of ND_CMD_CALL is defined by userspace headers. The
> libndctl-nfit.h header is proposed as a place to land vendor agnostic
> NFIT-defined payloads, and any vendor specific definitions would
> remain internal to libndctl as they are today.
>
> > Will libndctl-nfit.h be generally available and installed?
>
> Yes, that's the plan.
>
> > Will it be clean so that other applications can use it to get these
> > definitions? Or will it be loaded w/ a bunch of stuff only useful
> > to your ndctl command?
>
> Yes, that's the plan. It's a bug if libndctl-nfit.h is not generically
> clean for issuing the NFIT root device commands via some ND_CMD_CALL
> helpers from the base libndctl library.
>
> In other words libndctl-nfit.h defines the payload and libndctl
> defines some general helpers for issuing commands.

Maybe I don't understand your idea yet, let me confirm it.

Certainly, current acpi driver does not need these definitions.
But, I think nfit_test.ko will need them to emulate these features.

Do you intend that libndctl-nfit.h should be defined at "include/uapi/linux/"
directory?
Otherwise, it should be defined at "tools/testing/nvdimm/" or
"tools/testing/nvdimm/test" ?

Thanks,
---
Yasunori Goto