On Aug 11, 2021, at 5:32 PM, Darrick J. Wong <djwong@xxxxxxxxxx> wrote: > > From: Darrick J. Wong <djwong@xxxxxxxxxx> > > Filesystems with 128-byte inodes do not support timestamps beyond the > year 2038. Since we're now less than 16.5 years away from that point, > it's time to start warning users about this lack of support when they > format an ext4 filesystem with small inodes. > > First, change the mke2fs.conf file to specify 256-byte inodes even for > small filesystems, then add a warning to mke2fs itself if someone is > trying to make us format an ext4 filesystem with 128-byte inodes. > > Note that we /don't/ warn about these things if the user has signalled > that they want an old format such as ext2, ext3, or hurd. Everyone > should know by now that those are legacy. > > Signed-off-by: Darrick J. Wong <djwong@xxxxxxxxxx> Reviewed-by: Andreas Dilger <adilger@xxxxxxxxx> > --- > misc/mke2fs.c | 35 +++++++++++++++++++++++++++++++++++ > misc/mke2fs.conf.in | 4 ++-- > 2 files changed, 37 insertions(+), 2 deletions(-) > > diff --git a/misc/mke2fs.c b/misc/mke2fs.c > index 92003e11..b16880c2 100644 > --- a/misc/mke2fs.c > +++ b/misc/mke2fs.c > @@ -1537,6 +1537,30 @@ static int get_device_geometry(const char *file, > } > #endif > > +/* > + * Returns true if the user is forcing an old format (e.g. ext2, ext3). > + * > + * If there is no fs_types list, the user invoked us with no explicit type and > + * gets the default (ext4) format. If we find the latest format (ext4) in the > + * type list, some combination of program name and -T argument put us in ext4 > + * mode. Anything else (ext2, ext3, hurd) and we return false. > + */ > +static inline int > +old_format_forced(char **fs_types) > +{ > + int found_ext4 = 0; > + int i; > + > + if (!fs_types) > + return 0; > + > + for (i = 0; fs_types[i]; i++) > + if (!strcmp(fs_types[i], "ext4")) > + found_ext4 = 1; > + > + return !found_ext4; > +} > + > static void PRS(int argc, char *argv[]) > { > int b, c, flags; > @@ -2603,6 +2627,17 @@ static void PRS(int argc, char *argv[]) > exit(1); > } > > + /* If the user didn't tell us to format with an old ondisk format... */ > + if (!old_format_forced(fs_types)) { > + /* > + * ...warn them that filesystems with 128-byte inodes will not > + * work properly beyond 2038. > + */ > + if (inode_size == EXT2_GOOD_OLD_INODE_SIZE) > + printf( > +_("128-byte inodes cannot handle dates beyond 2038 and are deprecated\n")); > + } > + > /* Make sure number of inodes specified will fit in 32 bits */ > if (num_inodes == 0) { > unsigned long long n; > diff --git a/misc/mke2fs.conf.in b/misc/mke2fs.conf.in > index 01e35cf8..2fa1a824 100644 > --- a/misc/mke2fs.conf.in > +++ b/misc/mke2fs.conf.in > @@ -16,12 +16,12 @@ > } > small = { > blocksize = 1024 > - inode_size = 128 > + inode_size = 256 > inode_ratio = 4096 > } > floppy = { > blocksize = 1024 > - inode_size = 128 > + inode_size = 256 > inode_ratio = 8192 > } > big = { Cheers, Andreas
Attachment:
signature.asc
Description: Message signed with OpenPGP