Vladimir V. Saveliev wrote (ao):
> Please unapply the attached patch and check whether it makes any effect.

Is there any risk involved in testing this patch?

And is this a real patch which fixes a real problem, or is it a test?



> cd fs/reiser4
> cat patch | patch -p1 -R

> diff --git a/plugin/file_ops_readdir.c b/plugin/file_ops_readdir.c
> index 9926e7c..b85ae7f 100644
> --- a/plugin/file_ops_readdir.c
> +++ b/plugin/file_ops_readdir.c
> @@ -632,6 +632,14 @@ int readdir_common(struct file *f /* dir
>       tap_done(&tap);
>       detach_fsdata(f);
>  
> +     /* try to update directory's atime */
> +     if (reiser4_grab_space(inode_file_plugin(inode)->estimate.update(inode),
> +                            BA_CAN_COMMIT) != 0)
> +             warning("", "failed to update atime on readdir: %llu",
> +                     get_inode_oid(inode));
> +     else
> +             update_atime(inode);
> +
>       context_set_commit_async(ctx);
>       reiser4_exit_context(ctx);
>  
> diff --git a/super_ops.c b/super_ops.c
> index fe18006..f4b750b 100644
> --- a/super_ops.c
> +++ b/super_ops.c
> @@ -156,6 +156,28 @@ static void reiser4_destroy_inode(struct
>  }
>  
>  /**
> + * reiser4_dirty_inode - dirty_inode of super operations
> + * @inode: inode being dirtied
> + *
> + * Updates stat data.
> + */
> +static void reiser4_dirty_inode(struct inode *inode)
> +{
> +     int result;
> +
> +     if (!is_in_reiser4_context())
> +             return;
> +     assert("", !IS_RDONLY(inode));
> +     assert("", (inode_file_plugin(inode)->estimate.update(inode) <=
> +                 get_current_context()->grabbed_blocks));
> +
> +     result = reiser4_update_sd(inode);
> +     if (result)
> +             warning("", "failed to dirty inode for %llu: %d",
> +                     get_inode_oid(inode), result);
> +}
> +
> +/**
>   * reiser4_delete_inode - delete_inode of super operations
>   * @inode: inode to delete
>   *
> @@ -421,6 +443,7 @@ static int reiser4_show_options(struct s
>  struct super_operations reiser4_super_operations = {
>       .alloc_inode = reiser4_alloc_inode,
>       .destroy_inode = reiser4_destroy_inode,
> +     .dirty_inode = reiser4_dirty_inode,
>       .delete_inode = reiser4_delete_inode,
>       .put_super = reiser4_put_super,
>       .write_super = reiser4_write_super,
> diff --git a/vfs_ops.c b/vfs_ops.c
> index 7adce84..64cc23d 100644
> --- a/vfs_ops.c
> +++ b/vfs_ops.c
> @@ -53,11 +53,6 @@
>  #include <linux/rcupdate.h>
>  
>  
> -extern struct dentry_operations reiser4_dentry_operation;
> -
> -
> -
> -
>  /* update inode stat-data by calling plugin */
>  int reiser4_update_sd(struct inode *object)
>  {
> @@ -254,8 +249,6 @@ void reiser4_handle_error(void)
>       }
>  }
>  
> -
> -
>  struct dentry_operations reiser4_dentry_operations = {
>       .d_revalidate = NULL,
>       .d_hash = NULL,
> diff --git a/vfs_ops.h b/vfs_ops.h
> index 9ba968c..f1556a4 100644
> --- a/vfs_ops.h
> +++ b/vfs_ops.h
> @@ -27,7 +27,7 @@ int reiser4_readpages(struct file *, str
>  int reiser4_invalidatepage(struct page *, unsigned long offset);
>  int reiser4_releasepage(struct page *, int gfp);
>  
> -extern int reiser4_update_sd(struct inode *object);
> +extern int reiser4_update_sd(struct inode *);
>  extern int reiser4_add_nlink(struct inode *, struct inode *, int);
>  extern int reiser4_del_nlink(struct inode *, struct inode *, int);
>  
> ======== end ========


-- 
Humilis IT Services and Solutions
http://www.humilis.net

Reply via email to