On 2/13/25 03:17, Dave Chinner wrote:
On Wed, Feb 12, 2025 at 12:39:58PM +0000, Nirjhar Roy (IBM) wrote:
This testcase reproduces the following bug:
Bug:
mount -o remount,noattr2 <device> <mount_point> succeeds
unexpectedly on a v5 xfs when CONFIG_XFS_SUPPORT_V4 is set.
AFAICT, this is expected behaviour. Remount intentionally ignores
options that cannot be changed.
Ideally the above mount command should always fail with a v5 xfs
filesystem irrespective of whether CONFIG_XFS_SUPPORT_V4 is set
or not.
No, we cannot fail remount when invalid options are passed to the
kernel by the mount command for historical reasons. i.e. the mount
command has historically passed invalid options to the kernel on
remount, but expects the kernel to apply just the new options that
they understand and ignore the rest without error.
i.e. to keep compatibility with older userspace, we cannot fail a
remount because userspace passed an option the kernel does not
understand or cannot change.
Hence, in this case, XFS emits a deprecation warning for the noattr2
mount option on remount (because it is understood), then ignores
because it it isn't a valid option that remount can change.
Thank you, Dave, for the background. This was really helpful. So just to
confirm the behavior of mount - remount with noattr2 (or any other
invalid option) should always pass irrespective of whether
CONFIG_XFS_SUPPORT_V4 is set or not, correct?
This is the behavior that I have observed with CONFIG_XFS_SUPPORT_V4=n
on v5 xfs:
$ mount -o "remount,noattr2" /dev/loop0 /mnt1/test
mount: /mnt1/test: mount point not mounted or bad option.
$ echo "$?"
32
With this test, I am also parallelly working on a kernel fix to make the
behavior of remount with noattr2 same irrespective of the
CONFIG_XFS_SUPPORT_V4's value, and I was under the impression that it
should always fail. But, it seems like it should always pass (silently
ignoring the invalid mount options) and the failure when
CONFIG_XFS_SUPPORT_V4=n is a bug. Is my understanding correct?
--NR
-Dave.
--
Nirjhar Roy
Linux Kernel Developer
IBM, Bangalore