[patch-RFC 2/7] LTTng instrumentation fs

2007-12-05 Thread Mathieu Desnoyers
Core filesystem events markers.

Signed-off-by: Mathieu Desnoyers <[EMAIL PROTECTED]>
CC: Alexander Viro <[EMAIL PROTECTED]>
---
 fs/buffer.c |2 ++
 fs/compat.c |1 +
 fs/exec.c   |1 +
 fs/ioctl.c  |2 ++
 fs/open.c   |2 ++
 fs/read_write.c |   22 --
 fs/select.c |4 
 7 files changed, 32 insertions(+), 2 deletions(-)

Index: linux-2.6-lttng/fs/buffer.c
===
--- linux-2.6-lttng.orig/fs/buffer.c2007-12-05 20:50:32.0 -0500
+++ linux-2.6-lttng/fs/buffer.c 2007-12-05 20:53:59.0 -0500
@@ -89,7 +89,9 @@ void fastcall unlock_buffer(struct buffe
  */
 void __wait_on_buffer(struct buffer_head * bh)
 {
+   trace_mark(fs_buffer_wait_start, "bh %p", bh);
wait_on_bit(>b_state, BH_Lock, sync_buffer, TASK_UNINTERRUPTIBLE);
+   trace_mark(fs_buffer_wait_end, "bh %p", bh);
 }
 
 static void
Index: linux-2.6-lttng/fs/compat.c
===
--- linux-2.6-lttng.orig/fs/compat.c2007-12-05 20:50:32.0 -0500
+++ linux-2.6-lttng/fs/compat.c 2007-12-05 20:53:59.0 -0500
@@ -1408,6 +1408,7 @@ int compat_do_execve(char * filename,
 
retval = search_binary_handler(bprm, regs);
if (retval >= 0) {
+   trace_mark(fs_exec, "filename %s", filename);
/* execve success */
security_bprm_free(bprm);
acct_update_integrals(current);
Index: linux-2.6-lttng/fs/ioctl.c
===
--- linux-2.6-lttng.orig/fs/ioctl.c 2007-12-05 20:50:32.0 -0500
+++ linux-2.6-lttng/fs/ioctl.c  2007-12-05 20:53:59.0 -0500
@@ -164,6 +164,8 @@ asmlinkage long sys_ioctl(unsigned int f
if (!filp)
goto out;
 
+   trace_mark(fs_ioctl, "fd %u cmd %u arg %lu", fd, cmd, arg);
+
error = security_file_ioctl(filp, cmd, arg);
if (error)
goto out_fput;
Index: linux-2.6-lttng/fs/open.c
===
--- linux-2.6-lttng.orig/fs/open.c  2007-12-05 20:50:32.0 -0500
+++ linux-2.6-lttng/fs/open.c   2007-12-05 20:53:59.0 -0500
@@ -1043,6 +1043,7 @@ long do_sys_open(int dfd, const char __u
fsnotify_open(f->f_path.dentry);
fd_install(fd, f);
}
+   trace_mark(fs_open, "fd %d filename %s", fd, tmp);
}
putname(tmp);
}
@@ -1133,6 +1134,7 @@ asmlinkage long sys_close(unsigned int f
filp = fdt->fd[fd];
if (!filp)
goto out_unlock;
+   trace_mark(fs_close, "fd %u", fd);
rcu_assign_pointer(fdt->fd[fd], NULL);
FD_CLR(fd, fdt->close_on_exec);
__put_unused_fd(files, fd);
Index: linux-2.6-lttng/fs/read_write.c
===
--- linux-2.6-lttng.orig/fs/read_write.c2007-12-05 20:50:32.0 
-0500
+++ linux-2.6-lttng/fs/read_write.c 2007-12-05 20:58:35.0 -0500
@@ -146,6 +146,9 @@ asmlinkage off_t sys_lseek(unsigned int 
if (res != (loff_t)retval)
retval = -EOVERFLOW;/* LFS: should only happen on 
32 bit platforms */
}
+
+   trace_mark(fs_lseek, "fd %u offset %ld origin %u", fd, offset, origin);
+
fput_light(file, fput_needed);
 bad:
return retval;
@@ -173,6 +176,10 @@ asmlinkage long sys_llseek(unsigned int 
offset = vfs_llseek(file, ((loff_t) offset_high << 32) | offset_low,
origin);
 
+   trace_mark(fs_llseek, "fd %u offset %llu origin %u", fd,
+   (unsigned long long)offset,
+   origin);
+
retval = (int)offset;
if (offset >= 0) {
retval = -EFAULT;
@@ -363,6 +370,7 @@ asmlinkage ssize_t sys_read(unsigned int
file = fget_light(fd, _needed);
if (file) {
loff_t pos = file_pos_read(file);
+   trace_mark(fs_read, "fd %u count %zu", fd, count);
ret = vfs_read(file, buf, count, );
file_pos_write(file, pos);
fput_light(file, fput_needed);
@@ -381,6 +389,7 @@ asmlinkage ssize_t sys_write(unsigned in
file = fget_light(fd, _needed);
if (file) {
loff_t pos = file_pos_read(file);
+   trace_mark(fs_write, "fd %u count %zu", fd, count);
ret = vfs_write(file, buf, count, );
file_pos_write(file, pos);
fput_light(file, fput_needed);
@@ -402,8 +411,12 @@ asmlinkage ssize_t sys_pread64(unsigned 
file = fget_light(fd, _needed);
if (file) {
ret = -ESPIPE;
-   if (file->f_mode & FMODE_PREAD)
+   if (file->f_mode & 

[patch-RFC 2/7] LTTng instrumentation fs

2007-12-05 Thread Mathieu Desnoyers
Core filesystem events markers.

Signed-off-by: Mathieu Desnoyers [EMAIL PROTECTED]
CC: Alexander Viro [EMAIL PROTECTED]
---
 fs/buffer.c |2 ++
 fs/compat.c |1 +
 fs/exec.c   |1 +
 fs/ioctl.c  |2 ++
 fs/open.c   |2 ++
 fs/read_write.c |   22 --
 fs/select.c |4 
 7 files changed, 32 insertions(+), 2 deletions(-)

Index: linux-2.6-lttng/fs/buffer.c
===
--- linux-2.6-lttng.orig/fs/buffer.c2007-12-05 20:50:32.0 -0500
+++ linux-2.6-lttng/fs/buffer.c 2007-12-05 20:53:59.0 -0500
@@ -89,7 +89,9 @@ void fastcall unlock_buffer(struct buffe
  */
 void __wait_on_buffer(struct buffer_head * bh)
 {
+   trace_mark(fs_buffer_wait_start, bh %p, bh);
wait_on_bit(bh-b_state, BH_Lock, sync_buffer, TASK_UNINTERRUPTIBLE);
+   trace_mark(fs_buffer_wait_end, bh %p, bh);
 }
 
 static void
Index: linux-2.6-lttng/fs/compat.c
===
--- linux-2.6-lttng.orig/fs/compat.c2007-12-05 20:50:32.0 -0500
+++ linux-2.6-lttng/fs/compat.c 2007-12-05 20:53:59.0 -0500
@@ -1408,6 +1408,7 @@ int compat_do_execve(char * filename,
 
retval = search_binary_handler(bprm, regs);
if (retval = 0) {
+   trace_mark(fs_exec, filename %s, filename);
/* execve success */
security_bprm_free(bprm);
acct_update_integrals(current);
Index: linux-2.6-lttng/fs/ioctl.c
===
--- linux-2.6-lttng.orig/fs/ioctl.c 2007-12-05 20:50:32.0 -0500
+++ linux-2.6-lttng/fs/ioctl.c  2007-12-05 20:53:59.0 -0500
@@ -164,6 +164,8 @@ asmlinkage long sys_ioctl(unsigned int f
if (!filp)
goto out;
 
+   trace_mark(fs_ioctl, fd %u cmd %u arg %lu, fd, cmd, arg);
+
error = security_file_ioctl(filp, cmd, arg);
if (error)
goto out_fput;
Index: linux-2.6-lttng/fs/open.c
===
--- linux-2.6-lttng.orig/fs/open.c  2007-12-05 20:50:32.0 -0500
+++ linux-2.6-lttng/fs/open.c   2007-12-05 20:53:59.0 -0500
@@ -1043,6 +1043,7 @@ long do_sys_open(int dfd, const char __u
fsnotify_open(f-f_path.dentry);
fd_install(fd, f);
}
+   trace_mark(fs_open, fd %d filename %s, fd, tmp);
}
putname(tmp);
}
@@ -1133,6 +1134,7 @@ asmlinkage long sys_close(unsigned int f
filp = fdt-fd[fd];
if (!filp)
goto out_unlock;
+   trace_mark(fs_close, fd %u, fd);
rcu_assign_pointer(fdt-fd[fd], NULL);
FD_CLR(fd, fdt-close_on_exec);
__put_unused_fd(files, fd);
Index: linux-2.6-lttng/fs/read_write.c
===
--- linux-2.6-lttng.orig/fs/read_write.c2007-12-05 20:50:32.0 
-0500
+++ linux-2.6-lttng/fs/read_write.c 2007-12-05 20:58:35.0 -0500
@@ -146,6 +146,9 @@ asmlinkage off_t sys_lseek(unsigned int 
if (res != (loff_t)retval)
retval = -EOVERFLOW;/* LFS: should only happen on 
32 bit platforms */
}
+
+   trace_mark(fs_lseek, fd %u offset %ld origin %u, fd, offset, origin);
+
fput_light(file, fput_needed);
 bad:
return retval;
@@ -173,6 +176,10 @@ asmlinkage long sys_llseek(unsigned int 
offset = vfs_llseek(file, ((loff_t) offset_high  32) | offset_low,
origin);
 
+   trace_mark(fs_llseek, fd %u offset %llu origin %u, fd,
+   (unsigned long long)offset,
+   origin);
+
retval = (int)offset;
if (offset = 0) {
retval = -EFAULT;
@@ -363,6 +370,7 @@ asmlinkage ssize_t sys_read(unsigned int
file = fget_light(fd, fput_needed);
if (file) {
loff_t pos = file_pos_read(file);
+   trace_mark(fs_read, fd %u count %zu, fd, count);
ret = vfs_read(file, buf, count, pos);
file_pos_write(file, pos);
fput_light(file, fput_needed);
@@ -381,6 +389,7 @@ asmlinkage ssize_t sys_write(unsigned in
file = fget_light(fd, fput_needed);
if (file) {
loff_t pos = file_pos_read(file);
+   trace_mark(fs_write, fd %u count %zu, fd, count);
ret = vfs_write(file, buf, count, pos);
file_pos_write(file, pos);
fput_light(file, fput_needed);
@@ -402,8 +411,12 @@ asmlinkage ssize_t sys_pread64(unsigned 
file = fget_light(fd, fput_needed);
if (file) {
ret = -ESPIPE;
-   if (file-f_mode  FMODE_PREAD)
+   if (file-f_mode  FMODE_PREAD) {
+