|
@@ -69,11 +69,51 @@ out:
|
|
error_propagate(errp, local_err);
|
|
error_propagate(errp, local_err);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static void nvdimm_get_uuid(Object *obj, Visitor *v, const char *name,
|
|
|
|
+ void *opaque, Error **errp)
|
|
|
|
+{
|
|
|
|
+ NVDIMMDevice *nvdimm = NVDIMM(obj);
|
|
|
|
+ char *value = NULL;
|
|
|
|
+
|
|
|
|
+ value = qemu_uuid_unparse_strdup(&nvdimm->uuid);
|
|
|
|
+
|
|
|
|
+ visit_type_str(v, name, &value, errp);
|
|
|
|
+ g_free(value);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+static void nvdimm_set_uuid(Object *obj, Visitor *v, const char *name,
|
|
|
|
+ void *opaque, Error **errp)
|
|
|
|
+{
|
|
|
|
+ NVDIMMDevice *nvdimm = NVDIMM(obj);
|
|
|
|
+ Error *local_err = NULL;
|
|
|
|
+ char *value;
|
|
|
|
+
|
|
|
|
+ visit_type_str(v, name, &value, &local_err);
|
|
|
|
+ if (local_err) {
|
|
|
|
+ goto out;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (qemu_uuid_parse(value, &nvdimm->uuid) != 0) {
|
|
|
|
+ error_setg(errp, "Property '%s.%s' has invalid value",
|
|
|
|
+ object_get_typename(obj), name);
|
|
|
|
+ goto out;
|
|
|
|
+ }
|
|
|
|
+ g_free(value);
|
|
|
|
+
|
|
|
|
+out:
|
|
|
|
+ error_propagate(errp, local_err);
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+
|
|
static void nvdimm_init(Object *obj)
|
|
static void nvdimm_init(Object *obj)
|
|
{
|
|
{
|
|
object_property_add(obj, NVDIMM_LABEL_SIZE_PROP, "int",
|
|
object_property_add(obj, NVDIMM_LABEL_SIZE_PROP, "int",
|
|
nvdimm_get_label_size, nvdimm_set_label_size, NULL,
|
|
nvdimm_get_label_size, nvdimm_set_label_size, NULL,
|
|
NULL, NULL);
|
|
NULL, NULL);
|
|
|
|
+
|
|
|
|
+ object_property_add(obj, NVDIMM_UUID_PROP, "QemuUUID", nvdimm_get_uuid,
|
|
|
|
+ nvdimm_set_uuid, NULL, NULL, NULL);
|
|
}
|
|
}
|
|
|
|
|
|
static void nvdimm_finalize(Object *obj)
|
|
static void nvdimm_finalize(Object *obj)
|