thanks for the patch, Alex, but yesterday i converted all of my
harddisks to reiserFS in an act of frustration. Sorry that i can't help
you test your patch.

Alexander Zarochentsev wrote:
> hello,
> 
> On Friday 24 February 2006 08:35, Alec Burney wrote:
> 
> [...]
> 
> 
> would you please try the attached patch.
> 
> 
> 
> ------------------------------------------------------------------------
> 
>  fs/reiser4/plugin/file/file.c |    9 +++++----
>  1 files changed, 5 insertions(+), 4 deletions(-)
> 
> Index: linux-2.6.16-rc3-mm1/fs/reiser4/plugin/file/file.c
> ===================================================================
> --- linux-2.6.16-rc3-mm1.orig/fs/reiser4/plugin/file/file.c
> +++ linux-2.6.16-rc3-mm1/fs/reiser4/plugin/file/file.c
> @@ -2454,6 +2454,7 @@ ssize_t write_unix_file(struct file *fil
>  
>       if (inode_get_flag(inode, REISER4_PART_CONV)) {
>               /* we can not currently write to a file which is partially 
> converted */
> +             txn_restart(ctx);
>               get_exclusive_access(uf_info);
>               result = finish_conversion(inode);
>               drop_exclusive_access(uf_info);
> @@ -2481,6 +2482,7 @@ ssize_t write_unix_file(struct file *fil
>  
>                  3) convert file to extents to not enter here on each write
>                  to mmaped file */
> +             txn_restart(ctx);
>               get_exclusive_access(uf_info);
>               result = check_pages_unix_file(file, inode);
>               drop_exclusive_access(uf_info);
> @@ -2535,14 +2537,13 @@ ssize_t write_unix_file(struct file *fil
>       while (left > 0) {
>               int excl = 0;
>  
> -             /* getting exclusive or not exclusive access requires no
> -                transaction open */
> -             txn_restart_current();
> -
>               /* faultin user page */
>               fault_in_pages_readable(buf,
>                                       left > PAGE_CACHE_SIZE ? 
> PAGE_CACHE_SIZE : left);
>  
> +             /* getting exclusive or not exclusive access requires no
> +                transaction open */
> +             txn_restart(ctx);
>               if (inode->i_size == 0) {
>                       get_exclusive_access(uf_info);
>                       excl = 1;

-- 
cell: 808.332.5131

Reply via email to