On 9/11/20 11:43 AM, Darrick J. Wong wrote: > From: Darrick J. Wong <darrick.wong@xxxxxxxxxx> > > The V4 filesystem format contains known weaknesses in the on-disk format > that make metadata verification diffiult. In addition, the format will Editorial nitpicks you are free to take or leave: drop "will" > does not support dates past 2038 and will not be upgraded to do so. > Therefore, we should start the process of retiring the old format to > close off attack surfaces and to encourage users to migrate onto V5. > > Therefore, make XFS V4 support a configurable option. For the first Too many "Therefores": "This patch makes XFS V4 support a ..." > period it will be default Y in case some distributors want to withdraw > support early; for the second period it will be default N so that anyone > who wishes to continue support can do so; and after that, support will > be removed from the kernel. Maybe something like: "Dates for these events are added to the XFS documentation in the kernel." In any case, Reviewed-by: Eric Sandeen <sandeen@xxxxxxxxxx> > Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> > --- > v3: be a little more helpful about old xfsprogs and warn more loudly > about deprecation > v2: define what is a V4 filesystem, update the administrator guide > --- > Documentation/admin-guide/xfs.rst | 23 +++++++++++++++++++++++ > fs/xfs/Kconfig | 24 ++++++++++++++++++++++++ > fs/xfs/xfs_super.c | 13 +++++++++++++ > 3 files changed, 60 insertions(+) > > diff --git a/Documentation/admin-guide/xfs.rst b/Documentation/admin-guide/xfs.rst > index f461d6c33534..b6deea9ec073 100644 > --- a/Documentation/admin-guide/xfs.rst > +++ b/Documentation/admin-guide/xfs.rst > @@ -210,6 +210,28 @@ When mounting an XFS filesystem, the following options are accepted. > inconsistent namespace presentation during or after a > failover event. > > +Deprecation of V4 Format > +======================== > + > +The V4 filesystem format lacks certain features that are supported by > +the V5 format, such as metadata checksumming, strengthened metadata > +verification, and the ability to store timestamps past the year 2038. > +Because of this, the V4 format is deprecated. All users should upgrade > +by backing up their files, reformatting, and restoring from the backup. > + > +Administrators and users can detect a V4 filesystem by running xfs_info > +against a filesystem mountpoint and checking for a string beginning with > +"crc=". If no such string is found, please upgrade xfsprogs to the > +latest version and try again. > + > +The deprecation will take place in two parts. Support for mounting V4 > +filesystems can now be disabled at kernel build time via Kconfig option. > +The option will default to yes until September 2025, at which time it > +will be changed to default to no. In September 2030, support will be > +removed from the codebase entirely. > + > +Note: Distributors may choose to withdraw V4 format support earlier than > +the dates listed above. > > Deprecated Mount Options > ======================== > @@ -217,6 +239,7 @@ Deprecated Mount Options > =========================== ================ > Name Removal Schedule > =========================== ================ > +Mounting with V4 filesystem September 2030 > =========================== ================ > > > diff --git a/fs/xfs/Kconfig b/fs/xfs/Kconfig > index e685299eb3d2..5422227e9e93 100644 > --- a/fs/xfs/Kconfig > +++ b/fs/xfs/Kconfig > @@ -22,6 +22,30 @@ config XFS_FS > system of your root partition is compiled as a module, you'll need > to use an initial ramdisk (initrd) to boot. > > +config XFS_SUPPORT_V4 > + bool "Support deprecated V4 (crc=0) format" > + default y > + help > + The V4 filesystem format lacks certain features that are supported > + by the V5 format, such as metadata checksumming, strengthened > + metadata verification, and the ability to store timestamps past the > + year 2038. Because of this, the V4 format is deprecated. All users > + should upgrade by backing up their files, reformatting, and restoring > + from the backup. > + > + Administrators and users can detect a V4 filesystem by running > + xfs_info against a filesystem mountpoint and checking for a string > + beginning with "crc=". If the string "crc=0" is found, the > + filesystem is a V4 filesystem. If no such string is found, please > + upgrade xfsprogs to the latest version and try again. > + > + This option will become default N in September 2025. Support for the > + V4 format will be removed entirely in September 2030. Distributors > + can say N here to withdraw support earlier. > + > + To continue supporting the old V4 format (crc=0), say Y. > + To close off an attack surface, say N. > + > config XFS_QUOTA > bool "XFS Quota support" > depends on XFS_FS > diff --git a/fs/xfs/xfs_super.c b/fs/xfs/xfs_super.c > index febd61ba071d..e2250c6d7251 100644 > --- a/fs/xfs/xfs_super.c > +++ b/fs/xfs/xfs_super.c > @@ -1451,6 +1451,19 @@ xfs_fc_fill_super( > if (error) > goto out_free_sb; > > + /* V4 support is undergoing deprecation. */ > + if (!xfs_sb_version_hascrc(&mp->m_sb)) { > +#ifdef CONFIG_XFS_SUPPORT_V4 > + xfs_warn_once(mp, > + "Deprecated V4 format (crc=0) will not be supported after September 2030."); > +#else > + xfs_warn(mp, > + "Deprecated V4 format (crc=0) not supported by kernel."); > + error = -EINVAL; > + goto out_free_sb; > +#endif > + } > + > /* > * XFS block mappings use 54 bits to store the logical block offset. > * This should suffice to handle the maximum file size that the VFS >