Whamcloud - gitweb
ext2fs_block_iterate2(): Support changing interior nodes of an extent tree
authorTheodore Ts'o <tytso@mit.edu>
Fri, 22 Aug 2008 06:50:02 +0000 (02:50 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Fri, 22 Aug 2008 06:50:02 +0000 (02:50 -0400)
Resize2fs needs to be able to relocate the interior nodes of an extent
tree.  Add support for this feature via ext2fs_extent_replace().

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
lib/ext2fs/block.c

index 4575cf3..14be1ba 100644 (file)
@@ -392,8 +392,11 @@ errcode_t ext2fs_block_iterate2(ext2_filsys fs,
                                        ret |= (*ctx.func)(fs, &blk,
                                                           -1, 0, 0, priv_data);
                                        if (ret & BLOCK_CHANGED) {
-                                               ctx.errcode = EXT2_ET_EXTENT_NOT_SUPPORTED;
-                                               goto errout;
+                                               extent.e_pblk = blk;
+                                               ctx.errcode =
+                               ext2fs_extent_replace(handle, 0, &extent);
+                                               if (ctx.errcode)
+                                                       goto errout;
                                        }
                                }
                                continue;