提交 3f741f9a 编写于 作者: P Pavel Hrdina

util: vircgroup: introduce virCgroup(Get|Set)ValueRaw

If we need to get a path of specific file and we need to check its
existence before we use it then we can reuse that path to get/set
values instead of calling the existing get/set value functions which
would be building the path again.
Signed-off-by: NPavel Hrdina <phrdina@redhat.com>
Reviewed-by: NJán Tomko <jtomko@redhat.com>
上级 2f0de10e
...@@ -455,28 +455,22 @@ virCgroupGetBlockDevString(const char *path) ...@@ -455,28 +455,22 @@ virCgroupGetBlockDevString(const char *path)
int int
virCgroupSetValueStr(virCgroupPtr group, virCgroupSetValueRaw(const char *path,
int controller,
const char *key,
const char *value) const char *value)
{ {
VIR_AUTOFREE(char *) keypath = NULL; char *tmp;
char *tmp = NULL;
if (virCgroupPathOfController(group, controller, key, &keypath) < 0) VIR_DEBUG("Set value '%s' to '%s'", path, value);
return -1; if (virFileWriteStr(path, value, 0) < 0) {
VIR_DEBUG("Set value '%s' to '%s'", keypath, value);
if (virFileWriteStr(keypath, value, 0) < 0) {
if (errno == EINVAL && if (errno == EINVAL &&
(tmp = strrchr(keypath, '/'))) { (tmp = strrchr(path, '/'))) {
virReportSystemError(errno, virReportSystemError(errno,
_("Invalid value '%s' for '%s'"), _("Invalid value '%s' for '%s'"),
value, tmp + 1); value, tmp + 1);
return -1; return -1;
} }
virReportSystemError(errno, virReportSystemError(errno,
_("Unable to write to '%s'"), keypath); _("Unable to write to '%s'"), path);
return -1; return -1;
} }
...@@ -485,24 +479,18 @@ virCgroupSetValueStr(virCgroupPtr group, ...@@ -485,24 +479,18 @@ virCgroupSetValueStr(virCgroupPtr group,
int int
virCgroupGetValueStr(virCgroupPtr group, virCgroupGetValueRaw(const char *path,
int controller,
const char *key,
char **value) char **value)
{ {
VIR_AUTOFREE(char *) keypath = NULL;
int rc; int rc;
*value = NULL; *value = NULL;
if (virCgroupPathOfController(group, controller, key, &keypath) < 0) VIR_DEBUG("Get value %s", path);
return -1;
VIR_DEBUG("Get value %s", keypath);
if ((rc = virFileReadAll(keypath, 1024*1024, value)) < 0) { if ((rc = virFileReadAll(path, 1024*1024, value)) < 0) {
virReportSystemError(errno, virReportSystemError(errno,
_("Unable to read from '%s'"), keypath); _("Unable to read from '%s'"), path);
return -1; return -1;
} }
...@@ -514,6 +502,36 @@ virCgroupGetValueStr(virCgroupPtr group, ...@@ -514,6 +502,36 @@ virCgroupGetValueStr(virCgroupPtr group,
} }
int
virCgroupSetValueStr(virCgroupPtr group,
int controller,
const char *key,
const char *value)
{
VIR_AUTOFREE(char *) keypath = NULL;
if (virCgroupPathOfController(group, controller, key, &keypath) < 0)
return -1;
return virCgroupSetValueRaw(keypath, value);
}
int
virCgroupGetValueStr(virCgroupPtr group,
int controller,
const char *key,
char **value)
{
VIR_AUTOFREE(char *) keypath = NULL;
if (virCgroupPathOfController(group, controller, key, &keypath) < 0)
return -1;
return virCgroupGetValueRaw(keypath, value);
}
int int
virCgroupGetValueForBlkDev(virCgroupPtr group, virCgroupGetValueForBlkDev(virCgroupPtr group,
int controller, int controller,
......
...@@ -58,6 +58,12 @@ struct _virCgroup { ...@@ -58,6 +58,12 @@ struct _virCgroup {
virCgroupV2Controller unified; virCgroupV2Controller unified;
}; };
int virCgroupSetValueRaw(const char *path,
const char *value);
int virCgroupGetValueRaw(const char *path,
char **value);
int virCgroupSetValueStr(virCgroupPtr group, int virCgroupSetValueStr(virCgroupPtr group,
int controller, int controller,
const char *key, const char *key,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册