Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kernel/Ext2FS: Add full support for large inodes #25456

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Conversation

implicitfield
Copy link
Contributor

The extra data provided by large inodes has almost exclusively to do with timestamps, which means that you can now get nanosecond precision on your root file system, and the capability to support dates beyond 2038 or so in a standards-compliant way. This is also basically a pre-requisite for ext3/ext4, since the 128-byte inodes we've been using are more-or-less deprecated.

This PR also fixes up serialization of epoch offsets, so if you have a filesystem that has inodes with negative timestamps, then those should now be reported correctly.

Lastly, this also adds a CI step to validate filesystem consistency after running tests, since we shouldn't be seeing any filesystem corruption after all the recent work that's been put into Ext2FS.

@github-actions github-actions bot added the 👀 pr-needs-review PR needs review from a maintainer or community member label Nov 23, 2024
@implicitfield implicitfield force-pushed the ext2fs-inodes branch 2 times, most recently from dff0289 to 5526df8 Compare November 23, 2024 18:22
The header would have you believe these are unsigned, but they should
really be treated as signed.
128-byte inodes are more-or-less deprecated since they store timestamps
as unsigned 32-bit integer offsets from the UNIX epoch. Large inodes, on
the other hand, contain records that may specify a different epoch, and
are thus less susceptible to overflows. These very same records also
have the capability to store timestamps with nanosecond precision, which
this commit adds full support for as well.
We now have full support for large inodes, so we don't need to rely on
the deprecated 128-byte inodes anymore. Note that genext2fs doesn't
support large inodes, so we have to account for that when using that
utility.
@nico
Copy link
Contributor

nico commented Nov 27, 2024

I currently rely on genext2fs. Will that still work after this PR? One of the commit messages sound a bit ominous :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
👀 pr-needs-review PR needs review from a maintainer or community member
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants