[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <34413996-BBB2-4862-ABFE-BA3420C640F5@dilger.ca>
Date: Wed, 11 Aug 2021 18:48:23 -0600
From: Andreas Dilger <adilger@...ger.ca>
To: "Darrick J. Wong" <djwong@...nel.org>
Cc: Theodore Ts'o <tytso@....edu>,
linux-ext4 <linux-ext4@...r.kernel.org>
Subject: Re: [PATCH] mke2fs: warn about missing y2038 support when formatting
fresh ext4 fs
On Aug 11, 2021, at 5:32 PM, Darrick J. Wong <djwong@...nel.org> wrote:
>
> From: Darrick J. Wong <djwong@...nel.org>
>
> 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@...nel.org>
Reviewed-by: Andreas Dilger <adilger@...ger.ca>
> ---
> 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
Download attachment "signature.asc" of type "application/pgp-signature" (874 bytes)
Powered by blists - more mailing lists