From: Dan Williams <dan.j.williams@intel.com>
To: linux-nvdimm@lists.01.org
Subject: [ndctl PATCH v3 5/8] ndctl/dimm: Limit read-labels with --index option
Date: Fri, 02 Aug 2019 16:54:51 -0700 [thread overview]
Message-ID: <156479009111.707590.17235381898000706283.stgit@dwillia2-desk3.amr.corp.intel.com> (raw)
In-Reply-To: <156479006271.707590.298793474092813749.stgit@dwillia2-desk3.amr.corp.intel.com>
Provide a capability to limit the read-labels payload to just the
index-block data space.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
---
Documentation/ndctl/ndctl-read-labels.txt | 7 +++++
ndctl/dimm.c | 43 ++++++++++++++++++-----------
2 files changed, 34 insertions(+), 16 deletions(-)
diff --git a/Documentation/ndctl/ndctl-read-labels.txt b/Documentation/ndctl/ndctl-read-labels.txt
index 756713ee12d7..b5ddae9c269e 100644
--- a/Documentation/ndctl/ndctl-read-labels.txt
+++ b/Documentation/ndctl/ndctl-read-labels.txt
@@ -19,6 +19,13 @@ file. In the multi-dimm case the data is concatenated.
OPTIONS
-------
include::labels-options.txt[]
+-I::
+--index::
+ Limit the span of the label operation to just the index-block
+ area. This is useful to determine if the dimm label area is
+ initialized. Note that this option and --size/--offset are
+ mutually exclusive.
+
-o::
--output::
output file
diff --git a/ndctl/dimm.c b/ndctl/dimm.c
index 70128dd2df27..5e6fa19bab15 100644
--- a/ndctl/dimm.c
+++ b/ndctl/dimm.c
@@ -55,6 +55,7 @@ static struct parameters {
bool master_pass;
bool human;
bool force;
+ bool index;
bool json;
bool verbose;
} param = {
@@ -276,27 +277,26 @@ static struct json_object *dump_json(struct ndctl_dimm *dimm,
if (!jdimm)
return NULL;
- jindex = dump_index_json(cmd_read, size);
- if (!jindex)
- goto err_jindex;
- jlabel = dump_label_json(dimm, cmd_read, size, flags);
- if (!jlabel)
- goto err_jlabel;
jobj = json_object_new_string(ndctl_dimm_get_devname(dimm));
if (!jobj)
- goto err_jobj;
-
+ goto err;
json_object_object_add(jdimm, "dev", jobj);
+
+ jindex = dump_index_json(cmd_read, size);
+ if (!jindex)
+ goto err;
json_object_object_add(jdimm, "index", jindex);
+ if (param.index)
+ return jdimm;
+
+ jlabel = dump_label_json(dimm, cmd_read, size, flags);
+ if (!jlabel)
+ goto err;
json_object_object_add(jdimm, "label", jlabel);
- return jdimm;
- err_jobj:
- json_object_put(jlabel);
- err_jlabel:
- json_object_put(jindex);
- err_jindex:
+ return jdimm;
+err:
json_object_put(jdimm);
return NULL;
}
@@ -385,7 +385,11 @@ static int action_read(struct ndctl_dimm *dimm, struct action_context *actx)
ssize_t size;
int rc = 0;
- cmd_read = ndctl_dimm_read_label_extent(dimm, param.len, param.offset);
+ if (param.index)
+ cmd_read = ndctl_dimm_read_label_index(dimm);
+ else
+ cmd_read = ndctl_dimm_read_label_extent(dimm, param.len,
+ param.offset);
if (!cmd_read)
return -EINVAL;
@@ -1054,7 +1058,8 @@ OPT_BOOLEAN('v',"verbose", ¶m.verbose, "turn on debug")
OPT_STRING('o', "output", ¶m.outfile, "output-file", \
"filename to write label area contents"), \
OPT_BOOLEAN('j', "json", ¶m.json, "parse label data into json"), \
-OPT_BOOLEAN('u', "human", ¶m.human, "use human friendly number formats (implies --json)")
+OPT_BOOLEAN('u', "human", ¶m.human, "use human friendly number formats (implies --json)"), \
+OPT_BOOLEAN('I', "index", ¶m.index, "limit read to the index block area")
#define WRITE_OPTIONS() \
OPT_STRING('i', "input", ¶m.infile, "input-file", \
@@ -1185,6 +1190,12 @@ static int dimm_action(int argc, const char **argv, struct ndctl_ctx *ctx,
return -EINVAL;
}
+ if (param.index && param.len) {
+ fprintf(stderr, "pick either --size, or --index, not both\n");
+ usage_with_options(u, options);
+ return -EINVAL;
+ }
+
if (json) {
actx.jdimms = json_object_new_array();
if (!actx.jdimms)
_______________________________________________
Linux-nvdimm mailing list
Linux-nvdimm@lists.01.org
https://lists.01.org/mailman/listinfo/linux-nvdimm
next prev parent reply other threads:[~2019-08-03 0:11 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-02 23:54 [ndctl PATCH v3 0/8] Improvements for namespace creation/interrogation Dan Williams
2019-08-02 23:54 ` [ndctl PATCH v3 1/8] ndctl/build: Suppress -Waddress-of-packed-member Dan Williams
2019-08-05 16:54 ` Jeff Moyer
2019-08-05 17:34 ` Dan Williams
2019-08-05 17:45 ` Jeff Moyer
2019-08-05 19:50 ` Dan Williams
2019-08-02 23:54 ` [ndctl PATCH v3 2/8] ndctl/dimm: Support small label reads/writes Dan Williams
2019-08-02 23:54 ` [ndctl PATCH v3 3/8] ndctl/dimm: Minimize data-transfer for init-labels Dan Williams
2019-08-02 23:54 ` [ndctl PATCH v3 4/8] ndctl/dimm: Add offset and size options to {read, write, zero}-labels Dan Williams
2019-08-02 23:54 ` Dan Williams [this message]
2019-08-02 23:54 ` [ndctl PATCH v3 6/8] ndctl/namespace: Minimize label data transfer for autolabel Dan Williams
2019-08-02 23:55 ` [ndctl PATCH v3 7/8] ndctl/namespace: Continue region search on 'missing seed' event Dan Williams
2019-08-02 23:55 ` [ndctl PATCH v3 8/8] ndctl/namespace: Report ENOSPC when regions are full Dan Williams
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=156479009111.707590.17235381898000706283.stgit@dwillia2-desk3.amr.corp.intel.com \
--to=dan.j.williams@intel.com \
--cc=linux-nvdimm@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).