Fixed bug in extent2tail conversion. Bug description: when converting partially converted file (with flag REISER4_PART_MIXED installed) reiser4_cut_tree() starts to cut old metatada from wrong offset. Result is data corruption. Signed-off-by: Edward Shishkin --- linux-2.6.22-rc6-mm1/fs/reiser4/plugin/file/file.c | 7 ------- linux-2.6.22-rc6-mm1/fs/reiser4/plugin/file/tail_conversion.c | 2 +- 2 files changed, 1 insertion(+), 8 deletions(-) --- linux-2.6.22-rc6-mm1/fs/reiser4/plugin/file/tail_conversion.c.orig +++ linux-2.6.22-rc6-mm1/fs/reiser4/plugin/file/tail_conversion.c @@ -620,7 +620,7 @@ } /* cut part of file we have read */ - start_byte = (__u64) (i << PAGE_CACHE_SHIFT); + start_byte = (__u64) ((i + start_page) << PAGE_CACHE_SHIFT); set_key_offset(&from, start_byte); set_key_offset(&to, start_byte + PAGE_CACHE_SIZE - 1); /* --- linux-2.6.22-rc6-mm1/fs/reiser4/plugin/file/file.c.orig +++ linux-2.6.22-rc6-mm1/fs/reiser4/plugin/file/file.c @@ -195,13 +195,6 @@ assert("vs-1164", level == LEAF_LEVEL || level == TWIG_LEVEL); if (uf_info->container == UF_CONTAINER_UNKNOWN) { - /* - * container is unknown, therefore conversion can not be in - * progress - */ - assert("", - !reiser4_inode_get_flag(unix_file_info_to_inode(uf_info), - REISER4_PART_IN_CONV)); if (cbk_result == CBK_COORD_NOTFOUND) uf_info->container = UF_CONTAINER_EMPTY; else if (level == LEAF_LEVEL)