Commit ccae47c6 authored by Scott James Remnant's avatar Scott James Remnant Committed by Tim Gardner

UBUNTU: SAUCE: (no-up) trace: add trace events for open(), exec() and uselib() (for v3.7+)

BugLink: http://bugs.launchpad.net/bugs/462111

This patch uses TRACE_EVENT to add tracepoints for the open(),
exec() and uselib() syscalls so that ureadahead can cheaply trace
the boot sequence to determine what to read to speed up the next.

It's not upstream because it will need to be rebased onto the syscall
trace events whenever that gets merged, and is a stop-gap.

[apw@canonical.com: updated for v3.7 and later.]
[apw@canonical.com: updated for v3.19 and later.]
BugLink: http://bugs.launchpad.net/bugs/1085766Signed-off-by: default avatarScott James Remnant <scott@ubuntu.com>
Acked-by: default avatarStefan Bader <stefan.bader@canonical.com>
Acked-by: default avatarAndy Whitcroft <andy.whitcroft@canonical.com>
Signed-off-by: default avatarStefan Bader <stefan.bader@canonical.com>

Conflicts:

	fs/open.c
Signed-off-by: default avatarTim Gardner <tim.gardner@canonical.com>
parent 065d0456
......@@ -57,6 +57,8 @@
#include <linux/oom.h>
#include <linux/compat.h>
#include <trace/events/fs.h>
#include <asm/uaccess.h>
#include <asm/mmu_context.h>
#include <asm/tlb.h>
......@@ -793,6 +795,8 @@ static struct file *do_open_execat(int fd, struct filename *name, int flags)
if (name->name[0] != '\0')
fsnotify_open(file);
trace_open_exec(name->name);
out:
return file;
......
......@@ -34,6 +34,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)
{
......@@ -1029,6 +1032,7 @@ long do_sys_open(int dfd, const char __user *filename, int flags, umode_t mode)
} else {
fsnotify_open(f);
fd_install(fd, f);
trace_do_sys_open(tmp->name, flags, mode);
}
}
putname(tmp);
......
#undef TRACE_SYSTEM
#define TRACE_SYSTEM fs
#if !defined(_TRACE_FS_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_FS_H
#include <linux/fs.h>
#include <linux/tracepoint.h>
TRACE_EVENT(do_sys_open,
TP_PROTO(const char *filename, int flags, int mode),
TP_ARGS(filename, flags, mode),
TP_STRUCT__entry(
__string( filename, filename )
__field( int, flags )
__field( int, mode )
),
TP_fast_assign(
__assign_str(filename, filename);
__entry->flags = flags;
__entry->mode = mode;
),
TP_printk("\"%s\" %x %o",
__get_str(filename), __entry->flags, __entry->mode)
);
TRACE_EVENT(open_exec,
TP_PROTO(const char *filename),
TP_ARGS(filename),
TP_STRUCT__entry(
__string( filename, filename )
),
TP_fast_assign(
__assign_str(filename, filename);
),
TP_printk("\"%s\"",
__get_str(filename))
);
#endif /* _TRACE_FS_H */
/* This part must be outside protection */
#include <trace/define_trace.h>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment