]> git.apps.os.sepia.ceph.com Git - xfstests-dev.git/commitdiff
overlay: workaround libmount failure to remount,ro
authorAmir Goldstein <amir73il@gmail.com>
Tue, 3 Jun 2025 10:07:40 +0000 (12:07 +0200)
committerZorro Lang <zlang@kernel.org>
Fri, 6 Jun 2025 11:45:46 +0000 (19:45 +0800)
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@igalia.com>
Suggested-by: Karel Zak <kzak@redhat.com>
Link: https://lore.kernel.org/linux-fsdevel/20250521-ovl_ro-v1-1-2350b1493d94@igalia.com/
Link: https://lore.kernel.org/fstests/CAJfpegtJ3SDKmC80B4AfWiC3JmtWdW2+78fRZVtsuhe-wSRPvg@mail.gmail.com/
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
Reviewed-by: Zorro Lang <zlang@redhat.com>
Signed-off-by: Zorro Lang <zlang@kernel.org>
common/overlay
tests/overlay/035

index 01b6622f55731d0ab539e8517a0b00e29c12e435..0fad6e70a64ecf47190f7b90840fe9ba5a1eece3 100644 (file)
@@ -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
 
index 0b3257c4cce09e329b0f124831407777b500fdc1..2a4df99a35daac3bb21ec368f2715b698f450bd8 100755 (executable)
@@ -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