[lxc-devel] [lxcfs/master] fixes
brauner on Github
lxc-bot at linuxcontainers.org
Thu Mar 5 22:53:53 UTC 2020
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 365 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20200305/f457db0d/attachment.bin>
-------------- next part --------------
From 359260f721171b816e44bf37bb4cf47d1b05f4b3 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Thu, 5 Mar 2020 23:31:24 +0100
Subject: [PATCH 1/5] tree-wide: fix cpuview virtualisation
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
src/cgroups/cgroup_utils.h | 4 +++-
src/proc_cpuview.c | 5 +++--
src/proc_fuse.c | 9 +++++----
src/proc_loadavg.h | 8 ++++----
src/sysfs_fuse.c | 6 +++++-
5 files changed, 20 insertions(+), 12 deletions(-)
diff --git a/src/cgroups/cgroup_utils.h b/src/cgroups/cgroup_utils.h
index b70e8f7..483ef49 100644
--- a/src/cgroups/cgroup_utils.h
+++ b/src/cgroups/cgroup_utils.h
@@ -97,7 +97,9 @@ static inline int openat_safe(int fd, const char *path)
static inline const char *dot_or_empty(const char *s)
{
- return (*s == '/') ? (const char *){"."} : (const char *){""};
+ static const char *dot = ".";
+ static const char *empty = "";
+ return (*s == '/') ? dot : empty;
}
#endif /* __LXC_CGROUP_UTILS_H */
diff --git a/src/proc_cpuview.c b/src/proc_cpuview.c
index 3c56d90..e274827 100644
--- a/src/proc_cpuview.c
+++ b/src/proc_cpuview.c
@@ -874,9 +874,10 @@ int proc_cpuinfo_read(char *buf, size_t size, off_t offset,
if (!cpuset)
return 0;
- if (cgroup_ops->can_use_cpuview(cgroup_ops) && (opts && opts->use_cfs))
+ if (cgroup_ops->can_use_cpuview(cgroup_ops) && opts && opts->use_cfs)
use_view = true;
-
+ else
+ use_view = false;
if (use_view)
max_cpus = max_cpu_count(cg);
diff --git a/src/proc_fuse.c b/src/proc_fuse.c
index d713693..5202c33 100644
--- a/src/proc_fuse.c
+++ b/src/proc_fuse.c
@@ -735,6 +735,7 @@ static int proc_stat_read(char *buf, size_t size, off_t offset,
__do_free struct cpuacct_usage *cg_cpu_usage = NULL;
__do_fclose FILE *f = NULL;
struct fuse_context *fc = fuse_get_context();
+ struct lxcfs_opts *opts = (struct lxcfs_opts *)fc->private_data;
struct file_info *d = INTTYPE_TO_PTR(fi->fh);
size_t linelen = 0, total_len = 0;
int curcpu = -1; /* cpu numbering starts at 0 */
@@ -803,10 +804,10 @@ static int proc_stat_read(char *buf, size_t size, off_t offset,
if (getline(&line, &linelen, f) < 0)
return log_error(0, "proc_stat_read read first line failed");
- if (cgroup_ops->can_use_cpuview(cgroup_ops) && cg_cpu_usage) {
- total_len = cpuview_proc_stat(cg, cpuset, cg_cpu_usage, cg_cpu_usage_size,
- f, d->buf, d->buflen);
- goto out;
+ if (cgroup_ops->can_use_cpuview(cgroup_ops) && opts && opts->use_cfs) {
+ total_len = cpuview_proc_stat(cg, cpuset, cg_cpu_usage,
+ cg_cpu_usage_size, f, d->buf, d->buflen);
+ goto out:
}
while (getline(&line, &linelen, f) != -1) {
diff --git a/src/proc_loadavg.h b/src/proc_loadavg.h
index fb12b6c..34b61ba 100644
--- a/src/proc_loadavg.h
+++ b/src/proc_loadavg.h
@@ -23,10 +23,10 @@
#include "config.h"
#include "macro.h"
-extern int proc_loadavg_read(char *buf, size_t size, off_t offset,
- struct fuse_file_info *fi);
-extern pthread_t load_daemon(int load_use);
-extern int stop_load_daemon(pthread_t pid);
+__visible extern pthread_t load_daemon(int load_use);
+__visible extern int stop_load_daemon(pthread_t pid);
+
+extern int proc_loadavg_read(char *buf, size_t size, off_t offset, struct fuse_file_info *fi);
extern int calc_hash(const char *name);
#endif /* __LXCFS_PROC_LOADAVG_FUSE_H */
diff --git a/src/sysfs_fuse.c b/src/sysfs_fuse.c
index 4b71633..3114e4f 100644
--- a/src/sysfs_fuse.c
+++ b/src/sysfs_fuse.c
@@ -51,6 +51,7 @@ static int sys_devices_system_cpu_online_read(char *buf, size_t size,
{
__do_free char *cg = NULL, *cpuset = NULL;
struct fuse_context *fc = fuse_get_context();
+ struct lxcfs_opts *opts = (struct lxcfs_opts *)fc->private_data;
struct file_info *d = INTTYPE_TO_PTR(fi->fh);
char *cache = d->buf;
bool use_view;
@@ -88,7 +89,10 @@ static int sys_devices_system_cpu_online_read(char *buf, size_t size,
if (!cpuset)
return 0;
- use_view = cgroup_ops->can_use_cpuview(cgroup_ops);
+ if (cgroup_ops->can_use_cpuview(cgroup_ops) && opts && opts->use_cfs)
+ use_view = true;
+ else
+ use_view = false;
if (use_view)
max_cpus = max_cpu_count(cg);
From a06a1b3f52ad60bf9e171385c0910b5c789486bb Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Thu, 5 Mar 2020 23:41:02 +0100
Subject: [PATCH 2/5] macro: fix log_debug()
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
src/macro.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/macro.h b/src/macro.h
index 67be461..ce08510 100644
--- a/src/macro.h
+++ b/src/macro.h
@@ -107,10 +107,10 @@
})
#ifdef DEBUG
-#define log_debug(__ret__, format, ...) \
- ({ \
- lxcfs_debug_stream(format, ##__VA_ARGS__); \
- __ret__; \
+#define log_debug(__ret__, format, ...) \
+ ({ \
+ lxcfs_debug_stream(stderr, format, ##__VA_ARGS__); \
+ __ret__; \
})
#else
#define log_debug(__ret__, format, ...) ({ __ret__; })
From ec1aee62f5e6ab969ca01dd4d5b6944e691b0cb0 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Thu, 5 Mar 2020 23:41:27 +0100
Subject: [PATCH 3/5] proc_cpuview: fix whitespace error
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
src/proc_cpuview.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/proc_cpuview.c b/src/proc_cpuview.c
index e274827..fece471 100644
--- a/src/proc_cpuview.c
+++ b/src/proc_cpuview.c
@@ -331,7 +331,6 @@ static struct cg_proc_stat *find_or_create_proc_stat_node(struct cpuacct_usage *
struct cg_proc_stat *node;
node = find_proc_stat_node(head, cg);
-
if (!node) {
node = new_proc_stat_node(usage, cpu_count, cg);
if (!node)
From 2edb5735566d6b81acdcda5e6344a29b8bb79c2f Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Thu, 5 Mar 2020 23:46:25 +0100
Subject: [PATCH 4/5] proc_cpuview: ensure NULL
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
src/proc_cpuview.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/proc_cpuview.c b/src/proc_cpuview.c
index fece471..4fa6306 100644
--- a/src/proc_cpuview.c
+++ b/src/proc_cpuview.c
@@ -243,7 +243,7 @@ static bool cgfs_param_exist(const char *controller, const char *cgroup,
if (cfd < 0)
return false;
- path = must_make_path(dot_or_empty(cgroup), cgroup, file);
+ path = must_make_path(dot_or_empty(cgroup), cgroup, file, NULL);
return (faccessat(cfd, path, F_OK, 0) == 0);
}
From 107095347067bd279c1a3df857ff87233878d096 Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Thu, 5 Mar 2020 23:51:37 +0100
Subject: [PATCH 5/5] proc_fuse: fix identation
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
src/proc_fuse.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/proc_fuse.c b/src/proc_fuse.c
index 5202c33..1753442 100644
--- a/src/proc_fuse.c
+++ b/src/proc_fuse.c
@@ -777,7 +777,7 @@ static int proc_stat_read(char *buf, size_t size, off_t offset,
* in some case cpuacct_usage.all in "/" will larger then /proc/stat
*/
if (initpid == 1)
- return read_file_fuse("/proc/stat", buf, size, d);
+ return read_file_fuse("/proc/stat", buf, size, d);
cg = get_pid_cgroup(initpid, "cpuset");
if (!cg)
More information about the lxc-devel
mailing list