* [RFC v4] common: xfstests support overlay+tmpfs
@ 2022-05-11 8:34 Baokun Li
2022-05-11 9:07 ` Amir Goldstein
0 siblings, 1 reply; 2+ messages in thread
From: Baokun Li @ 2022-05-11 8:34 UTC (permalink / raw)
To: fstests; +Cc: zlang, guaneryu, amir73il, libaokun1, chengzhihao1, yukuai3
The local.config of overlay+tmpfs is as follows:
```local.config.example
export FSTYP=tmpfs
export TEST_DEV=tmpfs_test
export TEST_DIR=/tmp/test
export SCRATCH_DEV=tmpfs_scratch
export SCRATCH_MNT=/tmp/scratch
```
Run `./check -overlay tests` to execute test case on overlay+tmpfs.
Signed-off-by: Baokun Li <libaokun1@huawei.com>
---
V1->V2:
Fix the bug in version V1 and fix the issue in cycle_mount.
V2->V3:
Merge two patches into one completed patch.
V3->V4:
Cycle mount the overlay without cycle mounting the base fs.
V1: https://patchwork.kernel.org/project/fstests/patch/20220424063751.1067376-1-libaokun1@huawei.com/
V2: https://patchwork.kernel.org/project/fstests/cover/20220507094524.949615-1-libaokun1@huawei.com/
V3: https://patchwork.kernel.org/project/fstests/patch/20220510020434.2561224-1-libaokun1@huawei.com/
common/config | 12 ++++++------
common/overlay | 2 +-
common/rc | 39 ++++++++++++++++++++++++++++++---------
3 files changed, 37 insertions(+), 16 deletions(-)
diff --git a/common/config b/common/config
index 1033b890..d5953176 100644
--- a/common/config
+++ b/common/config
@@ -610,15 +610,15 @@ _overlay_config_override()
[ ! -d "$TEST_DEV" ] || export OVL_BASE_TEST_DIR="$TEST_DEV"
[ ! -d "$SCRATCH_DEV" ] || export OVL_BASE_SCRATCH_MNT="$SCRATCH_DEV"
+ # Config file may specify base fs type, but we obay -overlay flag
+ [ "$FSTYP" == overlay ] || export OVL_BASE_FSTYP="$FSTYP"
+ export FSTYP=overlay
+
# 2. SCRATCH/TEST_DEV point to the base fs partitions. In this case,
# the new OVL_BASE_SCRATCH/TEST_DEV/MNT vars are set to the values
# of the configured base fs and SCRATCH/TEST_DEV vars are set to the
# overlayfs base and mount dirs inside base fs mount.
- [ -b "$TEST_DEV" ] || [ -c "$TEST_DEV" ] || return 0
-
- # Config file may specify base fs type, but we obay -overlay flag
- [ "$FSTYP" == overlay ] || export OVL_BASE_FSTYP="$FSTYP"
- export FSTYP=overlay
+ [ -b "$TEST_DEV" ] || [ -c "$TEST_DEV" ] || [ "$OVL_BASE_FSTYP" == tmpfs ] || return 0
# Store original base fs vars
export OVL_BASE_TEST_DEV="$TEST_DEV"
@@ -634,7 +634,7 @@ _overlay_config_override()
export TEST_DIR="$OVL_BASE_TEST_DIR/$OVL_MNT"
export MOUNT_OPTIONS="$OVERLAY_MOUNT_OPTIONS"
- [ -b "$SCRATCH_DEV" ] || [ -c "$SCRATCH_DEV" ] || return 0
+ [ -b "$SCRATCH_DEV" ] || [ -c "$SCRATCH_DEV" ] || [ "$OVL_BASE_FSTYP" == tmpfs ] || return 0
# Store original base fs vars
export OVL_BASE_SCRATCH_DEV="$SCRATCH_DEV"
diff --git a/common/overlay b/common/overlay
index fff67ba1..c4e7ee58 100644
--- a/common/overlay
+++ b/common/overlay
@@ -81,7 +81,7 @@ _overlay_base_mount()
return 1
fi
- _mount $* $dev $mnt
+ _mount -t $OVL_BASE_FSTYP $* $dev $mnt
_idmapped_mount $dev $mnt
}
diff --git a/common/rc b/common/rc
index 553ae350..0d50cc22 100644
--- a/common/rc
+++ b/common/rc
@@ -409,15 +409,25 @@ _scratch_remount()
_scratch_cycle_mount()
{
local opts="$1"
+ local unmounted
+
+ case "$FSTYP" in
+ tmpfs)
+ _scratch_remount "$opts"
+ return
+ ;;
+ overlay)
+ if [ "$OVL_BASE_FSTYP" = tmpfs ]; then
+ $UMOUNT_PROG $SCRATCH_MNT
+ unmounted=true
+ fi
+ ;;
+ esac
- if [ "$FSTYP" = tmpfs ]; then
- _scratch_remount "$opts"
- return
- fi
if test -n "$opts"; then
opts="-o $opts"
fi
- _scratch_unmount
+ [ "$unmounted" = true ] || _scratch_unmount
_try_scratch_mount "$opts" || _fail "cycle mount failed"
}
@@ -522,10 +532,21 @@ _test_unmount()
_test_cycle_mount()
{
- if [ "$FSTYP" = tmpfs ]; then
- return
- fi
- _test_unmount
+ local unmounted
+
+ case "$FSTYP" in
+ tmpfs)
+ return
+ ;;
+ overlay)
+ if [ "$OVL_BASE_FSTYP" = tmpfs ]; then
+ $UMOUNT_PROG $TEST_DIR
+ unmounted=true
+ fi
+ ;;
+ esac
+
+ [ "$unmounted" = true ] || _test_unmount
_test_mount
}
--
2.31.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [RFC v4] common: xfstests support overlay+tmpfs
2022-05-11 8:34 [RFC v4] common: xfstests support overlay+tmpfs Baokun Li
@ 2022-05-11 9:07 ` Amir Goldstein
0 siblings, 0 replies; 2+ messages in thread
From: Amir Goldstein @ 2022-05-11 9:07 UTC (permalink / raw)
To: Baokun Li; +Cc: fstests, Zorro Lang, Eryu Guan, Zhihao Cheng, yukuai3
On Wed, May 11, 2022 at 11:20 AM Baokun Li <libaokun1@huawei.com> wrote:
>
> The local.config of overlay+tmpfs is as follows:
> ```local.config.example
> export FSTYP=tmpfs
> export TEST_DEV=tmpfs_test
> export TEST_DIR=/tmp/test
> export SCRATCH_DEV=tmpfs_scratch
> export SCRATCH_MNT=/tmp/scratch
> ```
>
> Run `./check -overlay tests` to execute test case on overlay+tmpfs.
>
> Signed-off-by: Baokun Li <libaokun1@huawei.com>
Reviewed-by: Amir Goldstein <amir73il@gmail.com>
> ---
> V1->V2:
> Fix the bug in version V1 and fix the issue in cycle_mount.
> V2->V3:
> Merge two patches into one completed patch.
> V3->V4:
> Cycle mount the overlay without cycle mounting the base fs.
>
> V1: https://patchwork.kernel.org/project/fstests/patch/20220424063751.1067376-1-libaokun1@huawei.com/
> V2: https://patchwork.kernel.org/project/fstests/cover/20220507094524.949615-1-libaokun1@huawei.com/
> V3: https://patchwork.kernel.org/project/fstests/patch/20220510020434.2561224-1-libaokun1@huawei.com/
>
> common/config | 12 ++++++------
> common/overlay | 2 +-
> common/rc | 39 ++++++++++++++++++++++++++++++---------
> 3 files changed, 37 insertions(+), 16 deletions(-)
>
> diff --git a/common/config b/common/config
> index 1033b890..d5953176 100644
> --- a/common/config
> +++ b/common/config
> @@ -610,15 +610,15 @@ _overlay_config_override()
> [ ! -d "$TEST_DEV" ] || export OVL_BASE_TEST_DIR="$TEST_DEV"
> [ ! -d "$SCRATCH_DEV" ] || export OVL_BASE_SCRATCH_MNT="$SCRATCH_DEV"
>
> + # Config file may specify base fs type, but we obay -overlay flag
> + [ "$FSTYP" == overlay ] || export OVL_BASE_FSTYP="$FSTYP"
> + export FSTYP=overlay
> +
> # 2. SCRATCH/TEST_DEV point to the base fs partitions. In this case,
> # the new OVL_BASE_SCRATCH/TEST_DEV/MNT vars are set to the values
> # of the configured base fs and SCRATCH/TEST_DEV vars are set to the
> # overlayfs base and mount dirs inside base fs mount.
> - [ -b "$TEST_DEV" ] || [ -c "$TEST_DEV" ] || return 0
> -
> - # Config file may specify base fs type, but we obay -overlay flag
> - [ "$FSTYP" == overlay ] || export OVL_BASE_FSTYP="$FSTYP"
> - export FSTYP=overlay
> + [ -b "$TEST_DEV" ] || [ -c "$TEST_DEV" ] || [ "$OVL_BASE_FSTYP" == tmpfs ] || return 0
>
> # Store original base fs vars
> export OVL_BASE_TEST_DEV="$TEST_DEV"
> @@ -634,7 +634,7 @@ _overlay_config_override()
> export TEST_DIR="$OVL_BASE_TEST_DIR/$OVL_MNT"
> export MOUNT_OPTIONS="$OVERLAY_MOUNT_OPTIONS"
>
> - [ -b "$SCRATCH_DEV" ] || [ -c "$SCRATCH_DEV" ] || return 0
> + [ -b "$SCRATCH_DEV" ] || [ -c "$SCRATCH_DEV" ] || [ "$OVL_BASE_FSTYP" == tmpfs ] || return 0
>
> # Store original base fs vars
> export OVL_BASE_SCRATCH_DEV="$SCRATCH_DEV"
> diff --git a/common/overlay b/common/overlay
> index fff67ba1..c4e7ee58 100644
> --- a/common/overlay
> +++ b/common/overlay
> @@ -81,7 +81,7 @@ _overlay_base_mount()
> return 1
> fi
>
> - _mount $* $dev $mnt
> + _mount -t $OVL_BASE_FSTYP $* $dev $mnt
> _idmapped_mount $dev $mnt
> }
>
> diff --git a/common/rc b/common/rc
> index 553ae350..0d50cc22 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -409,15 +409,25 @@ _scratch_remount()
> _scratch_cycle_mount()
> {
> local opts="$1"
> + local unmounted
> +
> + case "$FSTYP" in
> + tmpfs)
> + _scratch_remount "$opts"
> + return
> + ;;
> + overlay)
> + if [ "$OVL_BASE_FSTYP" = tmpfs ]; then
> + $UMOUNT_PROG $SCRATCH_MNT
> + unmounted=true
> + fi
> + ;;
> + esac
>
> - if [ "$FSTYP" = tmpfs ]; then
> - _scratch_remount "$opts"
> - return
> - fi
> if test -n "$opts"; then
> opts="-o $opts"
> fi
> - _scratch_unmount
> + [ "$unmounted" = true ] || _scratch_unmount
> _try_scratch_mount "$opts" || _fail "cycle mount failed"
> }
>
> @@ -522,10 +532,21 @@ _test_unmount()
>
> _test_cycle_mount()
> {
> - if [ "$FSTYP" = tmpfs ]; then
> - return
> - fi
> - _test_unmount
> + local unmounted
> +
> + case "$FSTYP" in
> + tmpfs)
> + return
> + ;;
> + overlay)
> + if [ "$OVL_BASE_FSTYP" = tmpfs ]; then
> + $UMOUNT_PROG $TEST_DIR
> + unmounted=true
> + fi
> + ;;
> + esac
> +
> + [ "$unmounted" = true ] || _test_unmount
> _test_mount
> }
>
> --
> 2.31.1
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-05-11 9:07 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-11 8:34 [RFC v4] common: xfstests support overlay+tmpfs Baokun Li
2022-05-11 9:07 ` Amir Goldstein
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.