* the whole block of INFO_SIZE
         */
        memcpy(fs_info->super_copy, bh->b_data, sizeof(*fs_info->super_copy));
-       memcpy(fs_info->super_for_commit, fs_info->super_copy,
-              sizeof(*fs_info->super_for_commit));
        brelse(bh);
 
+       disk_super = fs_info->super_copy;
+
        ASSERT(!memcmp(fs_info->fs_devices->fsid, fs_info->super_copy->fsid,
                       BTRFS_FSID_SIZE));
 
                                BTRFS_FSID_SIZE));
        }
 
+       features = btrfs_super_flags(disk_super);
+       if (features & BTRFS_SUPER_FLAG_CHANGING_FSID_V2) {
+               features &= ~BTRFS_SUPER_FLAG_CHANGING_FSID_V2;
+               btrfs_set_super_flags(disk_super, features);
+               btrfs_info(fs_info,
+                       "found metadata UUID change in progress flag, clearing");
+       }
+
+       memcpy(fs_info->super_for_commit, fs_info->super_copy,
+              sizeof(*fs_info->super_for_commit));
 
        ret = btrfs_validate_mount_super(fs_info);
        if (ret) {
                goto fail_alloc;
        }
 
-       disk_super = fs_info->super_copy;
        if (!btrfs_super_root(disk_super))
                goto fail_alloc;