[patch-RFC 2/7] LTTng instrumentation fs
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
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) { +