Commit 630785bf authored by Darrick J. Wong's avatar Darrick J. Wong Committed by Carlos Maiolino
Browse files

xfs: always warn about deprecated mount options



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: 92cf7d36 ("xfs: Skip repetitive warnings about mount options")
Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarCarlos Maiolino <cmaiolino@redhat.com>
Signed-off-by: default avatarCarlos Maiolino <cem@kernel.org>
parent bd721ec7
Loading
Loading
Loading
Loading
+17 −8
Original line number Diff line number Diff line
@@ -1379,16 +1379,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);
}