From: Edward Shishkin 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 Signed-off-by: Andrew Morton --- fs/reiser4/plugin/file/file.c | 7 ------- fs/reiser4/plugin/file/tail_conversion.c | 2 +- 2 files changed, 1 insertion(+), 8 deletions(-) diff -puN fs/reiser4/plugin/file/file.c~reiser4-fix-extent2tail fs/reiser4/plugin/file/file.c --- a/fs/reiser4/plugin/file/file.c~reiser4-fix-extent2tail +++ a/fs/reiser4/plugin/file/file.c @@ -194,13 +194,6 @@ static void set_file_state(struct unix_f 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) diff -puN fs/reiser4/plugin/file/tail_conversion.c~reiser4-fix-extent2tail fs/reiser4/plugin/file/tail_conversion.c --- a/fs/reiser4/plugin/file/tail_conversion.c~reiser4-fix-extent2tail +++ a/fs/reiser4/plugin/file/tail_conversion.c @@ -620,7 +620,7 @@ int extent2tail(struct unix_file_info *u } /* 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); /* _