2009-01-20 13:21:46

by fdbugs

[permalink] [raw]
Subject: bug when we do an mkfs.ext4 + tune2fs

Hi,

I have an error when I try to mount an ext4 after having changed its
uuid with tune2fs. If I just do an mkfs.ext4 I can mount it, but if I
do an mkfs.ext4 and then an e2label -U on it, it can't be mounted.
Fortunately this bug is quite easy to reproduce.

1) mkfs.ext4 /dev/xxxx -b 4096 -I 256 -O
has_journal,ext_attr,resize_inode,dir_index,filetype,extent,flex_bg,sparse_super,large_file,huge_file,uninit_bg,dir_nlink,extra_isize,^journal_dev

2) "mount -t ext4 /dev/xxxx /mnt/test" works

3) umount /dev/xxxx

4) tune2fs /dev/xxxx -U 19ad8325-2e39-4be1-a6b1-a5d2d1015eeb

5) "mount -t ext4 /dev/xxxx /mnt/test" fails

6) we can see the following error in the log messages
EXT4-fs: ext4_check_descriptors: Checksum for group 0 failed (10987!=27579)
EXT4-fs: group descriptors corrupted!


I am running a 64bit 2.6.27.12 kernel with 64bit binaries, and e2fsprogs-1.41.3.

Another user using Ubuntu jaunty alpha3 on a 32bit system has exactly
the same problem, so it sounds that all recent ext4 versions are
impacted.

The mkfs command is quite long just because the list of filesystem
features have been saved by a tool which must recreate the filesystem
with the same attributes.

Thanks


2009-01-20 14:05:15

by Theodore Ts'o

[permalink] [raw]
Subject: Re: bug when we do an mkfs.ext4 + tune2fs

On Tue, Jan 20, 2009 at 01:21:45PM +0000, fdbugs wrote:
> Hi,
>
> I have an error when I try to mount an ext4 after having changed its
> uuid with tune2fs. If I just do an mkfs.ext4 I can mount it, but if I
> do an mkfs.ext4 and then an e2label -U on it, it can't be mounted.
> Fortunately this bug is quite easy to reproduce.

This is a bug in tune2fs/e2label; it's fixed in the maint branch of
e2fsprogs, and I hope to get a release out soon. The relevant commit
is:

commit 9d4a4dc2870c46c74f815ec2bebe10b4701accf2
Author: Theodore Ts'o <[email protected]>
Date: Fri Nov 14 17:42:27 2008 -0500

tune2fs: Update the block group checksums when changing the UUID

Since the block group checksums depend on the UUID, we need to update
the block group checksums when setting the UUID. We only do so if all
of the checksums are correct, however.

Signed-off-by: "Theodore Ts'o" <[email protected]>

You can work around it by using the command "e2fsck -fy" right after
the e2label -U, but that's admittedly quite annoying. :-/

- Ted