libmount >= v1.39 calls several unneeded fsconfig() calls to reconfigure lowerdir/upperdir when user requests only -o remount,ro. Those calls fail because overlayfs does not allow making any config changes with new mount api, besides MS_RDONLY. We workaround this problem with --options-mode ignore. Reported-by: André Almeida <andrealmeid@xxxxxxxxxx> Suggested-by: Karel Zak <kzak@xxxxxxxxxx> Link: https://lore.kernel.org/linux-fsdevel/20250521-ovl_ro-v1-1-2350b1493d94@xxxxxxxxxx/ Link: https://lore.kernel.org/fstests/CAJfpegtJ3SDKmC80B4AfWiC3JmtWdW2+78fRZVtsuhe-wSRPvg@xxxxxxxxxxxxxx/ Signed-off-by: Amir Goldstein <amir73il@xxxxxxxxx> --- Changes since v1 [1]: - Change workaround from LIBMOUNT_FORCE_MOUNT2 to --options-mode=ignore [1] https://lore.kernel.org/fstests/20250526143500.1520660-1-amir73il@xxxxxxxxx/ common/overlay | 5 ++++- tests/overlay/035 | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/common/overlay b/common/overlay index 01b6622f..0fad6e70 100644 --- a/common/overlay +++ b/common/overlay @@ -127,7 +127,10 @@ _overlay_base_scratch_mount() _overlay_scratch_mount() { if echo "$*" | grep -q remount; then - $MOUNT_PROG $SCRATCH_MNT $* + # By default, libmount merges remount options with old mount options. + # overlayfs does not support re-configuring the same mount options. + # We workaround this problem with --options-mode ignore. + $MOUNT_PROG $SCRATCH_MNT --options-mode ignore $* return fi diff --git a/tests/overlay/035 b/tests/overlay/035 index 0b3257c4..2a4df99a 100755 --- a/tests/overlay/035 +++ b/tests/overlay/035 @@ -42,7 +42,7 @@ mkdir -p $lowerdir1 $lowerdir2 $upperdir $workdir # Verify that overlay is mounted read-only and that it cannot be remounted rw. _overlay_scratch_mount_opts -o"lowerdir=$lowerdir2:$lowerdir1" touch $SCRATCH_MNT/foo 2>&1 | _filter_scratch -$MOUNT_PROG -o remount,rw $SCRATCH_MNT 2>&1 | _filter_ro_mount +_scratch_remount rw 2>&1 | _filter_ro_mount $UMOUNT_PROG $SCRATCH_MNT # Make workdir immutable to prevent workdir re-create on mount -- 2.34.1