]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
tune2fs: prevent changing UUID of fs with stable_inodes feature
authorEric Biggers <ebiggers@google.com>
Wed, 1 Apr 2020 20:32:36 +0000 (13:32 -0700)
committerTheodore Ts'o <tytso@mit.edu>
Fri, 10 Apr 2020 15:23:12 +0000 (11:23 -0400)
The stable_inodes feature is intended to indicate that it's safe to use
IV_INO_LBLK_64 encryption policies, where the encryption depends on the
inode numbers and thus filesystem shrinking is not allowed.  However
since inode numbers are not unique across filesystems, the encryption
also depends on the filesystem UUID, and I missed that there is a
supported way to change the filesystem UUID (tune2fs -U).

So, make 'tune2fs -U' report an error if stable_inodes is set.

We could add a separate stable_uuid feature flag, but it seems unlikely
it would be useful enough on its own to warrant another flag.

Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
misc/tune2fs.c

index 314cc0d04c0198c11b8f020dc3799aaa9c8c6c25..ca06c98b4c35a53a6eeb27c311d9ae3b7a725c6e 100644 (file)
@@ -3236,6 +3236,13 @@ _("Warning: The journal is dirty. You may wish to replay the journal like:\n\n"
                char buf[SUPERBLOCK_SIZE] __attribute__ ((aligned(8)));
                __u8 old_uuid[UUID_SIZE];
 
+               if (ext2fs_has_feature_stable_inodes(fs->super)) {
+                       fputs(_("Cannot change the UUID of this filesystem "
+                               "because it has the stable_inodes feature "
+                               "flag.\n"), stderr);
+                       exit(1);
+               }
+
                if (!ext2fs_has_feature_csum_seed(fs->super) &&
                    (ext2fs_has_feature_metadata_csum(fs->super) ||
                     ext2fs_has_feature_ea_inode(fs->super))) {