mirror of https://github.com/vitalif/e2fsprogs
tune2fs: rewrite metadata checksums when resizing inode size
When we use tune2fs -I new_ino_size to change inode size, if everything is OK, the corresponding ext4_group_desc.bg_free_blocks_count will be decreased, so obviously, we need to re-compute the group descriptor checksums, and the inode 's size has also changed, we also need to recompute the checksums of inodes for metadata_csum filesystem, so here we choose to call a rewrite_metadata_checksums(), this will fix checksum issues. Meanwhile, the patch will trigger an existing memory write overflow, which will casue segfault, please see the next patch. Signed-off-by: Xiaoguang Wang <wangxg.fnst@cn.fujitsu.com> Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>crypto
parent
54f6faf7f2
commit
8386a42146
|
@ -2908,8 +2908,7 @@ retry_open:
|
|||
EXT4_FEATURE_RO_COMPAT_METADATA_CSUM))
|
||||
rewrite_checksums = 1;
|
||||
}
|
||||
if (rewrite_checksums)
|
||||
rewrite_metadata_checksums(fs);
|
||||
|
||||
if (I_flag) {
|
||||
if (mount_flags & EXT2_MF_MOUNTED) {
|
||||
fputs(_("The inode size may only be "
|
||||
|
@ -2935,6 +2934,7 @@ retry_open:
|
|||
if (resize_inode(fs, new_inode_size) == 0) {
|
||||
printf(_("Setting inode size %lu\n"),
|
||||
new_inode_size);
|
||||
rewrite_checksums = 1;
|
||||
} else {
|
||||
printf("%s", _("Failed to change inode size\n"));
|
||||
rc = 1;
|
||||
|
@ -2942,6 +2942,9 @@ retry_open:
|
|||
}
|
||||
}
|
||||
|
||||
if (rewrite_checksums)
|
||||
rewrite_metadata_checksums(fs);
|
||||
|
||||
if (l_flag)
|
||||
list_super(sb);
|
||||
if (stride_set) {
|
||||
|
|
Loading…
Reference in New Issue