if (file_inode(file_in)->i_sb != file_inode(file_out)->i_sb)
                return -EXDEV;
 
-       if (fc->writeback_cache) {
-               inode_lock(inode_in);
-               err = fuse_writeback_range(inode_in, pos_in, pos_in + len);
-               inode_unlock(inode_in);
-               if (err)
-                       return err;
-       }
+       inode_lock(inode_in);
+       err = fuse_writeback_range(inode_in, pos_in, pos_in + len - 1);
+       inode_unlock(inode_in);
+       if (err)
+               return err;
 
        inode_lock(inode_out);
 
        if (err)
                goto out;
 
-       if (fc->writeback_cache) {
-               err = fuse_writeback_range(inode_out, pos_out, pos_out + len);
-               if (err)
-                       goto out;
-       }
+       err = fuse_writeback_range(inode_out, pos_out, pos_out + len - 1);
+       if (err)
+               goto out;
 
        if (is_unstable)
                set_bit(FUSE_I_SIZE_UNSTABLE, &fi_out->state);