--- zzzz-none-000/linux-2.4.17/fs/read_write.c 2001-08-05 20:12:41.000000000 +0000 +++ sangam-fb-322/linux-2.4.17/fs/read_write.c 2004-11-24 13:22:18.000000000 +0000 @@ -12,6 +12,8 @@ #include #include +#include + #include struct file_operations generic_ro_fops = { @@ -106,6 +108,10 @@ if (res != (loff_t)retval) retval = -EOVERFLOW; /* LFS: should only happen on 32 bit platforms */ } + TRACE_FILE_SYSTEM(TRACE_EV_FILE_SYSTEM_SEEK, + fd, + offset, + NULL); fput(file); bad: return retval; @@ -131,6 +137,11 @@ offset = llseek(file, ((loff_t) offset_high << 32) | offset_low, origin); + TRACE_FILE_SYSTEM(TRACE_EV_FILE_SYSTEM_SEEK, + fd, + offset, + NULL); + retval = (int)offset; if (offset >= 0) { retval = -EFAULT; @@ -158,13 +169,17 @@ if (!ret) { ssize_t (*read)(struct file *, char *, size_t, loff_t *); ret = -EINVAL; - if (file->f_op && (read = file->f_op->read) != NULL) + if (file->f_op && (read = file->f_op->read) != NULL) { + TRACE_FILE_SYSTEM(TRACE_EV_FILE_SYSTEM_READ, + fd, + count, + NULL); ret = read(file, buf, count, &file->f_pos); + } } } if (ret > 0) - inode_dir_notify(file->f_dentry->d_parent->d_inode, - DN_ACCESS); + dnotify_parent(file->f_dentry, DN_ACCESS); fput(file); } return ret; @@ -185,13 +200,17 @@ if (!ret) { ssize_t (*write)(struct file *, const char *, size_t, loff_t *); ret = -EINVAL; - if (file->f_op && (write = file->f_op->write) != NULL) + if (file->f_op && (write = file->f_op->write) != NULL) { + TRACE_FILE_SYSTEM(TRACE_EV_FILE_SYSTEM_WRITE, + fd, + count, + NULL); ret = write(file, buf, count, &file->f_pos); + } } } if (ret > 0) - inode_dir_notify(file->f_dentry->d_parent->d_inode, - DN_MODIFY); + dnotify_parent(file->f_dentry, DN_MODIFY); fput(file); } return ret; @@ -295,7 +314,7 @@ out_nofree: /* VERIFY_WRITE actually means a read, as we write to user space */ if ((ret + (type == VERIFY_WRITE)) > 0) - inode_dir_notify(file->f_dentry->d_parent->d_inode, + dnotify_parent(file->f_dentry, (type == VERIFY_WRITE) ? DN_MODIFY : DN_ACCESS); return ret; } @@ -311,6 +330,10 @@ file = fget(fd); if (!file) goto bad_file; + TRACE_FILE_SYSTEM(TRACE_EV_FILE_SYSTEM_READ, + fd, + count, + NULL); if (file->f_op && (file->f_mode & FMODE_READ) && (file->f_op->readv || file->f_op->read)) ret = do_readv_writev(VERIFY_WRITE, file, vector, count); @@ -331,6 +354,10 @@ file = fget(fd); if (!file) goto bad_file; + TRACE_FILE_SYSTEM(TRACE_EV_FILE_SYSTEM_WRITE, + fd, + count, + NULL); if (file->f_op && (file->f_mode & FMODE_WRITE) && (file->f_op->writev || file->f_op->write)) ret = do_readv_writev(VERIFY_READ, file, vector, count); @@ -366,9 +393,15 @@ goto out; if (pos < 0) goto out; + + TRACE_FILE_SYSTEM(TRACE_EV_FILE_SYSTEM_READ, + fd, + count, + NULL); + ret = read(file, buf, count, &pos); if (ret > 0) - inode_dir_notify(file->f_dentry->d_parent->d_inode, DN_ACCESS); + dnotify_parent(file->f_dentry, DN_ACCESS); out: fput(file); bad_file: @@ -398,9 +431,14 @@ if (pos < 0) goto out; + TRACE_FILE_SYSTEM(TRACE_EV_FILE_SYSTEM_WRITE, + fd, + count, + NULL); + ret = write(file, buf, count, &pos); if (ret > 0) - inode_dir_notify(file->f_dentry->d_parent->d_inode, DN_MODIFY); + dnotify_parent(file->f_dentry, DN_MODIFY); out: fput(file); bad_file: