CC fs/open.o
fs/open.c: In function ‘do_sys_open’:
fs/open.c:893: error: implicit declaration of function ‘trace_do_sys_open’
make[2]: ** [fs/open.o] Erro 1
make[1]: ** [fs] Erro 2
make[1]: ** Esperando que outros processos terminem.
A mensagem de erro está relacionada com o ureadahead.
Verifique se existe o arquivo
/usr/src/linux/include/trace/events/fs.h (aqui estou assumindo que o código fonte do kernel está na pasta
/usr/src/linux).
Verifique também o conteúdo do arquivo
/usr/src/linux/fs/open.c.
Aqui tem um trecho do patch do ureadahead que modifica esse arquivo open.c:
diff --git a/fs/open.c b/fs/open.c
index 04b9aad..41c87f3 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -33,6 +33,9 @@
#include "internal.h"
+#define CREATE_TRACE_POINTS
+#include <trace/events/fs.h>
+
int do_truncate(struct dentry *dentry, loff_t length, unsigned int time_attrs,
struct file *filp)
{
@@ -890,6 +893,7 @@ long do_sys_open(int dfd, const char __user *filename, int flags, int mode)
} else {
fsnotify_open(f);
fd_install(fd, f);
+
trace_do_sys_open(tmp, flags, mode);
}
}
putname(tmp);
A linha:
#include <trace/events/fs.h> que está perto do começo é importante, ela tem que estar lá.
Perto do final desse trecho do patch tem essa outra linha:
trace_do_sys_open(tmp, flags, mode); que é a instrução que gerou o erro de compilação, justo na linha 893 como está na mensagem do GCC.
Usando o comando diffstat com o patch do ureadahead que eu uso obtive a seguinte saida:
$ diffstat 0001-trace-add-trace-events-for-open-exec-an.patch
fs/exec.c | 8 +++++
fs/open.c | 4 ++
include/trace/events/fs.h | 71 ++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 83 insertions(+)
Tal vez o patch que você está usando esteja incompleto, ou faltando alguma coisa.