xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [RFC NDCTL PATCH] ndctl: add support for Xen mode namespace
@ 2016-10-10  0:36 Haozhong Zhang
  0 siblings, 0 replies; only message in thread
From: Haozhong Zhang @ 2016-10-10  0:36 UTC (permalink / raw)
  To: linux-nvdimm, xen-devel; +Cc: Haozhong Zhang, Dan Williams, Xiao Guangrong

Add support to create the Xen mode namespace which turns the underlying
pfn device into PFN_MODE_XEN.

Signed-off-by: Haozhong Zhang <haozhong.zhang@intel.com>
---
 ndctl/builtin-xaction-namespace.c | 7 ++++++-
 ndctl/lib/libndctl.c              | 6 ++++++
 ndctl/libndctl.h.in               | 2 ++
 ndctl/util/json.c                 | 4 ++++
 4 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/ndctl/builtin-xaction-namespace.c b/ndctl/builtin-xaction-namespace.c
index 9b1702d..f60551d 100644
--- a/ndctl/builtin-xaction-namespace.c
+++ b/ndctl/builtin-xaction-namespace.c
@@ -176,6 +176,8 @@ static int set_defaults(enum namespace_action mode)
 			/* pass */;
 		else if (strcmp(param.map, "dev") == 0)
 			/* pass */;
+		else if (strcmp(param.map, "xen") == 0)
+			/* pass */;
 		else {
 			error("invalid map location '%s'\n", param.map);
 			rc = -EINVAL;
@@ -292,7 +294,8 @@ static bool do_setup_pfn(struct ndctl_namespace *ndns,
 	 * array in device memory.
 	 */
 	if (!ndns || ndctl_namespace_get_mode(ndns) != NDCTL_NS_MODE_MEMORY
-			|| p->loc == NDCTL_PFN_LOC_PMEM)
+			|| p->loc == NDCTL_PFN_LOC_PMEM
+			|| p->loc == NDCTL_PFN_LOC_XEN)
 		return true;
 
 	return false;
@@ -486,6 +489,8 @@ static int validate_namespace_options(struct ndctl_region *region,
 	if (param.map) {
 		if (!strcmp(param.map, "mem"))
 			p->loc = NDCTL_PFN_LOC_RAM;
+		else if (!strcmp(param.map, "xen"))
+			p->loc = NDCTL_PFN_LOC_XEN;
 		else
 			p->loc = NDCTL_PFN_LOC_PMEM;
 
diff --git a/ndctl/lib/libndctl.c b/ndctl/lib/libndctl.c
index 14bf217..35882db 100644
--- a/ndctl/lib/libndctl.c
+++ b/ndctl/lib/libndctl.c
@@ -3015,6 +3015,8 @@ NDCTL_EXPORT enum ndctl_namespace_mode ndctl_namespace_get_mode(
 		return NDCTL_NS_MODE_RAW;
 	if (strcmp("safe", buf) == 0)
 		return NDCTL_NS_MODE_SAFE;
+	if (strcmp("xen", buf) == 0)
+		return NDCTL_NS_MODE_XEN;
 	return -ENXIO;
 }
 
@@ -3998,6 +4000,8 @@ static int __add_pfn(struct ndctl_pfn *pfn, const char *pfn_base)
 		pfn->loc = NDCTL_PFN_LOC_RAM;
 	else if (strcmp(buf, "pmem") == 0)
 		pfn->loc = NDCTL_PFN_LOC_PMEM;
+	else if (strcmp(buf, "xen") == 0)
+		pfn->loc = NDCTL_PFN_LOC_XEN;
 	else
 		goto err_read;
 
@@ -4190,12 +4194,14 @@ NDCTL_EXPORT int ndctl_pfn_set_location(struct ndctl_pfn *pfn,
 		[NDCTL_PFN_LOC_NONE] = "none",
 		[NDCTL_PFN_LOC_RAM] = "ram",
 		[NDCTL_PFN_LOC_PMEM] = "pmem",
+		[NDCTL_PFN_LOC_XEN] = "xen",
 	};
 
 	switch (loc) {
 	case NDCTL_PFN_LOC_NONE:
 	case NDCTL_PFN_LOC_RAM:
 	case NDCTL_PFN_LOC_PMEM:
+	case NDCTL_PFN_LOC_XEN:
 		break;
 	default:
 		return -EINVAL;
diff --git a/ndctl/libndctl.h.in b/ndctl/libndctl.h.in
index 803368b..7d61e32 100644
--- a/ndctl/libndctl.h.in
+++ b/ndctl/libndctl.h.in
@@ -472,6 +472,7 @@ enum ndctl_namespace_mode {
 	NDCTL_NS_MODE_SAFE,
 	NDCTL_NS_MODE_RAW,
 	NDCTL_NS_MODE_DAX,
+	NDCTL_NS_MODE_XEN,
 };
 enum ndctl_namespace_mode ndctl_namespace_get_mode(
 		struct ndctl_namespace *ndns);
@@ -560,6 +561,7 @@ enum ndctl_pfn_loc {
 	NDCTL_PFN_LOC_NONE,
 	NDCTL_PFN_LOC_RAM,
 	NDCTL_PFN_LOC_PMEM,
+	NDCTL_PFN_LOC_XEN,
 };
 int ndctl_pfn_set_location(struct ndctl_pfn *pfn, enum ndctl_pfn_loc loc);
 enum ndctl_pfn_loc ndctl_pfn_get_location(struct ndctl_pfn *pfn);
diff --git a/ndctl/util/json.c b/ndctl/util/json.c
index 82e677c..8083219 100644
--- a/ndctl/util/json.c
+++ b/ndctl/util/json.c
@@ -188,6 +188,10 @@ struct json_object *util_namespace_to_json(struct ndctl_namespace *ndns,
 		size = ndctl_namespace_get_size(ndns);
 		jobj = json_object_new_string("raw");
 		break;
+	case NDCTL_NS_MODE_XEN:
+		size = ndctl_namespace_get_size(ndns);
+		jobj = json_object_new_string("xen");
+		break;
 	default:
 		jobj = NULL;
 	}
-- 
2.10.1


_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2016-10-10  0:36 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-10-10  0:36 [RFC NDCTL PATCH] ndctl: add support for Xen mode namespace Haozhong Zhang

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).