From: Theodore Ts'o Date: Fri, 22 Aug 2008 06:32:28 +0000 (-0400) Subject: Fix ext2fs_extent_set_bmap() when setting a block before the first extent X-Git-Tag: android-x86-6.0-r1~26^2~1242 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=a9ea7285e6d97fba4fa4af059db73f0413acfcab;p=android-x86%2Fexternal-e2fsprogs.git Fix ext2fs_extent_set_bmap() when setting a block before the first extent When setting a logical block which is before the first extent in the extent tree, make sure the new extent goes in front, at the very beginning of the extent tree. This fixes a bug where previously the new extent would be inserted out of order in this case. Signed-off-by: "Theodore Ts'o" --- diff --git a/lib/ext2fs/extent.c b/lib/ext2fs/extent.c index 45c3dc88..3df30929 100644 --- a/lib/ext2fs/extent.c +++ b/lib/ext2fs/extent.c @@ -1203,7 +1203,9 @@ errcode_t ext2fs_extent_set_bmap(ext2_extent_handle_t handle, ((int) extent.e_len < max_len-1)) { extent.e_len++; retval = ext2fs_extent_replace(handle, 0, &extent); - } else + } else if (logical < extent.e_lblk) + retval = ext2fs_extent_insert(handle, 0, &newextent); + else retval = ext2fs_extent_insert(handle, EXT2_EXTENT_INSERT_AFTER, &newextent); if (retval)