From: Andrew Morton nfi Cc: Christoph Hellwig Signed-off-by: Andrew Morton --- fs/reiser4/plugin/file/file.c | 20 ++++++++++---------- fs/reiser4/plugin/file_ops_readdir.c | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff -puN fs/reiser4/plugin/file/file.c~reiser4-big-update-update_atime-fixes fs/reiser4/plugin/file/file.c --- devel/fs/reiser4/plugin/file/file.c~reiser4-big-update-update_atime-fixes 2005-11-16 17:34:24.000000000 -0800 +++ devel-akpm/fs/reiser4/plugin/file/file.c 2005-11-16 17:34:24.000000000 -0800 @@ -24,7 +24,7 @@ items only (EXTENT_POINTER_ID) or empty (have no items but stat data) */ -static int unpack(struct inode *inode, int forever); +static int unpack(struct file *file, struct inode *inode, int forever); /* get unix file plugin specific portion of inode */ unix_file_info_t *unix_file_inode_data(const struct inode *inode) @@ -2077,7 +2077,7 @@ read_unix_file(struct file *file, char _ needed = unix_file_estimate_read(inode, read_amount); result = reiser4_grab_space_force(needed, BA_CAN_COMMIT); if (result == 0) - update_atime(inode); + file_accessed(file); else warning("", "failed to grab space for atime update"); } @@ -2309,12 +2309,12 @@ static struct vm_operations_struct unix_ Here also tail2extent conversion is performed if it is allowed and file is going to be written or mapped for write. This functions may be called from write_unix_file() or mmap_unix_file(). */ -static int check_pages_unix_file(struct inode *inode) +static int check_pages_unix_file(struct file *file, struct inode *inode) { reiser4_invalidate_pages(inode->i_mapping, 0, (inode->i_size + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT, 0); - return unpack(inode, 0 /* not forever */ ); + return unpack(file, inode, 0 /* not forever */ ); } /** @@ -2374,7 +2374,7 @@ int mmap_unix_file(struct file *file, st * invalidate all pages and convert file from tails to * extents */ - result = check_pages_unix_file(inode); + result = check_pages_unix_file(file, inode); if (result) { drop_exclusive_access(uf_info); up(&uf_info->write); @@ -2522,7 +2522,7 @@ ssize_t write_unix_file(struct file *fil 3) convert file to extents to not enter here on each write to mmaped file */ get_exclusive_access(uf_info); - result = check_pages_unix_file(inode); + result = check_pages_unix_file(file, inode); drop_exclusive_access(uf_info); if (result) { current->backing_dev_info = NULL; @@ -2751,7 +2751,7 @@ static void set_file_notail(struct inode } /* if file is built of tails - convert it to extents */ -static int unpack(struct inode *inode, int forever) +static int unpack(struct file *filp, struct inode *inode, int forever) { int result = 0; unix_file_info_t *uf_info; @@ -2775,7 +2775,7 @@ static int unpack(struct inode *inode, i inode_file_plugin(inode)->estimate.update(inode); result = reiser4_grab_space(tograb, BA_CAN_COMMIT); if (result == 0) - update_atime(inode); + file_accessed(filp); } } @@ -2786,7 +2786,7 @@ static int unpack(struct inode *inode, i plugin */ int -ioctl_unix_file(struct inode *inode, struct file *filp UNUSED_ARG, +ioctl_unix_file(struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg UNUSED_ARG) { reiser4_context *ctx; @@ -2799,7 +2799,7 @@ ioctl_unix_file(struct inode *inode, str switch (cmd) { case REISER4_IOC_UNPACK: get_exclusive_access(unix_file_inode_data(inode)); - result = unpack(inode, 1 /* forever */ ); + result = unpack(filp, inode, 1 /* forever */ ); drop_exclusive_access(unix_file_inode_data(inode)); break; diff -puN fs/reiser4/plugin/file_ops_readdir.c~reiser4-big-update-update_atime-fixes fs/reiser4/plugin/file_ops_readdir.c --- devel/fs/reiser4/plugin/file_ops_readdir.c~reiser4-big-update-update_atime-fixes 2005-11-16 17:34:24.000000000 -0800 +++ devel-akpm/fs/reiser4/plugin/file_ops_readdir.c 2005-11-16 17:34:24.000000000 -0800 @@ -635,7 +635,7 @@ int readdir_common(struct file *f /* dir warning("", "failed to update atime on readdir: %llu", get_inode_oid(inode)); else - update_atime(inode); + file_accessed(f); context_set_commit_async(ctx); reiser4_exit_context(ctx); _