trace: don't abort qemu if ftrace can't be initialized
If the ftrace backend is compiled into QEMU, any attempt to start QEMU while non-root will fail due to the inability to open /sys/kernel/debug/tracing/tracing_on. Add a fallback into the code so that it connects up the trace_marker_fd variable to /dev/null when getting EACCES on the 'trace_on' file. This allows QEMU to run, with ftrace turned into a no-op. [Fixed s/setting/getting/ and s/EACCESS/EACCES/ errors pointed out by Eric Blake <eblake@redhat.com>. --Stefan] Signed-off-by: Daniel P. Berrange <berrange@redhat.com> Message-id: 1475588159-30598-13-git-send-email-berrange@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
7f1b588f20
commit
8ed5372874
@ -51,6 +51,12 @@ bool ftrace_init(void)
|
||||
snprintf(path, PATH_MAX, "%s/tracing/tracing_on", debugfs);
|
||||
trace_fd = open(path, O_WRONLY);
|
||||
if (trace_fd < 0) {
|
||||
if (errno == EACCES) {
|
||||
trace_marker_fd = open("/dev/null", O_WRONLY);
|
||||
if (trace_marker_fd != -1) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
perror("Could not open ftrace 'tracing_on' file");
|
||||
return false;
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user