mirror of
https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
synced 2024-11-24 02:25:03 +08:00
4b3038134b
When shrinking an file system, and we need to relocate an inode, the checksums in its extent tree must get updated to reflect its new inode number. When doing this, we need to do this *after* we update the extent tree to reflect any blocks which need to be relocated due to the file system shrink operation. Otherwise, in the case where only an interior node of the extent tree needs to get relocated, and none of the entries in that node need to be adjusted, the checksum for that interior node is updated in the old copy of that block, and then after the extent tree is updated to use the new copy of that interior node, the extent tree is left with an invalid checksum. This is a relatively rare case, since it requires the following conditions to be true: *) The metadata checksum feature must be enabled. *) An inode needs to be relocated. *) The inode needs to have an interior node. *) The block for that interior node needs to be relocated. *) None of blocks addressed by entries in that interior node needs to be relocated. When all of these conditions are true, though, the file system is left with corrupted with bad checksum for the extent tree block. Addresses-Launchpad-Bug: 1798562 Signed-off-by: Theodore Ts'o <tytso@mit.edu> Reported-by: Jean-Baptiste Lallement <jean-baptiste.lallement@ubuntu.com> |
||
---|---|---|
.. | ||
Android.bp | ||
extent.c | ||
main.c | ||
Makefile.in | ||
online.c | ||
resize2fs.8.in | ||
resize2fs.c | ||
resize2fs.h | ||
resource_track.c | ||
sim_progress.c | ||
test_extent.c | ||
test_extent.in | ||
test-resize |