Re: [ndctl PATCH] ndctl/list: Drop named list objects from verbose listing

2020-02-29 Thread Dan Williams
On Fri, Feb 21, 2020 at 2:21 AM qi.f...@fujitsu.com  wrote:
>
>
>
> On 2/20/20 5:28 AM, Verma, Vishal L wrote:
> > On Wed, 2020-02-19 at 12:09 -0800, Dan Williams wrote:
> 
>  Let's do a compromise, because users also hate nonsensical legacy that
>  they can't avoid. How about an environment variable,
>  "NDCTL_LIST_LINT", that users can set to opt into the latest /
>  cleanest output format with the understanding that the clean up may
>  regress scripts that were dependent on the old bugs.
> 
> >>> Hm, this sounds good in concept, but how about waiting for this cleanup
> >>> to go in after the (yes, long pending) config rework. Then this can just
> >>> be a global config setting, and we won't have config things coming from
> >>> the environment as well (which this would be a first of).
> >>
> >> That does make some sense, but I notice that git deals with "cosmetic"
> >> environment variables (GIT_EDITOR, GIT_PAGER, etc) in addition to its
> >> config file. So if we're borrowing from git, I'd also borrow that
> >> config vs environment logic.
> >
> > True, that's reasonable. I guess I was hoping to avoid, if we can,
> > suddenly having a multitude of config sources, but env variables are
> > pretty standard and it should be fine to add them.
>
> Hi,
>
> I am sorry for suspending the ndctl global config patch for such a long
> time. If it is not urgent, I would like to implement it.

It's getting more and more urgent, especially as more people are
trying to use the DIMM security features and finding it difficult to
contend with the command-line interface.

The goal is to import  the git config system. Specifically one of the
features of the git config syntax that are useful for DIMM security
(and in the future Namespace security) is the ability to have named
sub-sections. From the git config man page:

   Sections can be further divided into subsections. To begin a
subsection put its name in double
   quotes, separated by space from the section name, in the
section header, like in the example
   below:

   [section "subsection"]

With that capability policy can be established by a named object
instance. dimm.., or namespace...
___
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-le...@lists.01.org


Re: [ndctl PATCH] ndctl/list: Drop named list objects from verbose listing

2020-02-21 Thread qi.f...@fujitsu.com



On 2/20/20 5:28 AM, Verma, Vishal L wrote:
> On Wed, 2020-02-19 at 12:09 -0800, Dan Williams wrote:

 Let's do a compromise, because users also hate nonsensical legacy that
 they can't avoid. How about an environment variable,
 "NDCTL_LIST_LINT", that users can set to opt into the latest /
 cleanest output format with the understanding that the clean up may
 regress scripts that were dependent on the old bugs.

>>> Hm, this sounds good in concept, but how about waiting for this cleanup
>>> to go in after the (yes, long pending) config rework. Then this can just
>>> be a global config setting, and we won't have config things coming from
>>> the environment as well (which this would be a first of).
>>
>> That does make some sense, but I notice that git deals with "cosmetic"
>> environment variables (GIT_EDITOR, GIT_PAGER, etc) in addition to its
>> config file. So if we're borrowing from git, I'd also borrow that
>> config vs environment logic.
> 
> True, that's reasonable. I guess I was hoping to avoid, if we can,
> suddenly having a multitude of config sources, but env variables are
> pretty standard and it should be fine to add them.

Hi,

I am sorry for suspending the ndctl global config patch for such a long 
time. If it is not urgent, I would like to implement it.

Thank you.
QI fuli

> ___
> Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
> To unsubscribe send an email to linux-nvdimm-le...@lists.01.org
> 
___
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-le...@lists.01.org


Re: [ndctl PATCH] ndctl/list: Drop named list objects from verbose listing

2020-02-19 Thread Verma, Vishal L
On Wed, 2020-02-19 at 12:09 -0800, Dan Williams wrote:
> > > 
> > > Let's do a compromise, because users also hate nonsensical legacy that
> > > they can't avoid. How about an environment variable,
> > > "NDCTL_LIST_LINT", that users can set to opt into the latest /
> > > cleanest output format with the understanding that the clean up may
> > > regress scripts that were dependent on the old bugs.
> > > 
> > Hm, this sounds good in concept, but how about waiting for this cleanup
> > to go in after the (yes, long pending) config rework. Then this can just
> > be a global config setting, and we won't have config things coming from
> > the environment as well (which this would be a first of).
> 
> That does make some sense, but I notice that git deals with "cosmetic"
> environment variables (GIT_EDITOR, GIT_PAGER, etc) in addition to its
> config file. So if we're borrowing from git, I'd also borrow that
> config vs environment logic.

True, that's reasonable. I guess I was hoping to avoid, if we can,
suddenly having a multitude of config sources, but env variables are
pretty standard and it should be fine to add them.
___
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-le...@lists.01.org


Re: [ndctl PATCH] ndctl/list: Drop named list objects from verbose listing

2020-02-19 Thread Dan Williams
On Wed, Feb 19, 2020 at 12:01 PM Verma, Vishal L
 wrote:
>
> On Wed, 2020-02-19 at 10:53 -0800, Dan Williams wrote:
> >
> > > > > Will this break existing code that parses the javascript output?
> > > >
> > > > Always a potential for that. That said, I'd rather attempt to make it
> > > > symmetric and replace it if someone screams, rather than let this
> > > > quirk persist because it makes it impossible to ingest region data
> > > > with the same script across -R and -Rv.
> > >
> > > Yeah, I see where you're coming from.  However, script authors will
> > > still have to deal with older versions of ndctl in the wild (for many
> > > years).  If the decision was up to me, I'd live with the wart in favor
> > > of not breaking scripts when ndctl gets updated.  Users hate that.
> >
> > Let's do a compromise, because users also hate nonsensical legacy that
> > they can't avoid. How about an environment variable,
> > "NDCTL_LIST_LINT", that users can set to opt into the latest /
> > cleanest output format with the understanding that the clean up may
> > regress scripts that were dependent on the old bugs.
> >
> Hm, this sounds good in concept, but how about waiting for this cleanup
> to go in after the (yes, long pending) config rework. Then this can just
> be a global config setting, and we won't have config things coming from
> the environment as well (which this would be a first of).

That does make some sense, but I notice that git deals with "cosmetic"
environment variables (GIT_EDITOR, GIT_PAGER, etc) in addition to its
config file. So if we're borrowing from git, I'd also borrow that
config vs environment logic.
___
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-le...@lists.01.org


Re: [ndctl PATCH] ndctl/list: Drop named list objects from verbose listing

2020-02-19 Thread Verma, Vishal L
On Wed, 2020-02-19 at 10:53 -0800, Dan Williams wrote:
> 
> > > > Will this break existing code that parses the javascript output?
> > > 
> > > Always a potential for that. That said, I'd rather attempt to make it
> > > symmetric and replace it if someone screams, rather than let this
> > > quirk persist because it makes it impossible to ingest region data
> > > with the same script across -R and -Rv.
> > 
> > Yeah, I see where you're coming from.  However, script authors will
> > still have to deal with older versions of ndctl in the wild (for many
> > years).  If the decision was up to me, I'd live with the wart in favor
> > of not breaking scripts when ndctl gets updated.  Users hate that.
> 
> Let's do a compromise, because users also hate nonsensical legacy that
> they can't avoid. How about an environment variable,
> "NDCTL_LIST_LINT", that users can set to opt into the latest /
> cleanest output format with the understanding that the clean up may
> regress scripts that were dependent on the old bugs.
> 
Hm, this sounds good in concept, but how about waiting for this cleanup
to go in after the (yes, long pending) config rework. Then this can just
be a global config setting, and we won't have config things coming from
the environment as well (which this would be a first of).
___
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-le...@lists.01.org


Re: [ndctl PATCH] ndctl/list: Drop named list objects from verbose listing

2020-02-19 Thread Dan Williams
On Wed, Feb 19, 2020 at 10:12 AM Jeff Moyer  wrote:
>
> Dan Williams  writes:
>
> > On Wed, Feb 19, 2020 at 9:56 AM Jeff Moyer  wrote:
> >>
> >> Dan Williams  writes:
> >>
> >> > The only expected difference between "ndctl list -R" and "ndctl list
> >> > -Rv" is some additional output fields. Instead it currently results in
> >> > the region array being contained in a named "regions" list object.
> >> >
> >> > # ndctl list -R -r 0
> >> > [
> >> >   {
> >> > "dev":"region0",
> >> > "size":4294967296,
> >> > "available_size":0,
> >> > "max_available_extent":0,
> >> > "type":"pmem",
> >> > "persistence_domain":"unknown"
> >> >   }
> >> > ]
> >> >
> >> > # ndctl list -Rv -r 0
> >> > {
> >> >   "regions":[
> >> > {
> >> >   "dev":"region0",
> >> >   "size":4294967296,
> >> >   "available_size":0,
> >> >   "max_available_extent":0,
> >> >   "type":"pmem",
> >> >   "numa_node":0,
> >> >   "target_node":2,
> >> >   "persistence_domain":"unknown",
> >> >   "namespaces":[
> >> > {
> >> >   "dev":"namespace0.0",
> >> >   "mode":"fsdax",
> >> >   "map":"mem",
> >> >   "size":4294967296,
> >> >   "sector_size":512,
> >> >   "blockdev":"pmem0",
> >> >   "numa_node":0,
> >> >   "target_node":2
> >> > }
> >> >   ]
> >> > }
> >> >   ]
> >> > }
> >> >
> >> > Drop the named list, by not including namespaces in the listing. Extra
> >> > objects only appear at the -vv level. "ndctl list -v" and "ndctl list
> >> > -Nv" are synonyms and behave as expected.
> >> >
> >> > # ndctl list -Rv -r 0
> >> > [
> >> >   {
> >> > "dev":"region0",
> >> > "size":4294967296,
> >> > "available_size":0,
> >> > "max_available_extent":0,
> >> > "type":"pmem",
> >> > "numa_node":0,
> >> > "target_node":2,
> >> > "persistence_domain":"unknown"
> >> >   }
> >> > ]
> >> >
> >>
> >> Will this break existing code that parses the javascript output?
> >
> > Always a potential for that. That said, I'd rather attempt to make it
> > symmetric and replace it if someone screams, rather than let this
> > quirk persist because it makes it impossible to ingest region data
> > with the same script across -R and -Rv.
>
> Yeah, I see where you're coming from.  However, script authors will
> still have to deal with older versions of ndctl in the wild (for many
> years).  If the decision was up to me, I'd live with the wart in favor
> of not breaking scripts when ndctl gets updated.  Users hate that.

Let's do a compromise, because users also hate nonsensical legacy that
they can't avoid. How about an environment variable,
"NDCTL_LIST_LINT", that users can set to opt into the latest /
cleanest output format with the understanding that the clean up may
regress scripts that were dependent on the old bugs.
___
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-le...@lists.01.org


Re: [ndctl PATCH] ndctl/list: Drop named list objects from verbose listing

2020-02-19 Thread Jeff Moyer
Dan Williams  writes:

> On Wed, Feb 19, 2020 at 9:56 AM Jeff Moyer  wrote:
>>
>> Dan Williams  writes:
>>
>> > The only expected difference between "ndctl list -R" and "ndctl list
>> > -Rv" is some additional output fields. Instead it currently results in
>> > the region array being contained in a named "regions" list object.
>> >
>> > # ndctl list -R -r 0
>> > [
>> >   {
>> > "dev":"region0",
>> > "size":4294967296,
>> > "available_size":0,
>> > "max_available_extent":0,
>> > "type":"pmem",
>> > "persistence_domain":"unknown"
>> >   }
>> > ]
>> >
>> > # ndctl list -Rv -r 0
>> > {
>> >   "regions":[
>> > {
>> >   "dev":"region0",
>> >   "size":4294967296,
>> >   "available_size":0,
>> >   "max_available_extent":0,
>> >   "type":"pmem",
>> >   "numa_node":0,
>> >   "target_node":2,
>> >   "persistence_domain":"unknown",
>> >   "namespaces":[
>> > {
>> >   "dev":"namespace0.0",
>> >   "mode":"fsdax",
>> >   "map":"mem",
>> >   "size":4294967296,
>> >   "sector_size":512,
>> >   "blockdev":"pmem0",
>> >   "numa_node":0,
>> >   "target_node":2
>> > }
>> >   ]
>> > }
>> >   ]
>> > }
>> >
>> > Drop the named list, by not including namespaces in the listing. Extra
>> > objects only appear at the -vv level. "ndctl list -v" and "ndctl list
>> > -Nv" are synonyms and behave as expected.
>> >
>> > # ndctl list -Rv -r 0
>> > [
>> >   {
>> > "dev":"region0",
>> > "size":4294967296,
>> > "available_size":0,
>> > "max_available_extent":0,
>> > "type":"pmem",
>> > "numa_node":0,
>> > "target_node":2,
>> > "persistence_domain":"unknown"
>> >   }
>> > ]
>> >
>>
>> Will this break existing code that parses the javascript output?
>
> Always a potential for that. That said, I'd rather attempt to make it
> symmetric and replace it if someone screams, rather than let this
> quirk persist because it makes it impossible to ingest region data
> with the same script across -R and -Rv.

Yeah, I see where you're coming from.  However, script authors will
still have to deal with older versions of ndctl in the wild (for many
years).  If the decision was up to me, I'd live with the wart in favor
of not breaking scripts when ndctl gets updated.  Users hate that.

-Jeff
___
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-le...@lists.01.org


Re: [ndctl PATCH] ndctl/list: Drop named list objects from verbose listing

2020-02-19 Thread Dan Williams
On Wed, Feb 19, 2020 at 9:56 AM Jeff Moyer  wrote:
>
> Dan Williams  writes:
>
> > The only expected difference between "ndctl list -R" and "ndctl list
> > -Rv" is some additional output fields. Instead it currently results in
> > the region array being contained in a named "regions" list object.
> >
> > # ndctl list -R -r 0
> > [
> >   {
> > "dev":"region0",
> > "size":4294967296,
> > "available_size":0,
> > "max_available_extent":0,
> > "type":"pmem",
> > "persistence_domain":"unknown"
> >   }
> > ]
> >
> > # ndctl list -Rv -r 0
> > {
> >   "regions":[
> > {
> >   "dev":"region0",
> >   "size":4294967296,
> >   "available_size":0,
> >   "max_available_extent":0,
> >   "type":"pmem",
> >   "numa_node":0,
> >   "target_node":2,
> >   "persistence_domain":"unknown",
> >   "namespaces":[
> > {
> >   "dev":"namespace0.0",
> >   "mode":"fsdax",
> >   "map":"mem",
> >   "size":4294967296,
> >   "sector_size":512,
> >   "blockdev":"pmem0",
> >   "numa_node":0,
> >   "target_node":2
> > }
> >   ]
> > }
> >   ]
> > }
> >
> > Drop the named list, by not including namespaces in the listing. Extra
> > objects only appear at the -vv level. "ndctl list -v" and "ndctl list
> > -Nv" are synonyms and behave as expected.
> >
> > # ndctl list -Rv -r 0
> > [
> >   {
> > "dev":"region0",
> > "size":4294967296,
> > "available_size":0,
> > "max_available_extent":0,
> > "type":"pmem",
> > "numa_node":0,
> > "target_node":2,
> > "persistence_domain":"unknown"
> >   }
> > ]
> >
>
> Will this break existing code that parses the javascript output?

Always a potential for that. That said, I'd rather attempt to make it
symmetric and replace it if someone screams, rather than let this
quirk persist because it makes it impossible to ingest region data
with the same script across -R and -Rv.
___
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-le...@lists.01.org


Re: [ndctl PATCH] ndctl/list: Drop named list objects from verbose listing

2020-02-19 Thread Jeff Moyer
Dan Williams  writes:

> The only expected difference between "ndctl list -R" and "ndctl list
> -Rv" is some additional output fields. Instead it currently results in
> the region array being contained in a named "regions" list object.
>
> # ndctl list -R -r 0
> [
>   {
> "dev":"region0",
> "size":4294967296,
> "available_size":0,
> "max_available_extent":0,
> "type":"pmem",
> "persistence_domain":"unknown"
>   }
> ]
>
> # ndctl list -Rv -r 0
> {
>   "regions":[
> {
>   "dev":"region0",
>   "size":4294967296,
>   "available_size":0,
>   "max_available_extent":0,
>   "type":"pmem",
>   "numa_node":0,
>   "target_node":2,
>   "persistence_domain":"unknown",
>   "namespaces":[
> {
>   "dev":"namespace0.0",
>   "mode":"fsdax",
>   "map":"mem",
>   "size":4294967296,
>   "sector_size":512,
>   "blockdev":"pmem0",
>   "numa_node":0,
>   "target_node":2
> }
>   ]
> }
>   ]
> }
>
> Drop the named list, by not including namespaces in the listing. Extra
> objects only appear at the -vv level. "ndctl list -v" and "ndctl list
> -Nv" are synonyms and behave as expected.
>
> # ndctl list -Rv -r 0
> [
>   {
> "dev":"region0",
> "size":4294967296,
> "available_size":0,
> "max_available_extent":0,
> "type":"pmem",
> "numa_node":0,
> "target_node":2,
> "persistence_domain":"unknown"
>   }
> ]
>

Will this break existing code that parses the javascript output?

-Jeff
___
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-le...@lists.01.org


[ndctl PATCH] ndctl/list: Drop named list objects from verbose listing

2019-11-26 Thread Dan Williams
The only expected difference between "ndctl list -R" and "ndctl list
-Rv" is some additional output fields. Instead it currently results in
the region array being contained in a named "regions" list object.

# ndctl list -R -r 0
[
  {
"dev":"region0",
"size":4294967296,
"available_size":0,
"max_available_extent":0,
"type":"pmem",
"persistence_domain":"unknown"
  }
]

# ndctl list -Rv -r 0
{
  "regions":[
{
  "dev":"region0",
  "size":4294967296,
  "available_size":0,
  "max_available_extent":0,
  "type":"pmem",
  "numa_node":0,
  "target_node":2,
  "persistence_domain":"unknown",
  "namespaces":[
{
  "dev":"namespace0.0",
  "mode":"fsdax",
  "map":"mem",
  "size":4294967296,
  "sector_size":512,
  "blockdev":"pmem0",
  "numa_node":0,
  "target_node":2
}
  ]
}
  ]
}

Drop the named list, by not including namespaces in the listing. Extra
objects only appear at the -vv level. "ndctl list -v" and "ndctl list
-Nv" are synonyms and behave as expected.

# ndctl list -Rv -r 0
[
  {
"dev":"region0",
"size":4294967296,
"available_size":0,
"max_available_extent":0,
"type":"pmem",
"numa_node":0,
"target_node":2,
"persistence_domain":"unknown"
  }
]

Another side effect of this change is that it allows for:

ndctl list -Rvvv

...to only show the verbose region details vs assuming that namespaces
and dimms etc also need to be added.

Signed-off-by: Dan Williams 
---
 Documentation/ndctl/ndctl-list.txt |   46 
 ndctl/list.c   |   10 +---
 2 files changed, 52 insertions(+), 4 deletions(-)

diff --git a/Documentation/ndctl/ndctl-list.txt 
b/Documentation/ndctl/ndctl-list.txt
index f9c7434d3b0b..75fd11876395 100644
--- a/Documentation/ndctl/ndctl-list.txt
+++ b/Documentation/ndctl/ndctl-list.txt
@@ -234,6 +234,52 @@ include::xable-bus-options.txt[]
- *-vvv*
  Everything '-vv' provides, plus --health, --capabilities,
  --idle, and --firmware.
+::
+   The verbosity can also be scoped by the object type. For example
+   to just list regions with capabilities and media error info.
+
+# ndctl list -Ru -vvv -r 0
+{
+  "dev":"region0",
+  "size":"4.00 GiB (4.29 GB)",
+  "available_size":0,
+  "max_available_extent":0,
+  "type":"pmem",
+  "numa_node":0,
+  "target_node":2,
+  "capabilities":[
+{
+  "mode":"sector",
+  "sector_sizes":[
+512,
+520,
+528,
+4096,
+4104,
+4160,
+4224
+  ]
+},
+{
+  "mode":"fsdax",
+  "alignments":[
+4096,
+2097152,
+1073741824
+  ]
+},
+{
+  "mode":"devdax",
+  "alignments":[
+4096,
+2097152,
+1073741824
+  ]
+}
+  ],
+  "persistence_domain":"unknown"
+}
+
 
 include::human-option.txt[]
 
diff --git a/ndctl/list.c b/ndctl/list.c
index 607996a85784..125a9fe34cb8 100644
--- a/ndctl/list.c
+++ b/ndctl/list.c
@@ -507,12 +507,14 @@ int cmd_list(int argc, const char **argv, struct 
ndctl_ctx *ctx)
list.health = true;
list.capabilities = true;
case 2:
-   list.dimms = true;
-   list.buses = true;
-   list.regions = true;
+   if (num_list_flags() == 0) {
+   list.dimms = true;
+   list.buses = true;
+   list.regions = true;
+   list.namespaces = true;
+   }
case 1:
list.media_errors = true;
-   list.namespaces = true;
list.dax = true;
case 0:
break;
___
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-le...@lists.01.org