mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-08-08 02:31:33 +00:00
new lxc_cgroup_path_get function
remove the usage of LXCPATH/<name>/nsgroup in get/set function. Signed-off-by: Michel Normand <normand@fr.ibm.com> Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
This commit is contained in:
parent
758437c558
commit
a6ddef6149
@ -45,6 +45,8 @@ lxc_log_define(lxc_cgroup, lxc);
|
|||||||
|
|
||||||
#define MTAB "/etc/mtab"
|
#define MTAB "/etc/mtab"
|
||||||
|
|
||||||
|
static char nsgroup_path[MAXPATHLEN];
|
||||||
|
|
||||||
static int get_cgroup_mount(const char *mtab, char *mnt)
|
static int get_cgroup_mount(const char *mtab, char *mnt)
|
||||||
{
|
{
|
||||||
struct mntent *mntent;
|
struct mntent *mntent;
|
||||||
@ -153,12 +155,38 @@ int lxc_unlink_nsgroup(const char *name)
|
|||||||
return unlink(nsgroup);
|
return unlink(nsgroup);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int lxc_cgroup_path_get(char **path, const char *name)
|
||||||
|
{
|
||||||
|
char cgroup[MAXPATHLEN];
|
||||||
|
|
||||||
|
*path = &nsgroup_path[0];
|
||||||
|
|
||||||
|
/*
|
||||||
|
* report nsgroup_path string if already set
|
||||||
|
*/
|
||||||
|
if (**path != 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (get_cgroup_mount(MTAB, cgroup)) {
|
||||||
|
ERROR("cgroup is not mounted");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
snprintf(nsgroup_path, MAXPATHLEN, "%s/%s", cgroup, name);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int lxc_cgroup_set(const char *name, const char *subsystem, const char *value)
|
int lxc_cgroup_set(const char *name, const char *subsystem, const char *value)
|
||||||
{
|
{
|
||||||
int fd, ret = -1;
|
int fd, ret = -1;
|
||||||
|
char *nsgroup;
|
||||||
char path[MAXPATHLEN];
|
char path[MAXPATHLEN];
|
||||||
|
|
||||||
snprintf(path, MAXPATHLEN, LXCPATH "/%s/nsgroup/%s", name, subsystem);
|
ret = lxc_cgroup_path_get(&nsgroup, name);
|
||||||
|
if (ret)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
snprintf(path, MAXPATHLEN, "%s/%s", nsgroup, subsystem);
|
||||||
|
|
||||||
fd = open(path, O_WRONLY);
|
fd = open(path, O_WRONLY);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
@ -181,9 +209,14 @@ int lxc_cgroup_get(const char *name, const char *subsystem,
|
|||||||
char *value, size_t len)
|
char *value, size_t len)
|
||||||
{
|
{
|
||||||
int fd, ret = -1;
|
int fd, ret = -1;
|
||||||
|
char *nsgroup;
|
||||||
char path[MAXPATHLEN];
|
char path[MAXPATHLEN];
|
||||||
|
|
||||||
snprintf(path, MAXPATHLEN, LXCPATH "/%s/nsgroup/%s", name, subsystem);
|
ret = lxc_cgroup_path_get(&nsgroup, name);
|
||||||
|
if (ret)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
snprintf(path, MAXPATHLEN, "%s/%s", nsgroup, subsystem);
|
||||||
|
|
||||||
fd = open(path, O_RDONLY);
|
fd = open(path, O_RDONLY);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user