]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
xfs: always warn about deprecated mount options
authorDarrick J. Wong <djwong@kernel.org>
Sun, 26 Oct 2025 17:40:05 +0000 (13:40 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 29 Oct 2025 13:10:32 +0000 (14:10 +0100)
[ Upstream commit 630785bfbe12c3ee3ebccd8b530a98d632b7e39d ]

The deprecation of the 'attr2' mount option in 6.18 wasn't entirely
successful because nobody noticed that the kernel never printed a
warning about attr2 being set in fstab if the only xfs filesystem is the
root fs; the initramfs mounts the root fs with no mount options; and the
init scripts only conveyed the fstab options by remounting the root fs.

Fix this by making it complain all the time.

Cc: stable@vger.kernel.org # v5.13
Fixes: 92cf7d36384b99 ("xfs: Skip repetitive warnings about mount options")
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Carlos Maiolino <cmaiolino@redhat.com>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
[ Update existing xfs_fs_warn_deprecated() callers ]
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/xfs/xfs_super.c

index bb0a82635a770d48a8562b994fe13eb28b922069..9a7dd3a36f74f1102a3aa892f2c701187dd89e15 100644 (file)
@@ -1386,16 +1386,25 @@ suffix_kstrtoull(
 static inline void
 xfs_fs_warn_deprecated(
        struct fs_context       *fc,
-       struct fs_parameter     *param,
-       uint64_t                flag,
-       bool                    value)
+       struct fs_parameter     *param)
 {
-       /* Don't print the warning if reconfiguring and current mount point
-        * already had the flag set
+       /*
+        * Always warn about someone passing in a deprecated mount option.
+        * Previously we wouldn't print the warning if we were reconfiguring
+        * and current mount point already had the flag set, but that was not
+        * the right thing to do.
+        *
+        * Many distributions mount the root filesystem with no options in the
+        * initramfs and rely on mount -a to remount the root fs with the
+        * options in fstab.  However, the old behavior meant that there would
+        * never be a warning about deprecated mount options for the root fs in
+        * /etc/fstab.  On a single-fs system, that means no warning at all.
+        *
+        * Compounding this problem are distribution scripts that copy
+        * /proc/mounts to fstab, which means that we can't remove mount
+        * options unless we're 100% sure they have only ever been advertised
+        * in /proc/mounts in response to explicitly provided mount options.
         */
-       if ((fc->purpose & FS_CONTEXT_FOR_RECONFIGURE) &&
-            !!(XFS_M(fc->root->d_sb)->m_features & flag) == value)
-               return;
        xfs_warn(fc->s_fs_info, "%s mount option is deprecated.", param->key);
 }
 
@@ -1543,19 +1552,19 @@ xfs_fs_parse_param(
 #endif
        /* Following mount options will be removed in September 2025 */
        case Opt_ikeep:
-               xfs_fs_warn_deprecated(fc, param, XFS_FEAT_IKEEP, true);
+               xfs_fs_warn_deprecated(fc, param);
                parsing_mp->m_features |= XFS_FEAT_IKEEP;
                return 0;
        case Opt_noikeep:
-               xfs_fs_warn_deprecated(fc, param, XFS_FEAT_IKEEP, false);
+               xfs_fs_warn_deprecated(fc, param);
                parsing_mp->m_features &= ~XFS_FEAT_IKEEP;
                return 0;
        case Opt_attr2:
-               xfs_fs_warn_deprecated(fc, param, XFS_FEAT_ATTR2, true);
+               xfs_fs_warn_deprecated(fc, param);
                parsing_mp->m_features |= XFS_FEAT_ATTR2;
                return 0;
        case Opt_noattr2:
-               xfs_fs_warn_deprecated(fc, param, XFS_FEAT_NOATTR2, true);
+               xfs_fs_warn_deprecated(fc, param);
                parsing_mp->m_features |= XFS_FEAT_NOATTR2;
                return 0;
        case Opt_max_open_zones: