I'm sorry that I'm a little late to the party on this one. I was
reading this article. http://lwn.net/Articles/457304/
It appears to describe the file system UUID as part of the checksum. Is
that correct?
I am a little concerned, because the UUID can be changed manually using
tune2fs. Does changing the UUID invalidate the checksums? Does tune2fs
update the checksums based upon the new UUID?
Why does the file system UUID even need to be part of the checksum?
I'm concerned that someone with too little knowledge could hose their
own file system.
If I'm way off, I'm sorry. I'm just trying to learn.
Joseph D. Wagner
On Tue, Jun 17, 2014 at 09:38:35AM -0700, Joseph D. Wagner wrote:
> It appears to describe the file system UUID as part of the checksum. Is
> that correct?
Yes, it is correct.
> I am a little concerned, because the UUID can be changed manually using
> tune2fs. Does changing the UUID invalidate the checksums? Does tune2fs
> update the checksums based upon the new UUID?
Tune2fs updates the checksums based on the new UUID, yes.
> Why does the file system UUID even need to be part of the checksum?
This allows us to detect metadata blocks (in particular, portions of
the inode table which haven't been cleared yet) from previous file
systems.
There is a question of what to e2fsck should do when a metadata
checksum is invalid. We do need to make e2fsck smarter so it does the
right thing automatically. So for example, if the block group
descriptor checksums are invalid, so we read the backup block group
descriptors, we know that the last inode initialized fields are not
accurate. In that case, if an inode table block has an invalid
checksum, we could ignore those blocks automatically without bothering
the user about it. If we did all of this, then we could skip the lazy
inode table initialization when metadata_csum is enabled, since that
tends to impact performance for the a few hours when the file system
is first mounted.
Cheers,
- Ted