mirror of https://github.com/vitalif/e2fsprogs
libext2fs: during punch, fix parent extents after modifying extent
When modifying/removing an extent during punch, don't forget to update the extent's parents. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Zheng Liu <wenqing.lz@taobao.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>maint-test
parent
80dec4cb31
commit
3c890ee96e
|
@ -353,6 +353,9 @@ static errcode_t ext2fs_punch_extent(ext2_filsys fs, ext2_ino_t ino,
|
|||
if (extent.e_len) {
|
||||
dbg_print_extent("replacing", &extent);
|
||||
retval = ext2fs_extent_replace(handle, 0, &extent);
|
||||
if (retval)
|
||||
goto errout;
|
||||
retval = ext2fs_extent_fix_parents(handle);
|
||||
} else {
|
||||
struct ext2fs_extent newex;
|
||||
blk64_t old_lblk, next_lblk;
|
||||
|
@ -387,6 +390,11 @@ static errcode_t ext2fs_punch_extent(ext2_filsys fs, ext2_ino_t ino,
|
|||
if (retval)
|
||||
goto errout;
|
||||
|
||||
retval = ext2fs_extent_fix_parents(handle);
|
||||
if (retval && retval != EXT2_ET_NO_CURRENT_NODE)
|
||||
goto errout;
|
||||
retval = 0;
|
||||
|
||||
/* Jump forward to the next extent. */
|
||||
ext2fs_extent_goto(handle, next_lblk);
|
||||
op = EXT2_EXTENT_CURRENT;
|
||||
|
|
Loading…
Reference in New Issue