From: Jakob Unterwurzacher <jakobunt@gmail.com>
To: guaneryu@gmail.com
Cc: fstests@vger.kernel.org, linux-fsdevel@vger.kernel.org,
miklos@szeredi.hu, Miklos Szeredi <mszeredi@redhat.com>,
Jakob Unterwurzacher <jakobunt@gmail.com>
Subject: [PATCH] xfstests: add fuse support
Date: Wed, 4 Jan 2023 20:39:33 +0100 [thread overview]
Message-ID: <20230104193932.984531-1-jakobunt@gmail.com> (raw)
In-Reply-To: <20200217100800.GH2697@desktop>
From: Miklos Szeredi <miklos@szeredi.hu>
This allows using any fuse filesystem that can be mounted with
mount -t fuse.$FUSE_SUBTYP ...
Changelog:
v2: Jan 3, 2022, Jakob Unterwurzacher
* Rebased to master
* Instructions updated
** To not fail with libfuse version mismatch on passthrough_ll exe
on Fedora
** To use sudo
* Review comments from Eryu Guan addressed:
** Comment updated to mention fuse
** Renamed SUBTYP to FUSE_SUBTYP
** Removed $SCRATCH_MNT/bin/sh check before "rm -rf"
** _require_scratch_nocheck for fuse also checks for $SCRATCH_MNT
** _require_test for fuse also checks for $TEST_DIR
v1: Jan 8, 2020, Miklos Szeredi
* Initial submission
* https://patchwork.kernel.org/project/linux-fsdevel/patch/20200108192504.GA893@miu.piliscsaba.redhat.com/
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Signed-off-by: Jakob Unterwurzacher <jakobunt@gmail.com>
---
README.fuse | 26 ++++++++++++++++++++++++++
check | 3 ++-
common/config | 9 +++++++--
common/rc | 24 ++++++++++++++++++------
tests/generic/020 | 4 ++--
5 files changed, 55 insertions(+), 11 deletions(-)
create mode 100644 README.fuse
diff --git a/README.fuse b/README.fuse
new file mode 100644
index 00000000..35ad9c46
--- /dev/null
+++ b/README.fuse
@@ -0,0 +1,26 @@
+Here are instructions for testing fuse using the passthrough_ll example
+filesystem provided in the libfuse source tree:
+
+git clone git://github.com/libfuse/libfuse.git
+cd libfuse
+meson build
+cd build
+ninja
+cat << EOF | sudo tee /sbin/mount.fuse.passthrough_ll
+#!/bin/bash
+ulimit -n 1048576
+exec $(pwd)/example/passthrough_ll -ofsname="\$@"
+EOF
+sudo chmod +x /sbin/mount.fuse.passthrough_ll
+mkdir -p /mnt/test /mnt/scratch /home/test/test /home/test/scratch
+
+Use the following local.config file:
+
+export TEST_DEV=non1
+export TEST_DIR=/mnt/test
+export SCRATCH_DEV=non2
+export SCRATCH_MNT=/mnt/scratch
+export FSTYP=fuse
+export FUSE_SUBTYP=.passthrough_ll
+export FUSE_MOUNT_OPTIONS="-osource=/home/test/scratch,allow_other,default_permissions"
+export TEST_FS_MOUNT_OPTS="-osource=/home/test/test,allow_other,default_permissions"
diff --git a/check b/check
index 1ff0f44a..e25037f1 100755
--- a/check
+++ b/check
@@ -60,6 +60,7 @@ check options
-glusterfs test GlusterFS
-cifs test CIFS
-9p test 9p
+ -fuse test fuse
-virtiofs test virtiofs
-overlay test overlay
-pvfs2 test PVFS2
@@ -279,7 +280,7 @@ while [ $# -gt 0 ]; do
case "$1" in
-\? | -h | --help) usage ;;
- -nfs|-glusterfs|-cifs|-9p|-virtiofs|-pvfs2|-tmpfs|-ubifs)
+ -nfs|-glusterfs|-cifs|-9p|-fuse|-virtiofs|-pvfs2|-tmpfs|-ubifs)
FSTYP="${1:1}"
;;
-overlay)
diff --git a/common/config b/common/config
index e2aba5a9..6c8cb3a5 100644
--- a/common/config
+++ b/common/config
@@ -341,6 +341,9 @@ _common_mount_opts()
9p)
echo $PLAN9_MOUNT_OPTIONS
;;
+ fuse)
+ echo $FUSE_MOUNT_OPTIONS
+ ;;
xfs)
echo $XFS_MOUNT_OPTIONS
;;
@@ -511,6 +514,8 @@ _source_specific_fs()
;;
9p)
;;
+ fuse)
+ ;;
ceph)
. ./common/ceph
;;
@@ -583,8 +588,8 @@ _check_device()
fi
case "$FSTYP" in
- 9p|tmpfs|virtiofs)
- # 9p and virtiofs mount tags are just plain strings, so anything is allowed
+ 9p|fuse|tmpfs|virtiofs)
+ # 9p, fuse and virtiofs mount tags are just plain strings, so anything is allowed
# tmpfs doesn't use mount source, ignore
;;
ceph)
diff --git a/common/rc b/common/rc
index 23530413..c17e3f6e 100644
--- a/common/rc
+++ b/common/rc
@@ -274,7 +274,7 @@ _try_scratch_mount()
_overlay_scratch_mount $*
return $?
fi
- _mount -t $FSTYP `_scratch_mount_options $*`
+ _mount -t $FSTYP$FUSE_SUBTYP `_scratch_mount_options $*`
mount_ret=$?
[ $mount_ret -ne 0 ] && return $mount_ret
_idmapped_mount $SCRATCH_DEV $SCRATCH_MNT
@@ -458,7 +458,7 @@ _test_mount()
fi
_test_options mount
- _mount -t $FSTYP $TEST_OPTIONS $TEST_FS_MOUNT_OPTS $SELINUX_MOUNT_OPTIONS $* $TEST_DEV $TEST_DIR
+ _mount -t $FSTYP$FUSE_SUBTYP $TEST_OPTIONS $TEST_FS_MOUNT_OPTS $SELINUX_MOUNT_OPTIONS $* $TEST_DEV $TEST_DIR
mount_ret=$?
[ $mount_ret -ne 0 ] && return $mount_ret
_idmapped_mount $TEST_DEV $TEST_DIR
@@ -584,6 +584,9 @@ _test_mkfs()
9p)
# do nothing for 9p
;;
+ fuse)
+ # do nothing for fuse
+ ;;
virtiofs)
# do nothing for virtiofs
;;
@@ -624,6 +627,9 @@ _mkfs_dev()
9p)
# do nothing for 9p
;;
+ fuse)
+ # do nothing for fuse
+ ;;
virtiofs)
# do nothing for virtiofs
;;
@@ -691,7 +697,7 @@ _scratch_mkfs()
local mkfs_status
case $FSTYP in
- nfs*|cifs|ceph|overlay|glusterfs|pvfs2|9p|virtiofs)
+ nfs*|cifs|ceph|overlay|glusterfs|pvfs2|9p|fuse|virtiofs)
# unable to re-create this fstyp, just remove all files in
# $SCRATCH_MNT to avoid EEXIST caused by the leftover files
# created in previous runs
@@ -1587,7 +1593,7 @@ _require_scratch_nocheck()
_notrun "this test requires a valid \$SCRATCH_MNT"
fi
;;
- 9p|virtiofs)
+ 9p|fuse|virtiofs)
if [ -z "$SCRATCH_DEV" ]; then
_notrun "this test requires a valid \$SCRATCH_DEV"
fi
@@ -1787,7 +1793,7 @@ _require_test()
_notrun "this test requires a valid \$TEST_DIR"
fi
;;
- 9p|virtiofs)
+ 9p|fuse|virtiofs)
if [ -z "$TEST_DEV" ]; then
_notrun "this test requires a valid \$TEST_DEV"
fi
@@ -2986,7 +2992,7 @@ _mount_or_remount_rw()
if [ $USE_REMOUNT -eq 0 ]; then
if [ "$FSTYP" != "overlay" ]; then
- _mount -t $FSTYP $mount_opts $device $mountpoint
+ _mount -t $FSTYP$FUSE_SUBTYP $mount_opts $device $mountpoint
_idmapped_mount $device $mountpoint
else
_overlay_mount $device $mountpoint
@@ -3124,6 +3130,9 @@ _check_test_fs()
9p)
# no way to check consistency for 9p
;;
+ fuse)
+ # no way to check consistency for fuse
+ ;;
virtiofs)
# no way to check consistency for virtiofs
;;
@@ -3185,6 +3194,9 @@ _check_scratch_fs()
9p)
# no way to check consistency for 9p
;;
+ fuse)
+ # no way to check consistency for fuse
+ ;;
virtiofs)
# no way to check consistency for virtiofs
;;
diff --git a/tests/generic/020 b/tests/generic/020
index b91bca34..be5cecad 100755
--- a/tests/generic/020
+++ b/tests/generic/020
@@ -56,7 +56,7 @@ _attr_get_max()
{
# set maximum total attr space based on fs type
case "$FSTYP" in
- xfs|udf|pvfs2|9p|ceph|nfs)
+ xfs|udf|pvfs2|9p|ceph|fuse|nfs)
max_attrs=1000
;;
ext2|ext3|ext4)
@@ -134,7 +134,7 @@ _attr_get_maxval_size()
pvfs2)
max_attrval_size=8192
;;
- xfs|udf|9p)
+ xfs|udf|9p|fuse)
max_attrval_size=65536
;;
bcachefs)
--
2.38.1
next prev parent reply other threads:[~2023-01-04 19:40 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-01-08 19:25 [PATCH] xfstests: add fuse support Miklos Szeredi
2020-02-17 10:08 ` Eryu Guan
2023-01-04 19:39 ` Jakob Unterwurzacher [this message]
2023-01-19 19:18 ` Zorro Lang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230104193932.984531-1-jakobunt@gmail.com \
--to=jakobunt@gmail.com \
--cc=fstests@vger.kernel.org \
--cc=guaneryu@gmail.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=miklos@szeredi.hu \
--cc=mszeredi@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).